Ignore:
Timestamp:
2016-06-20T12:46:42+12:00 (8 years ago)
Author:
kjdon
Message:

use the new GSXSLT.findExtraMetadataNames in action and transformingReceptionist instead of these two places each implementing this functionality and doing it differently

File:
1 edited

Legend:

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

    r29556 r30589  
    9292    }
    9393
    94     protected void getRequiredMetadataNames(Element format, HashSet<String> meta_names)
    95     {
    96         extractMetadataNames(format, meta_names);
    97         addLinkMetadataNames(format, meta_names);
    98     }
    99 
    100     // should change to metadataList?? and use attributes for select rather than
    101     // prepending parent_ etc
    102     protected void extractMetadataNames(Element format, HashSet<String> meta_names)
    103     {
    104         NodeList metadata_nodes = format.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "metadata"); // gsf:metadata
    105         for (int i = 0; i < metadata_nodes.getLength(); i++)
    106         {
    107             Element elem = (Element) metadata_nodes.item(i);
    108             String full_name = elem.getAttribute("name");
    109             String select = elem.getAttribute("select");
    110            
    111             String []names = full_name.split(",");
    112             for(int j=0; j<names.length; j++) {
    113            
    114               String name = names[j];
    115               if (!select.equals(""))
    116                 {
    117                   name = select + GSConstants.META_RELATION_SEP + name;
    118                 }
    119               meta_names.add(name);
    120             }
    121         }
    122 
    123         NodeList foreach_metadata_nodes = format.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "foreach-metadata"); // gsf:foreach-metadata
    124         for (int i = 0; i < foreach_metadata_nodes.getLength(); i++)
    125         {
    126             Element elem = (Element) foreach_metadata_nodes.item(i);
    127             String name = elem.getAttribute("name");
    128             String select = elem.getAttribute("select");
    129 
    130             if (!select.equals(""))
    131             {
    132                 name = select + GSConstants.META_RELATION_SEP + name;
    133             }
    134             meta_names.add(name);
    135         }
    136     }
    137 
    138     protected void addLinkMetadataNames(Element format, HashSet<String> meta_names)
    139     {
    140         // The XSL tranform for
    141         //   gsf:link type="source"
    142         // makes use of 'assocfilepath' so need to make sure it's asked for
    143 
    144         boolean getEquivLinkMeta = false;
    145 
    146         NodeList link_nodes = format.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "link");
    147         for (int i = 0; i < link_nodes.getLength(); i++)
    148         {
    149             Element elem = (Element) link_nodes.item(i);
    150             String type = elem.getAttribute("type");
    151             if (type.equals("source"))
    152             {
    153                 meta_names.add("assocfilepath");
    154                 meta_names.add("srclinkFile");
    155             }
    156             else if (type.equals("web"))
    157             {
    158                 meta_names.add("weblink");
    159                 meta_names.add("webicon");
    160                 meta_names.add("/weblink");
    161             }
    162             else if (type.equals("equivdoc"))
    163             {
    164                 getEquivLinkMeta = true;
    165             }
    166         }
    167 
    168         // get all the metadata necessary for when the user has used "gsf:equivlink"
    169         // so that we can build up the equivlink from the metadata components it needs
    170         link_nodes = format.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "equivlinkgs3");
    171         if (getEquivLinkMeta || link_nodes.getLength() > 0)
    172         {
    173             String[] equivlink_metanames = { "equivDocIcon", "equivDocLink", "/equivDocLink" };
    174 
    175             for (int i = 0; i < equivlink_metanames.length; i++)
    176             {
    177                 StringBuffer metadata = new StringBuffer();
    178                 metadata.append("all"); // this means the attr multiple = true;
    179                 metadata.append(GSConstants.META_RELATION_SEP);
    180 
    181                 metadata.append(GSConstants.META_SEPARATOR_SEP);
    182                 metadata.append(','); // attr separator = ","
    183                 metadata.append(GSConstants.META_SEPARATOR_SEP);
    184                 metadata.append(GSConstants.META_RELATION_SEP);
    185 
    186                 // the name of the metadata we're retrieving
    187                 metadata.append(equivlink_metanames[i]);
    188                 meta_names.add(metadata.toString());
    189             }
    190         }
    191 
    192         if (format.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "image").getLength() > 0)
    193         {
    194             meta_names.add("Thumb");
    195             meta_names.add("Screen");
    196             meta_names.add("SourceFile");
    197         }
    198     }
     94  protected void getRequiredMetadataNames(Element format, HashSet<String> meta_names) {
     95    GSXSLT.findExtraMetadataNames(format, meta_names);
     96  }
     97
    19998
    20099    protected Element createMetadataParamList(Document doc, HashSet<String> metadata_names)
Note: See TracChangeset for help on using the changeset viewer.