Changeset 38846
- Timestamp:
- 2024-03-14T10:50:14+13:00 (2 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/CollectionGroups.java
r38474 r38846 30 30 private Element hierarchy = null; 31 31 private Element groupDesc = null; 32 private HashMap<String, Element> group_descriptions_map = null; // new one for display items33 32 private HashMap<String, Element> group_displayitems_map = null; // new one for display items 33 private HashMap<String, Element> group_extras_map = null; // all additional elements go in here, eg <title> 34 34 public static final String GROUP_CONTENT_SERVICE = "GroupCurrentContent"; 35 35 // not used?? … … 54 54 } 55 55 56 group_descriptions_map = new HashMap<String, Element>(); 56 group_displayitems_map = new HashMap<String, Element>(); 57 group_extras_map = new HashMap<String, Element>(); 57 58 logger.info("Configuring CollectionGroups..."); 58 59 this.config_info = info; … … 130 131 if (checkedCollection != null) { 131 132 //Set position value 132 checkedCollection.setAttribute(GSXML.POSITION_ATT, String.valueOf(i)); 133 // Add collection to response 134 result_collection_list.appendChild(doc.importNode(checkedCollection, true)); 133 // checkedCollection.setAttribute(GSXML.POSITION_ATT, String.valueOf(i)); 134 Element coll_copy = (Element)doc.importNode(checkedCollection, true); 135 coll_copy.setAttribute(GSXML.POSITION_ATT, String.valueOf(i)); 136 // Add collection to response 137 result_collection_list.appendChild(coll_copy); 135 138 } 136 139 … … 162 165 } else { 163 166 Element groupDescription = getPathInfo(groupPath, lang); 164 if (group Content!= null){167 if (groupDescription != null){ 165 168 result.appendChild(doc.importNode(groupDescription, true)); 166 169 } … … 314 317 315 318 316 Element currentContent = (Element) hierarchy.cloneNode(true);319 Element currentContent = (Element)doc.importNode( hierarchy, true);//.cloneNode(true); 317 320 // Get the current view 318 321 for (int i = 0; i < pathSteps.length; i++) { 319 322 if (!pathSteps[i].isEmpty()) { 320 323 currentContent = GSXML.getNamedElement(currentContent, GSXML.GROUP_ELEM, GSXML.NAME_ATT, pathSteps[i]); 321 324 if (currentContent == null){ 322 325 break; … … 336 339 } 337 340 NodeList nodes = currentContent.getElementsByTagName(GSXML.COLLECTION_ELEM); 338 for (int i = 0; i < nodes.getLength(); i++) { 339 Element element = (Element) nodes.item(i); 340 String name = element.getAttribute(GSXML.NAME_ATT); 341 Element checkedCollection = GSXML.getNamedElement(checkedCollectionList, GSXML.COLLECTION_ELEM, GSXML.NAME_ATT, name); 342 if (checkedCollection == null) { 343 element.getParentNode().removeChild(element); 344 i--; 345 } 341 342 int num_nodes = nodes.getLength(); 343 for (int i=num_nodes-1; i>=0; i--) { 344 Element element = (Element) nodes.item(i); 345 String name = element.getAttribute(GSXML.NAME_ATT); 346 Element checkedCollection = GSXML.getNamedElement(checkedCollectionList, GSXML.COLLECTION_ELEM, GSXML.NAME_ATT, name); 347 if (checkedCollection == null) { 348 currentContent.removeChild(element); 349 350 } 346 351 } 347 352 } … … 417 422 418 423 // Document doc = groupDesc.getOwnerDocument(); 424 Document new_doc = XMLConverter.newDOM(); // use for the hash map 419 425 NodeList groups = hierarchy.getElementsByTagName(GSXML.GROUP_ELEM); 420 426 for (int i = 0; i < groups.getLength(); i++) { … … 432 438 defaultDescription.appendChild(titleDisplayItem); 433 439 groupDesc.appendChild(defaultDescription); 434 } 435 Element this_di_list = doc.createElement("dummy"); 440 foundDescription = defaultDescription; 441 } 442 443 Element this_di_list = doc.createElement("dummy"+name); 436 444 DisplayItemUtil.storeDisplayItems(this_di_list, foundDescription); 437 group_descriptions_map.put(name, this_di_list); 438 } 439 440 } 441 445 group_displayitems_map.put(name, this_di_list); 446 // find all elements that are not dis 447 Element this_extras_list = doc.createElement("dummy"+name); 448 boolean found_items = storeNonDisplayItems(this_extras_list, foundDescription); 449 if (found_items) { 450 group_extras_map.put(name, this_extras_list); 451 } 452 } 453 454 } 455 456 private boolean storeNonDisplayItems(Element new_list, Element description) { 457 Document doc = new_list.getOwnerDocument(); 458 Node child = description.getFirstChild(); 459 boolean found_some = false; 460 while (child != null) { 461 if (child.getNodeType() == Node.ELEMENT_NODE && !child.getNodeName().equals(GSXML.DISPLAY_TEXT_ELEM)) { 462 new_list.appendChild(doc.importNode(child, true)); 463 found_some = true; 464 } 465 child = child.getNextSibling(); 466 } 467 return found_some; 468 469 } 442 470 private Element getGroupDescriptionOld(String name) { 443 471 Element description = (Element) GSXML.getNamedElement(groupDesc, GSXML.GROUP_ELEM, GSXML.NAME_ATT, name); … … 449 477 private Element getGroupDescription(Document doc, String name, String lang) { 450 478 // get all the display items for group 451 Element all_di = group_d escriptions_map.get(name);479 Element all_di = group_displayitems_map.get(name); 452 480 Element new_di_list = doc.createElement(GSXML.GROUP_ELEM); 453 481 new_di_list.setAttribute(GSXML.NAME_ATT, name); 454 DisplayItemUtil.addLanguageSpecificDisplayItems(new_di_list, all_di, lang, DEFAULT_LANG, this.class_loader); 455 456 // now merge in the old style metadata - to be backwards compatible 482 synchronized( all_di) { 483 DisplayItemUtil.addLanguageSpecificDisplayItems(new_di_list, all_di, lang, DEFAULT_LANG, this.class_loader); 484 485 } 486 487 Element extras = group_extras_map.get(name); 488 if (extras != null) { 489 GSXML.copyAllChildren(new_di_list, extras); 490 } 491 /** 492 // now merge in the old style metadata - to be backwards compatible 457 493 Element old_style_desc = (Element) GSXML.getNamedElement(groupDesc, GSXML.GROUP_ELEM, GSXML.NAME_ATT, name); 458 494 if (old_style_desc != null) { … … 475 511 } 476 512 } 513 */ 514 477 515 return new_di_list; 478 516
Note:
See TracChangeset
for help on using the changeset viewer.