Changeset 26048

Show
Ignore:
Timestamp:
31.07.2012 16:15:49 (7 years ago)
Author:
sjm84
Message:

Fixing the browse service to correctly get the required metadata

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/GS2BrowseAction.java

    r26026 r26048  
    125125            { 
    126126                Element global_format_elem = (Element) GSXML.getChildByTagName(format_response, GSXML.GLOBAL_FORMAT_ELEM); 
    127                 if(global_format_elem != null) 
     127                if (global_format_elem != null) 
    128128                { 
    129129                    GSXSLT.mergeFormatElements(this_format, global_format_elem, false); 
     
    132132                Element new_format = GSXML.duplicateWithNewName(this.doc, this_format, GSXML.FORMAT_ELEM, false); 
    133133                extractMetadataNames(new_format, doc_meta_names, class_meta_names); 
    134                  
     134 
    135135                Element extraMetaListElem = (Element) GSXML.getChildByTagName(request, GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER); 
    136                 if(extraMetaListElem != null) 
     136                if (extraMetaListElem != null) 
    137137                { 
    138138                    NodeList extraMetaList = extraMetaListElem.getElementsByTagName(GSXML.EXTRA_METADATA); 
    139                     for(int i = 0; i < extraMetaList.getLength(); i++) 
    140                     { 
    141                         class_meta_names.add(((Element)extraMetaList.item(i)).getAttribute(GSXML.NAME_ATT)); 
    142                     } 
    143                 } 
    144                  
     139                    for (int i = 0; i < extraMetaList.getLength(); i++) 
     140                    { 
     141                        class_meta_names.add(((Element) extraMetaList.item(i)).getAttribute(GSXML.NAME_ATT)); 
     142                    } 
     143                } 
     144 
    145145                // set the format type 
    146146                new_format.setAttribute(GSXML.TYPE_ATT, "browse"); 
     
    454454    protected void extractMetadataNames(Element new_format, HashSet<String> doc_meta_names, HashSet<String> class_meta_names) 
    455455    { 
    456         NodeList templates = new_format.getElementsByTagName("gsf:template"); 
     456        NodeList templates = new_format.getElementsByTagNameNS("http://www.greenstone.org/greenstone3/schema/ConfigFormat", "template"); 
    457457        for (int i = 0; i < templates.getLength(); i++) 
    458458        { 
    459459            Element template = (Element) templates.item(i); 
    460             String match = template.getAttribute("match"); 
    461             if (match.startsWith("documentNode")) 
     460            String match = template.getAttribute(GSXML.MATCH_ATT); 
     461            String name = template.getAttribute(GSXML.NAME_ATT); 
     462            if (match != null && match.length() > 0) 
     463            { 
     464                if (match.startsWith("documentNode")) 
     465                { 
     466                    getRequiredMetadataNames(template, doc_meta_names); 
     467                } 
     468                else if (match.startsWith("classifierNode")) // not match.equals, as we want to match nodes like: classifierNode[@classifierStyle = 'VList'] 
     469                { 
     470                    getRequiredMetadataNames(template, class_meta_names); 
     471                } 
     472            } 
     473            else 
    462474            { 
    463475                getRequiredMetadataNames(template, doc_meta_names); 
    464             } 
    465             else if (match.startsWith("classifierNode")) // not match.equals, as we want to match nodes like: classifierNode[@classifierStyle = 'VList'] 
    466             { 
    467476                getRequiredMetadataNames(template, class_meta_names); 
    468477            }