Changeset 26026


Ignore:
Timestamp:
2012-07-26T11:04:08+12:00 (12 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 edited

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