Changeset 27999

Show
Ignore:
Timestamp:
08.08.2013 12:07:24 (6 years ago)
Author:
sjm84
Message:

Fixes for metadata with base interfaces

Location:
main/trunk/greenstone3/src/java/org/greenstone/gsdl3
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/TransformingReceptionist.java

    r27991 r27999  
    189189    protected void getRequiredMetadataNamesFromXSLFiles() 
    190190    { 
    191         ArrayList<File> xslFiles = GSFile.getAllXSLFiles((String) this.config_params.get(GSConstants.INTERFACE_NAME), (String) this.config_params.get(GSConstants.SITE_NAME)); 
     191        ArrayList<File> xslFiles = GSFile.getAllXSLFiles((String) this.config_params.get((String) this.config_params.get(GSConstants.SITE_NAME))); 
    192192 
    193193        HashMap<String, ArrayList<String>> includes = new HashMap<String, ArrayList<String>>(); 
     
    364364        } 
    365365 
    366         String stylesheetFile = GSFile.interfaceStylesheetFile(GlobalProperties.getGSDL3Home(), (String) this.config_params.get(GSConstants.INTERFACE_NAME), name); 
    367         stylesheetFile = stylesheetFile.replace("/", File.separator); 
    368  
    369         ArrayList<String> requiredMetadata = _metadataRequiredMap.get(stylesheetFile); 
    370  
    371         if (requiredMetadata != null) 
    372         { 
    373             Element extraMetadataList = this.doc.createElement(GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER); 
    374  
    375             for (String metadataString : requiredMetadata) 
    376             { 
    377                 Element metadataElem = this.doc.createElement(GSXML.EXTRA_METADATA); 
    378                 metadataElem.setAttribute(GSXML.NAME_ATT, metadataString); 
    379                 extraMetadataList.appendChild(metadataElem); 
    380             } 
    381             request.appendChild(request.getOwnerDocument().importNode(extraMetadataList, true)); 
    382         } 
     366        Element cgi_param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 
     367        String collection = ""; 
     368 
     369        if (cgi_param_list != null) 
     370        { 
     371            // Don't waste time getting all the parameters 
     372            HashMap<String, Serializable> params = GSXML.extractParams(cgi_param_list, false); 
     373            collection = (String) params.get(GSParams.COLLECTION); 
     374            if (collection == null) 
     375            { 
     376                collection = ""; 
     377            } 
     378        } 
     379 
     380        ArrayList<File> stylesheets = GSFile.getStylesheetFiles(GlobalProperties.getGSDL3Home(), (String) this.config_params.get(GSConstants.SITE_NAME), collection, (String) this.config_params.get(GSConstants.INTERFACE_NAME), base_interfaces, name); 
     381 
     382        Element extraMetadataList = this.doc.createElement(GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER); 
     383        for (File stylesheet : stylesheets) 
     384        { 
     385            ArrayList<String> requiredMetadata = _metadataRequiredMap.get(stylesheet.getAbsolutePath()); 
     386 
     387            if (requiredMetadata != null) 
     388            { 
     389                for (String metadataString : requiredMetadata) 
     390                { 
     391                    Element metadataElem = this.doc.createElement(GSXML.EXTRA_METADATA); 
     392                    metadataElem.setAttribute(GSXML.NAME_ATT, metadataString); 
     393                    extraMetadataList.appendChild(metadataElem); 
     394                } 
     395            } 
     396        } 
     397        request.appendChild(request.getOwnerDocument().importNode(extraMetadataList, true)); 
    383398    } 
    384399 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/GSFile.java

    r27137 r27999  
    531531    } 
    532532 
    533     public static ArrayList<File> getAllXSLFiles(String interfaceName, String siteName) 
     533    public static ArrayList<File> getAllXSLFiles(String siteName) 
    534534    { 
    535535        ArrayList<File> filesToReturn = new ArrayList<File>(); 
     
    564564 
    565565        //Add XSL files from the interface transform directory 
    566         File interfaceTransformDir = new File(GSFile.interfaceHome(GlobalProperties.getGSDL3Home(), interfaceName) + File.separator + "transform"); 
    567         if (interfaceTransformDir.exists() && interfaceTransformDir.isDirectory()) 
    568         { 
    569             filesToReturn.addAll(getXSLFilesFromDirectoryRecursive(interfaceTransformDir)); 
     566        File interfaceDir = new File(GlobalProperties.getGSDL3Home() + File.separator + "interfaces"); 
     567        if (interfaceDir.exists() && interfaceDir.isDirectory()) 
     568        { 
     569            filesToReturn.addAll(getXSLFilesFromDirectoryRecursive(interfaceDir)); 
    570570        } 
    571571