Changeset 30589
- Timestamp:
- 2016-06-20T12:46:42+12:00 (7 years ago)
- Location:
- main/trunk/greenstone3/src/java/org/greenstone/gsdl3
- Files:
-
- 2 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) -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/TransformingReceptionist.java
r30558 r30589 219 219 } 220 220 221 NodeList metadataElems = currentDoc.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "metadata"); //gsf:metadata 222 NodeList foreachMetadataElems = currentDoc.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "foreach-metadata"); //gsf:foreach-metadata 223 NodeList imageElems = currentDoc.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "image"); //gsf:image 221 HashSet<String> extra_meta_names = new HashSet<String>(); 222 GSXSLT.findExtraMetadataNames(currentDoc.getDocumentElement(), extra_meta_names); 223 ArrayList<String> names = new ArrayList<String>(extra_meta_names); 224 225 metaNames.put(currentFile.getAbsolutePath(), names); 226 224 227 NodeList includeElems = currentDoc.getElementsByTagNameNS(GSXML.XSL_NAMESPACE, "include"); 225 228 NodeList importElems = currentDoc.getElementsByTagNameNS(GSXML.XSL_NAMESPACE, "import"); 226 229 227 ArrayList<String> names = new ArrayList<String>();228 for (int i = 0; i < metadataElems.getLength(); i++)229 {230 Element current = (Element) metadataElems.item(i);231 String name = current.getAttribute(GSXML.NAME_ATT);232 if (name != null && name.length() > 0 && !names.contains(name))233 {234 names.add(name);235 }236 }237 238 for (int i = 0; i < foreachMetadataElems.getLength(); i++)239 {240 Element current = (Element) foreachMetadataElems.item(i);241 String name = current.getAttribute(GSXML.NAME_ATT);242 if (name != null && name.length() > 0 && !names.contains(name))243 {244 names.add(name);245 }246 }247 248 for (int i = 0; i < imageElems.getLength(); i++)249 {250 Element current = (Element) imageElems.item(i);251 String type = current.getAttribute(GSXML.TYPE_ATT);252 if (type == null || type.length() == 0)253 {254 continue;255 }256 257 if (type.equals("source"))258 {259 String[] standardSourceMeta = new String[] { "SourceFile", "ImageHeight", "ImageWidth", "ImageType", "srcicon" };260 for (String meta : standardSourceMeta)261 {262 if (!names.contains(meta))263 {264 names.add(meta);265 }266 }267 }268 else if (type.equals("screen"))269 {270 String[] standardScreenMeta = new String[] { "Screen", "ScreenHeight", "ScreenWidth", "ScreenType", "screenicon" };271 for (String meta : standardScreenMeta)272 {273 if (!names.contains(meta))274 {275 names.add(meta);276 }277 }278 }279 else if (type.equals("thumb"))280 {281 String[] standardThumbMeta = new String[] { "Thumb", "ThumbHeight", "ThumbWidth", "ThumbType", "thumbicon" };282 for (String meta : standardThumbMeta)283 {284 if (!names.contains(meta))285 {286 names.add(meta);287 }288 }289 }290 }291 292 metaNames.put(currentFile.getAbsolutePath(), names);293 230 294 231 ArrayList<String> includeAndImportList = new ArrayList<String>(); … … 1168 1105 try 1169 1106 { 1170 Document inlineTemplateDoc = this.converter.getDOM("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"" + GSXML.XSL_NAMESPACE + "\" xmlns:java=\"" + GSXML.JAVA_NAMESPACE + "\" xmlns:util=\"" + GSXML.UTIL_NAMESPACE + "\" xmlns:gsf=\"" + GSXML.GSF_NAMESPACE +"\">" + inlineTemplate + "</xsl:stylesheet>", "UTF-8");1107 Document inlineTemplateDoc = this.converter.getDOM("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsl:stylesheet version=\"1.0\" "+GSXML.ALL_NAMESPACES_ATTS + "\">" + inlineTemplate + "</xsl:stylesheet>", "UTF-8"); 1171 1108 1172 1109 if (_debug)
Note:
See TracChangeset
for help on using the changeset viewer.