Changeset 37518
- Timestamp:
- 2023-03-16T19:52:07+13:00 (8 days ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/FavouriteBasket.java
r36064 r37518 59 59 // the services on offer 60 60 // these strings must match what is found in the properties file 61 protected static final String ADD_ITEM_SERVICE = "Add Item";62 protected static final String DISPLAY_ITEMS_SERVICE = " DisplayList";63 protected static final String ITEM_NUM_SERVICE = " ItemNum";64 protected static final String DELETE_ITEMS_SERVICE = "Delete Items";65 protected static final String SEND_MAIL_SERVICE = "Send Mail";61 protected static final String ADD_ITEM_SERVICE = "AddFavourite"; 62 protected static final String DISPLAY_ITEMS_SERVICE = "GetFavouritesList"; 63 protected static final String ITEM_NUM_SERVICE = "GetNumFavourites"; 64 protected static final String DELETE_ITEMS_SERVICE = "DeleteFavourites"; 65 protected static final String SEND_MAIL_SERVICE = "SendFavouritesMail"; 66 66 //protected static final String DELETE_ITEM_SERVICE = "DeleteItem"; 67 67 68 // for Add Item68 // for AddFavourite 69 69 protected static final String ITEM_PARAM = "item"; 70 // for Delete Items70 // for DeleteFavouritess 71 71 protected static final String ITEMS_PARAM = "items"; 72 72 // for SendMail … … 168 168 this.short_service_info.appendChild(mail_service); 169 169 170 171 // set up the metadata names - this is the list of metadata retrieved for each item in the favourite basket.172 meta_names = new HashSet<String>();173 meta_names.add("Title"); // the default174 meta_names.add("root_Title");175 meta_names.add("Date");176 meta_names.add("root_assocfilepath"); // these two needed for source linking177 meta_names.add("root_srclinkFile");178 179 // are there any custom ones in the config file?180 Element meta_list_elem = (Element) GSXML.getChildByTagName(info, GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);181 if (meta_list_elem !=null) {182 NodeList meta_list = meta_list_elem.getElementsByTagName(GSXML.METADATA_ELEM);183 for (int i = 0; i < meta_list.getLength(); i++) {184 185 Element s = (Element) meta_list.item(i);186 meta_names.add(s.getAttribute(GSXML.NAME_ATT));187 }188 189 }190 191 // if any params should be saved in the session, add them to save_params here192 // this.save_params.add(XXX_PARAM);193 170 return true; 194 171 … … 233 210 } 234 211 235 // if (service_id.equals(DELETE_ITEM_SERVICE))236 // {237 238 // Element delone_service = doc.createElement(GSXML.SERVICE_ELEM);239 // delone_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what??240 // delone_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEM_SERVICE);241 // return delone_service;242 // }243 244 212 if (service_id.equals(SEND_MAIL_SERVICE)) 245 213 { … … 254 222 } 255 223 256 protected Element processAdd Item(Element request)224 protected Element processAddFavourite(Element request) 257 225 { 258 226 … … 267 235 if (param_list == null) 268 236 { 269 logger.error("FavouriteBasket Error: Add Itemrequest had no paramList.");237 logger.error("FavouriteBasket Error: AddFavourite request had no paramList."); 270 238 return result; // Return the empty result 271 239 } … … 287 255 if (!items.containsKey(item)) 288 256 { 289 Item newItem = generateItem(collection, item);257 Item newItem = new Item(collection, item); 290 258 items.put(item, newItem); 291 259 result.appendChild(newItem.wrapIntoElement(result_doc)); … … 295 263 { 296 264 Hashtable<String, Item> items = new Hashtable<String, Item>(); 297 Item newItem = generateItem(collection, item);265 Item newItem = new Item(collection, item); 298 266 items.put(item, newItem); 299 267 docsMap.put(collection, items); … … 304 272 } 305 273 306 private Item generateItem(String collection, String id) 307 { 308 309 Item item = new Item(collection, id); 310 String to = GSPath.appendLink(collection, "DocumentMetadataRetrieve"); 311 ArrayList<String> tmp = new ArrayList<String>(); 312 tmp.add(id); 313 314 UserContext userContext = new UserContext(); 315 userContext.setLanguage("en"); 316 userContext.setUserID("dumy"); 317 Element response = getDocumentMetadata(to, userContext, tmp.iterator()); 318 Element doc_node = (Element) response.getElementsByTagName(GSXML.DOC_NODE_ELEM).item(0); 319 320 String node_id = doc_node.getAttribute(GSXML.NODE_ID_ATT); 321 Element metadata_list = (Element) doc_node.getElementsByTagName(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER).item(0); 322 323 NodeList meta_elems = metadata_list.getElementsByTagName(GSXML.METADATA_ELEM); 324 for (int i=0; i<meta_elems.getLength(); i++) { 325 Element m = (Element)meta_elems.item(i); 326 String name = m.getAttribute(GSXML.NAME_ATT); 327 item.metadata.put(name, GSXML.getNodeText(m).trim()); 328 } 329 // check for root_title == title 330 if (item.metadata.get("root_Title") != null && item.metadata.get("Title") != null && item.metadata.get("root_Title").equals(item.metadata.get("Title"))) { 331 item.metadata.remove("root_Title"); 332 333 } 334 return item; 335 336 } 337 338 protected Element processDeleteItems(Element request) 274 275 protected Element processDeleteFavouritess(Element request) 339 276 { 340 277 … … 395 332 396 333 397 protected Element process ItemNum(Element request)334 protected Element processGetNumFavourites(Element request) 398 335 { 399 336 Hashtable<String, Hashtable<String, Item>> docsMap = updateDocMap(request); … … 426 363 } 427 364 428 private Element getDocumentMetadata(String to, UserContext userContext, Iterator<String> ids) 429 { 430 431 // Build a request to obtain some document metadata 432 Document doc = XMLConverter.newDOM(); 433 Element dm_message = doc.createElement(GSXML.MESSAGE_ELEM); 434 Element dm_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext); 435 dm_message.appendChild(dm_request); 436 437 // Create a parameter list to specify the required metadata information 438 Element param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 439 440 Element param = null; 441 Iterator<String> i = meta_names.iterator(); 442 while (i.hasNext()) 443 { 444 String name = i.next(); 445 param = doc.createElement(GSXML.PARAM_ELEM); 446 param_list.appendChild(param); 447 param.setAttribute(GSXML.NAME_ATT, "metadata"); 448 param.setAttribute(GSXML.VALUE_ATT, name); 449 450 } 451 452 dm_request.appendChild(param_list); 453 454 // create the doc node list for the metadata request 455 Element dm_doc_list = doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 456 dm_request.appendChild(dm_doc_list); 457 458 while (ids.hasNext()) 459 { 460 // Add the documentNode to the list 461 Element dm_doc_node = doc.createElement(GSXML.DOC_NODE_ELEM); 462 dm_doc_list.appendChild(dm_doc_node); 463 dm_doc_node.setAttribute(GSXML.NODE_ID_ATT, ids.next()); 464 } 465 466 return (Element) this.router.process(dm_message); 467 468 } 469 470 protected Element processDisplayList(Element request) 365 366 protected Element processGetFavouritesList(Element request) 471 367 { 472 368 Hashtable<String, Hashtable<String, Item>> docsMap = updateDocMap(request); … … 501 397 502 398 503 public Element processSend Mail(Element request)399 public Element processSendFavouritesMail(Element request) 504 400 { 505 401 // Create a new (empty) result message … … 627 523 public String collection; 628 524 public String docid; 629 public HashMap<String,String> metadata;630 525 631 526 public Item(String coll, String id) … … 633 528 this.collection = coll; 634 529 this.docid = id; 635 this.metadata = new HashMap<String,String>();636 530 } 637 531 … … 651 545 public Element wrapIntoElement(Document doc) 652 546 { 653 Element itemElement = doc.createElement(" item");654 itemElement.setAttribute("n ame", docid);547 Element itemElement = doc.createElement("documentNode"); 548 itemElement.setAttribute("nodeID", docid); 655 549 itemElement.setAttribute("collection", collection); 656 550 657 Set<String> metas = metadata.keySet();658 Iterator<String> i = metas.iterator();659 while (i.hasNext()) {660 String meta_name = i.next();661 itemElement.setAttribute(meta_name, metadata.get(meta_name));662 }663 551 return itemElement; 664 552 }
Note:
See TracChangeset
for help on using the changeset viewer.