Changeset 32308 for main/trunk/greenstone3/src/java/org/greenstone/gsdl3
- Timestamp:
- 2018-07-30T11:19:34+12:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/BerryBasket.java
r32297 r32308 26 26 import java.util.HashSet; 27 27 import java.util.Iterator; 28 import java.util.Set; 28 29 29 30 import org.w3c.dom.Document; … … 74 75 protected String password = ""; 75 76 76 /** constructor */ 77 HashSet<String> meta_names = null; 78 79 /** constructor */ 77 80 public BerryBasket() 78 81 { … … 148 151 this.short_service_info.appendChild(mail_service); 149 152 153 154 // set up the metadata names - this is the list of metadata retrieved for each item in the berry basket. 155 meta_names = new HashSet<String>(); 156 meta_names.add("Title"); // the default 157 meta_names.add("root_Title"); 158 meta_names.add("Date"); 159 meta_names.add("root_assocfilepath"); // these two needed for source linking 160 meta_names.add("root_srclinkFile"); 161 162 // are there any custom ones in the config file? 163 Element meta_list_elem = (Element) GSXML.getChildByTagName(info, GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 164 if (meta_list_elem !=null) { 165 NodeList meta_list = meta_list_elem.getElementsByTagName(GSXML.METADATA_ELEM); 166 for (int i = 0; i < meta_list.getLength(); i++) { 167 168 Element s = (Element) meta_list.item(i); 169 meta_names.add(s.getAttribute(GSXML.NAME_ATT)); 170 } 171 172 } 150 173 return true; 151 174 … … 277 300 Element metadata_list = (Element) doc_node.getElementsByTagName(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER).item(0); 278 301 279 //assign title metadata if any 280 Element metadata = GSXML.getNamedElement(metadata_list, "metadata", "name", "Title"); 281 if (metadata != null) 282 { 283 item.title = GSXML.getNodeText(metadata).trim(); 284 } 285 //assign date metadata if any 286 metadata = GSXML.getNamedElement(metadata_list, "metadata", "name", "Date"); 287 if (metadata != null) 288 { 289 item.date = GSXML.getNodeText(metadata).trim(); 290 } 291 292 //assign root title metadata if any 293 metadata = GSXML.getNamedElement(metadata_list, "metadata", "name", "root_Title"); 294 if (metadata != null) 295 { 296 String rootTitle = GSXML.getNodeText(metadata).trim(); 297 if (!rootTitle.equals(item.title) && !rootTitle.equals("")) 298 { 299 item.rootTitle = rootTitle; 300 } 301 302 } 303 // assign assocfilepath if any 304 metadata = GSXML.getNamedElement(metadata_list, "metadata", "name", "root_assocfilepath"); 305 if (metadata != null) 306 { 307 item.assocfilepath = GSXML.getNodeText(metadata).trim(); 308 } 309 // assign srclinkFile if any 310 metadata = GSXML.getNamedElement(metadata_list, "metadata", "name", "root_srclinkFile"); 311 if (metadata != null) 312 { 313 item.srclinkFile = GSXML.getNodeText(metadata).trim(); 302 NodeList meta_elems = metadata_list.getElementsByTagName(GSXML.METADATA_ELEM); 303 for (int i=0; i<meta_elems.getLength(); i++) { 304 Element m = (Element)meta_elems.item(i); 305 String name = m.getAttribute(GSXML.NAME_ATT); 306 item.metadata.put(name, GSXML.getNodeText(m).trim()); 307 } 308 // check for root_title == title 309 if (item.metadata.get("root_Title").equals(item.metadata.get("Title"))) { 310 item.metadata.remove("root_Title"); 311 314 312 } 315 313 return item; 314 316 315 } 317 316 … … 373 372 } 374 373 375 protected Element processDeleteItem(Element request)376 {377 Hashtable<String, Hashtable<String, Item>> docsMap = updateDocMap(request);378 379 // Create a new (empty) result message380 Document result_doc = XMLConverter.newDOM();381 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM);382 383 // Get the parameters of the request384 Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);385 386 if (param_list == null)387 {388 logger.error("BerryBasket Error: DeleteItem request had no paramList.");389 return result; // Return the empty result390 }391 392 HashMap<String, Serializable> params = GSXML.extractParams(param_list, false);393 394 String param = (String) params.get("item");395 396 if (param == null)397 return result;398 399 String item = param;400 401 String collection = "";402 int pos = item.indexOf(":");403 404 if (pos != -1)405 {406 collection = item.substring(0, pos);407 item = item.substring(pos + 1);408 }409 410 if (docsMap.containsKey(collection))411 {412 Hashtable itemMap = docsMap.get(collection);413 if (itemMap.containsKey(item))414 {415 itemMap.remove(item);416 }417 if (itemMap.size() == 0)418 {419 docsMap.remove(collection);420 }421 }422 423 return result;424 }425 374 426 375 protected Element processItemNum(Element request) … … 465 414 466 415 // Create a parameter list to specify the required metadata information 467 HashSet<String> meta_names = new HashSet<String>();468 meta_names.add("Title"); // the default469 meta_names.add("root_Title");470 meta_names.add("Date");471 meta_names.add("root_assocfilepath");472 meta_names.add("root_srclinkFile");473 474 416 Element param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 475 417 … … 527 469 { 528 470 Item item = (Item) itemItr.next(); 529 Element itemElement = result_doc.createElement("item"); 530 531 collectionNode.appendChild(itemElement); 532 itemElement.setAttribute("name", item.docid); 533 itemElement.setAttribute("collection", item.collection); 534 itemElement.setAttribute("title", item.title); 535 itemElement.setAttribute("date", item.date); 536 itemElement.setAttribute("root_title", item.rootTitle); 537 itemElement.setAttribute("srclinkFile", item.srclinkFile); 538 itemElement.setAttribute("assocfilepath", item.assocfilepath); 471 collectionNode.appendChild(item.wrapIntoElement(result_doc)); 539 472 } 540 473 } 541 474 542 475 return result; 543 544 } 476 } 477 478 479 545 480 546 481 public Element processSendMail(Element request) … … 670 605 public String collection; 671 606 public String docid; 672 public String title = ""; 673 public String query = ""; 674 public String date = ""; 675 public String rootTitle = ""; 676 public String assocfilepath = ""; 677 public String srclinkFile = ""; 678 public Item(String coll, String id) 607 public HashMap<String,String> metadata; 608 609 public Item(String coll, String id) 679 610 { 680 611 this.collection = coll; 681 612 this.docid = id; 613 this.metadata = new HashMap<String,String>(); 682 614 } 683 615 … … 695 627 } 696 628 697 public String toString()698 {699 700 return collection + ":" + docid + ":" + "[" + ((!rootTitle.equals("")) ? (rootTitle + ":") : "") + title + "]";701 }702 703 629 public Element wrapIntoElement(Document doc) 704 630 { … … 706 632 itemElement.setAttribute("name", docid); 707 633 itemElement.setAttribute("collection", collection); 708 itemElement.setAttribute("title", title); 709 itemElement.setAttribute("date", date); 710 itemElement.setAttribute("root_title", rootTitle); 711 itemElement.setAttribute("assocfilepath", assocfilepath); 712 itemElement.setAttribute("srclinkFile", srclinkFile); 634 635 Set<String> metas = metadata.keySet(); 636 Iterator<String> i = metas.iterator(); 637 while (i.hasNext()) { 638 String meta_name = i.next(); 639 itemElement.setAttribute(meta_name, metadata.get(meta_name)); 640 } 713 641 return itemElement; 714 642 }
Note:
See TracChangeset
for help on using the changeset viewer.