Ignore:
Timestamp:
2013-08-08T12:07:24+12:00 (11 years ago)
Author:
sjm84
Message:

Fixes for metadata with base interfaces

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

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
Note: See TracChangeset for help on using the changeset viewer.