Ignore:
Timestamp:
2011-07-14T21:39:43+12:00 (13 years ago)
Author:
ak19
Message:

Commits for ticket 770 concerning the display of multiple values for a metadata (like dc.Title) when classified by that metadata. So when the user browses by dc.Title, they no longer merely see a doc listed once for each dc.Title assigned but under the same (first retrieved) dc.Title, but they should now see the doc listed once for each dc.Title assigned to it with a different dc.Title value each time.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractDocumentRetrieve.java

    r22085 r24254  
    241241        Element request_node = (Element) request_nodes.item(i);
    242242        String node_id = request_node.getAttribute(GSXML.NODE_ID_ATT);
     243
     244        // make a custom copy of metadata_names_list for each docID, since mdoffset value varies for each doc
     245        ArrayList customised_metadata_names_list = new ArrayList(metadata_names_list.size());
     246        int mdoffset = 0;
     247        if(request_node.hasAttribute(GSXML.NODE_MDOFFSET_ATT)) {
     248        String offset = request_node.getAttribute(GSXML.NODE_MDOFFSET_ATT);
     249        mdoffset = Integer.parseInt(offset);
     250       
     251        for(int x = 0; x < metadata_names_list.size(); x++) {
     252            String metaname = (String)metadata_names_list.get(x);
     253            if(metaname.indexOf("offset" + GSConstants.META_RELATION_SEP) != -1) {
     254            // append offset number to the metaname
     255            metaname = metaname.replace("offset"+GSConstants.META_RELATION_SEP, "offset"+mdoffset+GSConstants.META_RELATION_SEP);
     256            }
     257            customised_metadata_names_list.add(x, metaname);           
     258        }
     259        }
    243260       
    244261        boolean is_external_link = false;
     
    272289        if (!is_external_link){
    273290        try {
    274             Element metadata_list = getMetadataList(node_id, all_metadata, metadata_names_list);
     291            Element metadata_list = getMetadataList(node_id, all_metadata, customised_metadata_names_list);
    275292            request_node.appendChild(metadata_list);
    276293        } catch (GSException e) {       
Note: See TracChangeset for help on using the changeset viewer.