Changeset 4267
- Timestamp:
- 2003-05-12T15:53:26+12:00 (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl3/src/java/org/greenstone/gsdl3/collection/ServiceCluster.java
r4141 r4267 47 47 protected static final String CONFIG_ENCODING = "utf-8"; 48 48 49 protected static final String DEFAULT_LANG = "en"; // hack for now, should be read from the coll cfg file? or site cfg file for cluster 50 49 51 /** base directory for the site that this cluster belongs to*/ 50 52 protected String site_home = null; … … 71 73 /** list of services */ 72 74 protected Element service_list = null; 73 /** list of Metadata */75 /** list of Metadata - lang independent */ 74 76 protected Element metadata_list = null; 77 /** language specific stuff */ 78 protected Element lang_specific_metadata_list = null; 75 79 /** the element that will have any descriptions passed back in */ 76 80 protected Element description = null; … … 172 176 } 173 177 174 /** adds metadata from a metadataList into the metadata_list xml */ 178 /** adds metadata from a metadataList into the metadata_list xml 179 * language independent stuff goes inot the main list, lang dependent stuff 180 * goes into a separate element, like: 181 * <metadataList><metadata name="Title"><metadata name="Title" lang="en">xxx</metadata><metadata name="Title" lang="fr">yyy</metadata></metadata></metadataList> 182 * this is a bit wasteful on space but is the easiest to process (that I've thought of so far) 183 */ 175 184 protected boolean addMetadata(Element metadata_list) { 185 176 186 NodeList metanodes = metadata_list.getElementsByTagName(GSXML.METADATA_ELEM); 177 187 if (metanodes.getLength()>0) { 178 188 for(int k=0; k<metanodes.getLength(); k++) { 179 this.metadata_list.appendChild(this.doc.importNode(metanodes.item(k),true)); 189 Element m = (Element) metanodes.item(k); 190 String lang = m.getAttribute(GSXML.LANG_ATT); 191 if (lang==null||lang.equals("")) { 192 // just add it to the normal list 193 this.metadata_list.appendChild(this.doc.importNode(m,true)); 194 } else { 195 String name = m.getAttribute(GSXML.NAME_ATT); 196 // add it to the lang-dependent list 197 if (this.lang_specific_metadata_list == null) { 198 this.lang_specific_metadata_list = this.doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER); 199 } 200 Element this_meta = GSXML.getNamedElement(this.lang_specific_metadata_list, GSXML.METADATA_ELEM, GSXML.NAME_ATT, name); 201 if (this_meta==null) { 202 this_meta = this.doc.createElement(GSXML.METADATA_ELEM); 203 this_meta.setAttribute(GSXML.NAME_ATT, name); 204 this.lang_specific_metadata_list.appendChild(this_meta); 205 } 206 207 this_meta.appendChild(this.doc.importNode(m, true)); 208 209 } 180 210 } 181 211 } … … 329 359 response.setAttribute(GSXML.FROM_ATT, this.cluster_name); 330 360 String type = request.getAttribute(GSXML.TYPE_ATT); 361 String lang = request.getAttribute(GSXML.LANG_ATT); 331 362 response.setAttribute(GSXML.TYPE_ATT, type); 332 363 … … 339 370 if (param_list == null) { 340 371 description.appendChild(this.service_list); 341 description.appendChild( this.metadata_list);372 description.appendChild(oneLanguageMetadata( lang)); 342 373 return response; 343 374 } … … 354 385 description.appendChild(this.service_list); 355 386 } else if (info.equals(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER)) { 356 description.appendChild( this.metadata_list);387 description.appendChild(oneLanguageMetadata(lang)); 357 388 } 358 389 } … … 470 501 471 502 } 503 504 /** takes a metadata list and deletes any items that are not in the right lang, if there is a correct one present. 505 * its a bit of a hack */ 506 protected Element oneLanguageMetadata(String lang) { 507 508 Element meta_list = (Element)this.metadata_list.cloneNode(true); 509 // go through and add lang dependent ones unwanted elements 510 NodeList metas = this.lang_specific_metadata_list.getChildNodes(); 511 for (int i=0; i<metas.getLength(); i++) { 512 Element m = (Element) metas.item(i); 513 // find the child with the correct language 514 Element new_m = GSXML.getNamedElement(m, GSXML.METADATA_ELEM, GSXML.LANG_ATT, lang); 515 if (new_m==null) { 516 // use the default lang 517 new_m = GSXML.getNamedElement(m, GSXML.METADATA_ELEM, GSXML.LANG_ATT, DEFAULT_LANG); 518 } 519 if (new_m==null) { 520 // just get the first one 521 new_m = (Element)GSXML.getChildByTagName(m, GSXML.METADATA_ELEM); 522 } 523 meta_list.appendChild(this.doc.importNode(new_m, true)); 524 } 525 return meta_list; 526 527 } 472 528 } 473 529
Note:
See TracChangeset
for help on using the changeset viewer.