- Timestamp:
- 2016-06-20T12:46:42+12:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/Action.java
r29556 r30589 92 92 } 93 93 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 199 98 200 99 protected Element createMetadataParamList(Document doc, HashSet<String> metadata_names)
Note:
See TracChangeset
for help on using the changeset viewer.