Changeset 26026

Show
Ignore:
Timestamp:
26.07.2012 11:04:08 (7 years ago)
Author:
sjm84
Message:

Analyse xsl files in advance to find out what metadata we need

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

Legend:

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

    r25805 r26026  
    112112            if (!pos.equals("")) 
    113113            { 
    114                 metadata.append("pos"+pos); // first, last or indexing number 
     114                metadata.append("pos" + pos); // first, last or indexing number 
    115115                metadata.append(GSConstants.META_RELATION_SEP); 
    116116            } 
     
    174174            } 
    175175        } 
    176          
    177         NodeList image_nodes = format.getElementsByTagName("gsf:image"); 
    178         for(int i = 0; i < image_nodes.getLength(); i++) 
    179         { 
    180             if(format.getElementsByTagName("gsf:image").getLength() > 0) 
    181             { 
    182                 meta_names.add("Thumb"); 
    183                 meta_names.add("Screen"); 
    184                 meta_names.add("SourceFile"); 
    185             } 
     176 
     177        if (format.getElementsByTagName("gsf:image").getLength() > 0) 
     178        { 
     179            meta_names.add("Thumb"); 
     180            meta_names.add("Screen"); 
     181            meta_names.add("SourceFile"); 
    186182        } 
    187183    } 
     
    258254    { 
    259255        Element documentOptionList = this.doc.createElement("interfaceOptions"); 
    260         for(Object key : this.config_params.keySet()) 
     256        for (Object key : this.config_params.keySet()) 
    261257        { 
    262258            Element option = this.doc.createElement("option"); 
    263             option.setAttribute(GSXML.NAME_ATT, (String)key); 
     259            option.setAttribute(GSXML.NAME_ATT, (String) key); 
    264260            option.setAttribute(GSXML.VALUE_ATT, this.config_params.get(key).toString()); 
    265261            documentOptionList.appendChild(option); 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/BrowseAction.java

    r25986 r26026  
    143143                page_response.appendChild(new_format); 
    144144                getRequiredMetadataNames(new_format, metadata_names); 
     145            } 
     146        } 
     147         
     148        Element extraMetaListElem = (Element) GSXML.getChildByTagName(request, GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER); 
     149        if(extraMetaListElem != null) 
     150        { 
     151            NodeList extraMetaList = extraMetaListElem.getElementsByTagName(GSXML.EXTRA_METADATA); 
     152            for(int i = 0; i < extraMetaList.getLength(); i++) 
     153            { 
     154                metadata_names.add(((Element)extraMetaList.item(i)).getAttribute(GSXML.NAME_ATT)); 
    145155            } 
    146156        } 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/DocumentAction.java

    r25985 r26026  
    381381            getRequiredMetadataNames(format_elem, meta_names); 
    382382        } 
     383         
     384        Element extraMetaListElem = (Element) GSXML.getChildByTagName(request, GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER); 
     385        if(extraMetaListElem != null) 
     386        { 
     387            NodeList extraMetaList = extraMetaListElem.getElementsByTagName(GSXML.EXTRA_METADATA); 
     388            for(int i = 0; i < extraMetaList.getLength(); i++) 
     389            { 
     390                meta_names.add(((Element)extraMetaList.item(i)).getAttribute(GSXML.NAME_ATT)); 
     391            } 
     392        } 
    383393 
    384394        Element dm_param_list = createMetadataParamList(meta_names); 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/GS2BrowseAction.java

    r25992 r26026  
    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                 
     135                Element extraMetaListElem = (Element) GSXML.getChildByTagName(request, GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER); 
     136                if(extraMetaListElem != null) 
     137                { 
     138                    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                 
    134145                // set the format type 
    135146                new_format.setAttribute(GSXML.TYPE_ATT, "browse"); 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/QueryAction.java

    r25986 r26026  
    228228        // metadata that it wants, and QueryAction should look through the format stuff to see if there is any other? 
    229229 
     230        Element extraMetaListElem = (Element) GSXML.getChildByTagName(request, GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER); 
     231        if(extraMetaListElem != null) 
     232        { 
     233            NodeList extraMetaList = extraMetaListElem.getElementsByTagName(GSXML.EXTRA_METADATA); 
     234            for(int i = 0; i < extraMetaList.getLength(); i++) 
     235            { 
     236                metadata_names.add(((Element)extraMetaList.item(i)).getAttribute(GSXML.NAME_ATT)); 
     237            } 
     238        } 
     239 
    230240        Element dm_param_list = createMetadataParamList(metadata_names); 
    231241 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/GSFile.java

    r25727 r26026  
    3232import java.nio.channels.FileChannel; 
    3333import java.util.ArrayList; 
     34import java.util.Collection; 
    3435 
    3536import org.apache.log4j.*; 
     37import org.greenstone.util.GlobalProperties; 
    3638 
    3739/** 
     
    534536    } 
    535537 
     538    public static ArrayList<File> getAllXSLFiles(String interfaceName, String siteName) 
     539    { 
     540        ArrayList<File> filesToReturn = new ArrayList<File>(); 
     541         
     542        File siteCollectionDir = new File(GSFile.siteHome(GlobalProperties.getGSDL3Home(), siteName) + File.separator + "collect"); 
     543        if(siteCollectionDir.exists() && siteCollectionDir.isDirectory()) 
     544        { 
     545            File[] collections = siteCollectionDir.listFiles(); 
     546             
     547            for(File collection : collections) 
     548            { 
     549                if(collection.isDirectory()) 
     550                { 
     551                    File collectionTranformDir = new File(collection.getAbsolutePath() + File.separator + "transform"); 
     552                    if(collectionTranformDir.exists() && collectionTranformDir.isDirectory()) 
     553                    { 
     554                        filesToReturn.addAll(getXSLFilesFromDirectoryRecursive(collectionTranformDir)); 
     555                    } 
     556                } 
     557            } 
     558        } 
     559         
     560        filesToReturn.addAll(getXSLFilesFromDirectoryRecursive(new File(GSFile.interfaceHome(GlobalProperties.getGSDL3Home(), interfaceName) + File.separator + "transform"))); 
     561         
     562        return filesToReturn; 
     563    } 
     564 
     565    protected static ArrayList<File> getXSLFilesFromDirectoryRecursive(File directory) 
     566    { 
     567        ArrayList<File> filesToReturn = new ArrayList<File>(); 
     568         
     569        if(!directory.isDirectory()) 
     570        { 
     571            return filesToReturn; 
     572        } 
     573         
     574        File[] currentFiles = directory.listFiles(); 
     575        for(File current : currentFiles) 
     576        { 
     577            if(current.isDirectory()) 
     578            { 
     579                filesToReturn.addAll(GSFile.getXSLFilesFromDirectoryRecursive(current)); 
     580            } 
     581            else if(current.getName().endsWith(".xsl")) 
     582            { 
     583                filesToReturn.add(current); 
     584            } 
     585        } 
     586         
     587        return filesToReturn; 
     588    } 
    536589} 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/GSXML.java

    r25983 r26026  
    7979    public static final String SYSTEM_ELEM = "system"; 
    8080    public static final String FORMAT_STRING_ELEM = "formatString"; 
     81    public static final String EXTRA_METADATA = "extraMetadata"; 
    8182 
    8283    //config file elems 
     
    134135    public static final String FROM_ATT = "from"; 
    135136    public static final String LANG_ATT = "lang"; 
     137    public static final String HREF_ATT = "href"; 
    136138    public static final String TYPE_ATT = "type"; 
    137139    public static final String DB_TYPE_ATT = "dbType";