Changeset 28966 for main/trunk/greenstone3
- Timestamp:
- 2014-04-10T14:39:33+12:00 (10 years ago)
- Location:
- main/trunk/greenstone3/src/java/org/greenstone/gsdl3
- Files:
-
- 57 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/LibraryServlet.java
r28295 r28966 187 187 } 188 188 this.converter = new XMLConverter(); 189 this.doc = this.converter.newDOM();189 this.doc = XMLConverter.newDOM(); 190 190 191 191 // the receptionist -the servlet will talk to this -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/OAIServer.java
r28884 r28966 184 184 Communicator communicator = null; 185 185 // we need to create the XML to configure the communicator 186 Document site_doc = this.converter.newDOM();186 Document site_doc = XMLConverter.newDOM(); 187 187 Element site_elem = site_doc.createElement(GSXML.SITE_ELEM); 188 188 site_elem.setAttribute(GSXML.TYPE_ATT, remote_site_type); … … 359 359 360 360 String verb = getVerb(query); 361 Document response_doc = this.converter.newDOM();361 Document response_doc = XMLConverter.newDOM(); 362 362 Element xml_response = OAIXML.createBasicResponse(response_doc, verb, pairs); 363 363 Element verb_elem = null; … … 389 389 // The query is valid, we can now 390 390 // compose the request message to the receptionist 391 Document request_doc = this.converter.newDOM();391 Document request_doc = XMLConverter.newDOM(); 392 392 Element xml_message = request_doc.createElement(GSXML.MESSAGE_ELEM); 393 393 Element xml_request = request_doc.createElement(GSXML.REQUEST_ELEM); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/SOAPServerlocalsite.java
r25727 r28966 78 78 Element new_req = GSXML.duplicateWithNewName(req.getOwnerDocument(), req, tag_name, true); 79 79 Node n = mr.process(new_req); 80 Element r = XMLConverter.nodeToElement(n);80 Element r = GSXML.nodeToElement(n); 81 81 // add the namespace back on 82 82 //Element new_res = r; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/collection/Collection.java
r28878 r28966 39 39 import org.greenstone.gsdl3.util.SimpleMacroResolver; 40 40 import org.greenstone.gsdl3.util.UserContext; 41 import org.greenstone.gsdl3.util.XMLConverter; 41 42 import org.greenstone.gsdl3.util.XMLTransformer; 42 43 import org.w3c.dom.Document; … … 95 96 { 96 97 super(); 97 this.description = this.d oc.createElement(GSXML.COLLECTION_ELEM);98 this.description = this.desc_doc.createElement(GSXML.COLLECTION_ELEM); 98 99 } 99 100 … … 463 464 } 464 465 465 if (subset.equals(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER) || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER) || subset.equals( "libraryParamList"))466 if (subset.equals(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER) || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER) || subset.equals(GSXML.LIBRARY_PARAM_ELEM+GSXML.LIST_MODIFIER)) 466 467 { 467 468 configureLocalData(coll_config_elem); … … 482 483 * @return the result Element - should be <response> 483 484 */ 484 protected Element processMessage(Element request)485 protected Element processMessage(Document result_doc, Element request) 485 486 { 486 487 String type = request.getAttribute(GSXML.TYPE_ATT); 487 488 if (type.equals(GSXML.REQUEST_TYPE_FORMAT_STRING)) 488 489 { 489 return processFormatStringRequest(request);490 return processFormatStringRequest(result_doc, request); 490 491 } 491 492 else if (type.equals(GSXML.REQUEST_TYPE_SECURITY)) 492 493 { 493 return processSecurityRequest(request);494 return processSecurityRequest(result_doc, request); 494 495 } 495 496 else if (type.equals(GSXML.REQUEST_TYPE_FORMAT)) 496 497 { 497 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM); 498 499 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 498 500 response.setAttribute(GSXML.FROM_ATT, this.cluster_name); 499 501 response.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_FORMAT); 500 502 if (_globalFormat != null) 501 503 { 502 response.appendChild( this.doc.importNode(_globalFormat, true));504 response.appendChild(result_doc.importNode(_globalFormat, true)); 503 505 } 504 506 return response; 505 507 } 506 508 // unknown type 507 return super.processMessage(re quest);508 509 } 510 511 protected Element processSecurityRequest(Element request)512 { 513 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);509 return super.processMessage(result_doc, request); 510 511 } 512 513 protected Element processSecurityRequest(Document result_doc, Element request) 514 { 515 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 514 516 response.setAttribute(GSXML.FROM_ATT, this.cluster_name); 515 517 response.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_SECURITY); … … 523 525 ArrayList<String> groups = getPermittedGroups(oid); 524 526 525 Element groupList = this.doc.createElement(GSXML.GROUP_ELEM + GSXML.LIST_MODIFIER);527 Element groupList = result_doc.createElement(GSXML.GROUP_ELEM + GSXML.LIST_MODIFIER); 526 528 response.appendChild(groupList); 527 529 528 530 for (String groupName : groups) 529 531 { 530 Element group = this.doc.createElement(GSXML.GROUP_ELEM);532 Element group = result_doc.createElement(GSXML.GROUP_ELEM); 531 533 groupList.appendChild(group); 532 534 group.setAttribute(GSXML.NAME_ATT, groupName); … … 652 654 protected String getFieldValue(String oid, String fieldName) 653 655 { 654 Element metadataMessage = this.doc.createElement(GSXML.MESSAGE_ELEM); 655 Element metadataRequest = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_PROCESS, this.cluster_name + "/DocumentMetadataRetrieve", new UserContext()); 656 Document msg_doc = XMLConverter.newDOM(); 657 Element metadataMessage = msg_doc.createElement(GSXML.MESSAGE_ELEM); 658 Element metadataRequest = GSXML.createBasicRequest(msg_doc, GSXML.REQUEST_TYPE_PROCESS, this.cluster_name + "/DocumentMetadataRetrieve", new UserContext()); 656 659 metadataMessage.appendChild(metadataRequest); 657 660 658 Element paramList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);661 Element paramList = msg_doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 659 662 metadataRequest.appendChild(paramList); 660 663 661 Element param = this.doc.createElement(GSXML.PARAM_ELEM);664 Element param = msg_doc.createElement(GSXML.PARAM_ELEM); 662 665 paramList.appendChild(param); 663 666 … … 665 668 param.setAttribute(GSXML.VALUE_ATT, fieldName); 666 669 667 Element docList = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);670 Element docList = msg_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 668 671 metadataRequest.appendChild(docList); 669 672 670 Element doc = this.doc.createElement(GSXML.DOC_NODE_ELEM);673 Element doc = msg_doc.createElement(GSXML.DOC_NODE_ELEM); 671 674 docList.appendChild(doc); 672 675 … … 685 688 } 686 689 687 protected Element processFormatStringRequest(Element request)688 { 689 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);690 protected Element processFormatStringRequest(Document result_doc, Element request) 691 { 692 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 690 693 response.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_FORMAT_STRING); 691 694 response.setAttribute(GSXML.FROM_ATT, this.cluster_name); … … 834 837 int index; 835 838 Element elem; 836 // Try importing entire tree to this.doc so we can add and remove children at ease837 //Node current_node = this.doc.importNode(GSXML.getChildByTagName(config, "CollectionConfig"),true);838 839 Node current_node = GSXML.getChildByTagName(config, "CollectionConfig"); 839 840 NodeList current_node_list; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/collection/ServiceCluster.java
r27940 r28966 83 83 protected SimpleMacroResolver macro_resolver = null; 84 84 85 /** container doc for description elements */ 86 protected Document doc = null; 85 /** container doc for description elements 86 only use this document for creating the below stored lists. */ 87 protected Document desc_doc = null; 87 88 /** list of services */ 88 89 protected Element service_list = null; … … 139 140 this.converter = new XMLConverter(); 140 141 this.macro_resolver = new SimpleMacroResolver(); 141 this.d oc = this.converter.newDOM();142 this.description = this.d oc.createElement(GSXML.CLUSTER_ELEM);143 this.display_item_list = this.d oc.createElement(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER);144 this.metadata_list = this.d oc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);145 this.library_param_list = this.d oc.createElement("libraryParamList");146 this.service_list = this.d oc.createElement(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER);147 //this.plugin_item_list = this.d oc.createElement(GSXML.PLUGIN_ELEM + GSXML.LIST_MODIFIER);142 this.desc_doc = XMLConverter.newDOM(); 143 this.description = this.desc_doc.createElement(GSXML.CLUSTER_ELEM); 144 this.display_item_list = this.desc_doc.createElement(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER); 145 this.metadata_list = this.desc_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 146 this.library_param_list = this.desc_doc.createElement(GSXML.LIBRARY_PARAM_ELEM+GSXML.LIST_MODIFIER); 147 this.service_list = this.desc_doc.createElement(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER); 148 //this.plugin_item_list = this.desc_doc.createElement(GSXML.PLUGIN_ELEM + GSXML.LIST_MODIFIER); 148 149 } 149 150 … … 266 267 267 268 // get the servlet params 268 Element param_list = (Element) GSXML.getChildByTagName(service_cluster_info, "libraryParamList");269 Element param_list = (Element) GSXML.getChildByTagName(service_cluster_info, GSXML.LIBRARY_PARAM_ELEM+GSXML.LIST_MODIFIER); 269 270 if (param_list != null) { 270 271 if (!addLibraryParams(param_list)) { … … 286 287 for (int k = 0; k < metanodes.getLength(); k++) 287 288 { 288 this.metadata_list.appendChild(this.d oc.importNode(metanodes.item(k), true));289 this.metadata_list.appendChild(this.desc_doc.importNode(metanodes.item(k), true)); 289 290 } 290 291 } … … 294 295 /** adds an individual metadata element into the list */ 295 296 protected boolean addMetadata(String name, String value) { 296 return GSXML.addMetadata(this. doc, this.metadata_list, name, value);297 return GSXML.addMetadata(this.metadata_list, name, value); 297 298 } 298 299 … … 324 325 if (this_item == null) 325 326 { 326 this_item = this.d oc.createElement(GSXML.DISPLAY_TEXT_ELEM);327 this_item = this.desc_doc.createElement(GSXML.DISPLAY_TEXT_ELEM); 327 328 this_item.setAttribute(GSXML.NAME_ATT, name); 328 329 this.display_item_list.appendChild(this_item); 329 330 } 330 331 331 this_item.appendChild(this.d oc.importNode(d, true));332 this_item.appendChild(this.desc_doc.importNode(d, true)); 332 333 } 333 334 } … … 385 386 for (int k = 0; k < paramnodes.getLength(); k++) 386 387 { 387 this.library_param_list.appendChild(this.d oc.importNode(paramnodes.item(k), true));388 this.library_param_list.appendChild(this.desc_doc.importNode(paramnodes.item(k), true)); 388 389 } 389 390 } … … 396 397 service_map.clear(); 397 398 service_name_map.clear(); 398 this.service_list = this.d oc.createElement(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER);399 this.service_list = this.desc_doc.createElement(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER); 399 400 } 400 401 401 402 protected void clearLocalData() { 402 this.description = this.d oc.createElement(GSXML.CLUSTER_ELEM);403 this.display_item_list = this.d oc.createElement(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER);404 this.metadata_list = this.d oc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);405 this.library_param_list = this.d oc.createElement("libraryParamList");403 this.description = this.desc_doc.createElement(GSXML.CLUSTER_ELEM); 404 this.display_item_list = this.desc_doc.createElement(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER); 405 this.metadata_list = this.desc_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 406 this.library_param_list = this.desc_doc.createElement(GSXML.LIBRARY_PARAM_ELEM+GSXML.LIST_MODIFIER); 406 407 407 408 } … … 422 423 } 423 424 425 // the xml request to send to the serviceRacks to query what 426 // services they provide 427 // can send same message to each service rack 428 Document doc = XMLConverter.newDOM(); 429 Element message = doc.createElement(GSXML.MESSAGE_ELEM); 430 Element request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_DESCRIBE, "", new UserContext()); 431 message.appendChild(request); 424 432 for (int i = 0; i < nodes.getLength(); i++) 425 433 { 426 434 427 // the xml request to send to the serviceRack to query what428 // services it provides429 Element message = this.doc.createElement(GSXML.MESSAGE_ELEM);430 Element request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_DESCRIBE, "", new UserContext());431 message.appendChild(request);432 435 433 436 Element n = (Element) nodes.item(i); … … 499 502 this.service_map.put(service, s); 500 503 // also add info to the ServiceInfo XML element 501 this.service_list.appendChild(this.d oc.importNode(typenodes.item(j), true));504 this.service_list.appendChild(this.desc_doc.importNode(typenodes.item(j), true)); 502 505 } 503 506 } … … 532 535 public Node process(Node message_node) 533 536 { 534 Element message = this.converter.nodeToElement(message_node);537 Element message = GSXML.nodeToElement(message_node); 535 538 536 539 NodeList requests = message.getElementsByTagName(GSXML.REQUEST_ELEM); 537 540 Document mess_doc = message.getOwnerDocument(); 538 Element mainResult = this.doc.createElement(GSXML.MESSAGE_ELEM); 541 Document result_doc = XMLConverter.newDOM(); 542 Element mainResult = result_doc.createElement(GSXML.MESSAGE_ELEM); 539 543 if (requests.getLength() == 0) 540 544 { … … 560 564 if (to.equals("")) 561 565 { // this command is for me 562 Element response = processMessage(request);566 Element response = processMessage(result_doc, request); 563 567 mainResult.appendChild(response); 564 568 … … 606 610 from = GSPath.prependLink(from, this.cluster_name); 607 611 response.setAttribute(GSXML.FROM_ATT, from); 608 mainResult.appendChild( this.doc.importNode(response, true));612 mainResult.appendChild(result_doc.importNode(response, true)); 609 613 } 610 614 … … 622 626 * @return the result Element - should be <response> 623 627 */ 624 protected Element processMessage(Element request) 625 { 626 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM); 628 protected Element processMessage(Document result_doc, Element request) 629 { 630 631 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 627 632 response.setAttribute(GSXML.FROM_ATT, this.cluster_name); 628 633 String type = request.getAttribute(GSXML.TYPE_ATT); … … 633 638 { 634 639 // create the collection element 635 Element description = (Element) this.description.cloneNode(false);640 Element description = (Element) result_doc.importNode(this.description, false); 636 641 // set collection type : mg, mgpp, lucene or solr 637 642 //description.setAttribute(GSXML.TYPE_ATT, col_type); … … 644 649 { 645 650 addAllDisplayInfo(description, lang); 646 description.appendChild( this.service_list);647 description.appendChild( this.metadata_list);648 description.appendChild( this.library_param_list);651 description.appendChild(result_doc.importNode(this.service_list, true)); 652 description.appendChild(result_doc.importNode(this.metadata_list, true)); 653 description.appendChild(result_doc.importNode(this.library_param_list, true)); 649 654 //description.appendChild(this.plugin_item_list); 650 655 return response; … … 663 668 if (info.equals(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER)) 664 669 { 665 description.appendChild(this.service_list);670 description.appendChild(result_doc.importNode(this.service_list, true)); 666 671 } 667 672 else if (info.equals(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER)) 668 673 { 669 description.appendChild(this.metadata_list);674 description.appendChild(result_doc.importNode(this.metadata_list, true)); 670 675 } 671 676 else if (info.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER)) … … 673 678 addAllDisplayInfo(description, lang); 674 679 } 675 else if (info.equals( "libraryParamlist"))680 else if (info.equals(GSXML.LIBRARY_PARAM_ELEM+GSXML.LIST_MODIFIER)) 676 681 { 677 description.appendChild( this.library_param_list);682 description.appendChild(result_doc.importNode(this.library_param_list, true)); 678 683 } 679 684 } … … 778 783 protected Element processSystemRequest(Element request) 779 784 { 780 781 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);785 Document result_doc = XMLConverter.newDOM(); 786 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 782 787 response.setAttribute(GSXML.FROM_ATT, this.cluster_name); 783 788 response.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_SYSTEM); … … 801 806 if (this.configure()) 802 807 { 803 Element s = GSXML.createTextElement( this.doc, GSXML.STATUS_ELEM, this.cluster_name + " reconfigured");808 Element s = GSXML.createTextElement(result_doc, GSXML.STATUS_ELEM, this.cluster_name + " reconfigured"); 804 809 response.appendChild(s); 805 810 … … 807 812 else 808 813 { 809 Element s = GSXML.createTextElement( this.doc, GSXML.STATUS_ELEM, this.cluster_name + " could not be reconfigured");814 Element s = GSXML.createTextElement(result_doc, GSXML.STATUS_ELEM, this.cluster_name + " could not be reconfigured"); 810 815 response.appendChild(s); 811 816 } … … 813 818 else if (this.configureSubset(subset)) 814 819 { 815 Element s = GSXML.createTextElement( this.doc, GSXML.STATUS_ELEM, this.cluster_name + " " + subset + " reconfigured");820 Element s = GSXML.createTextElement(result_doc, GSXML.STATUS_ELEM, this.cluster_name + " " + subset + " reconfigured"); 816 821 response.appendChild(s); 817 822 } 818 823 else 819 824 { 820 Element s = GSXML.createTextElement( this.doc, GSXML.STATUS_ELEM, this.cluster_name + " " + subset + " could not be reconfigured");825 Element s = GSXML.createTextElement(result_doc, GSXML.STATUS_ELEM, this.cluster_name + " " + subset + " could not be reconfigured"); 821 826 response.appendChild(s); 822 827 } … … 828 833 if (action.equals(GSXML.SYSTEM_TYPE_ACTIVATE)) 829 834 { 830 Element s = GSXML.createTextElement( this.doc, GSXML.STATUS_ELEM, "activate action not yet implemented - does it even make sense in this context??");835 Element s = GSXML.createTextElement(result_doc, GSXML.STATUS_ELEM, "activate action not yet implemented - does it even make sense in this context??"); 831 836 response.appendChild(s); 832 837 } … … 846 851 message = "Can't deactivate " + module_type + " type modules!"; 847 852 } 848 Element s = GSXML.createTextElement( this.doc, GSXML.STATUS_ELEM, message);853 Element s = GSXML.createTextElement(result_doc, GSXML.STATUS_ELEM, message); 849 854 response.appendChild(s); 850 855 } … … 897 902 else if (subset.equals(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER)) 898 903 { 899 this.metadata_list = this.d oc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);904 this.metadata_list = this.desc_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 900 905 Element metadata_list = (Element) GSXML.getChildByTagName(cluster_config_elem, GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 901 906 return addMetadata(metadata_list); … … 923 928 protected boolean addAllDisplayInfo(Element description, String lang) 924 929 { 925 930 Document doc = description.getOwnerDocument(); 926 931 NodeList items = this.display_item_list.getChildNodes(); 927 932 for (int i = 0; i < items.getLength(); i++) … … 940 945 new_m = (Element) GSXML.getChildByTagName(m, GSXML.DISPLAY_TEXT_ELEM); 941 946 } 942 description.appendChild( new_m.cloneNode(true));947 description.appendChild(doc.importNode(new_m, true)); 943 948 } 944 949 return true; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/collection/XMLCollection.java
r26446 r28966 30 30 Element build_config_xml){ 31 31 32 // metadata32 // add metadata to stored metadata list from collConfig and buildConfig 33 33 Element meta_list = (Element)GSXML.getChildByTagName(coll_config_xml, GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER); 34 34 addMetadata(meta_list); … … 36 36 addMetadata(meta_list); 37 37 38 meta_list = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 39 GSXML.addMetadata(this.doc, meta_list, "httpPath", this.site_http_address+"/collect/"+this.cluster_name); 40 addMetadata(meta_list); 38 addMetadata("httpPath", this.site_http_address+"/collect/"+this.cluster_name); 41 39 42 40 // display stuff … … 47 45 } 48 46 49 //plugin stuff50 // Element import_list = (Element)GSXML.getChildByTagName(coll_config_xml, GSXML.IMPORT_ELEM);51 // if (import_list != null)52 // {53 // Element plugin_list = (Element)GSXML.getChildByTagName(import_list, GSXML.PLUGIN_ELEM+GSXML.LIST_MODIFIER);54 // addPlugins(plugin_list);55 // }56 57 47 // are we a private collection?? 58 48 if (this.metadata_list != null) { … … 69 59 Element config_doc_list = (Element)GSXML.getChildByTagName(coll_config_xml, GSXML.DOCUMENT_ELEM+GSXML.LIST_MODIFIER); 70 60 if (config_doc_list != null) { 71 document_list = (Element) this.doc.importNode(config_doc_list, true);61 document_list = (Element)desc_doc.importNode(config_doc_list, true); 72 62 } else { 73 document_list = this.doc.createElement(GSXML.DOCUMENT_ELEM+GSXML.LIST_MODIFIER);63 document_list = desc_doc.createElement(GSXML.DOCUMENT_ELEM+GSXML.LIST_MODIFIER); 74 64 } 75 65 return true; … … 82 72 * @return the result Element - should be <response> 83 73 */ 84 protected Element processMessage(Element request) {74 protected Element processMessage(Document response_doc, Element request) { 85 75 86 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);76 Element response = response_doc.createElement(GSXML.RESPONSE_ELEM); 87 77 response.setAttribute(GSXML.FROM_ATT, this.cluster_name); 88 78 String type = request.getAttribute(GSXML.TYPE_ATT); … … 92 82 if (type.equals(GSXML.REQUEST_TYPE_DESCRIBE)) { 93 83 // create the collection element 94 Element description = (Element)this.description.cloneNode(false);84 Element description = (Element)response_doc.importNode(this.description, false); 95 85 response.appendChild(description); 96 86 // check the param list … … 98 88 if (param_list == null) { 99 89 addAllDisplayInfo(description, lang); 100 description.appendChild( this.service_list);101 description.appendChild( this.metadata_list);102 description.appendChild( this.library_param_list);103 description.appendChild( this.document_list);90 description.appendChild(response_doc.importNode(this.service_list, true)); 91 description.appendChild(response_doc.importNode(this.metadata_list, true)); 92 description.appendChild(response_doc.importNode(this.library_param_list, true)); 93 description.appendChild(response_doc.importNode(this.document_list, true)); 104 94 return response; 105 95 } … … 114 104 String info = param.getAttribute(GSXML.VALUE_ATT); 115 105 if (info.equals(GSXML.SERVICE_ELEM+GSXML.LIST_MODIFIER)) { 116 description.appendChild( this.service_list);106 description.appendChild(response_doc.importNode(this.service_list, true)); 117 107 } else if (info.equals(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER)) { 118 description.appendChild( metadata_list);108 description.appendChild(response_doc.importNode(metadata_list, true)); 119 109 } else if (info.equals(GSXML.DISPLAY_TEXT_ELEM+GSXML.LIST_MODIFIER)) { 120 110 addAllDisplayInfo(description, lang); 121 111 122 112 } else if (info.equals(GSXML.DOCUMENT_ELEM+GSXML.LIST_MODIFIER)) { 123 description.appendChild(this.document_list); 124 // } else if (info.equals(GSXML.PLUGIN_ELEM+GSXML.LIST_MODIFIER)) { 125 // description.appendChild(this.plugin_item_list); 126 // } 127 } else if (info.equals("libraryParamlist")) { 113 description.appendChild(response_doc.importNode(this.document_list, true)); 114 } else if (info.equals(GSXML.LIBRARY_PARAM_ELEM+GSXML.LIST_MODIFIER)) { 128 115 129 description.appendChild(this.library_param_list);116 description.appendChild(response_doc.importNode(this.library_param_list, true)); 130 117 } 131 118 … … 134 121 return response; 135 122 } 136 return super.processMessage(re quest);123 return super.processMessage(response_doc, request); 137 124 138 125 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/comms/SOAPCommunicator.java
r25727 r28966 96 96 public Node process(Node message_node) { 97 97 98 Element message = XMLConverter.nodeToElement(message_node);98 Element message = GSXML.nodeToElement(message_node); 99 99 100 100 NodeList requests = message.getElementsByTagName(GSXML.REQUEST_ELEM); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/DefaultReceptionist.java
r24993 r28966 29 29 { 30 30 super.addExtraInfo(page); 31 31 // the document for the page 32 Document doc = page.getOwnerDocument(); 33 // a new document to create messages to send to MR 34 Document msg_doc = XMLConverter.newDOM(); 32 35 Element page_request = (Element) GSXML.getChildByTagName(page, GSXML.PAGE_REQUEST_ELEM); 33 36 // if it is a system request, then we don't bother with this. … … 70 73 if (this.language_list != null) 71 74 { 72 page_response.appendChild(this.language_list);75 page_response.appendChild(doc.importNode(this.language_list, true)); 73 76 } 74 77 Element coll_description = (Element) GSXML.getChildByTagName(page_response, GSXML.COLLECTION_ELEM); … … 80 83 if (coll_description == null) 81 84 { 82 85 logger.debug("getting the coll description"); 83 86 // we dont have one yet - get it 84 Element coll_about_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 85 Element coll_about_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_DESCRIBE, coll_name, userContext); 87 88 Element coll_about_message = msg_doc.createElement(GSXML.MESSAGE_ELEM); 89 Element coll_about_request = GSXML.createBasicRequest(msg_doc, GSXML.REQUEST_TYPE_DESCRIBE, coll_name, userContext); 86 90 coll_about_message.appendChild(coll_about_request); 87 91 … … 104 108 } 105 109 // have found one, append it to the page response 106 coll_description = (Element) this.doc.importNode(coll_description, true);110 coll_description = (Element) doc.importNode(coll_description, true); 107 111 page_response.appendChild(coll_description); 108 112 get_service_description = true; 109 113 } 114 110 115 111 116 // have got a coll description … … 151 156 152 157 // we will send all the requests in a single message 153 Element info_message = this.doc.createElement(GSXML.MESSAGE_ELEM);158 Element info_message = msg_doc.createElement(GSXML.MESSAGE_ELEM); 154 159 for (int i = 0; i < services.getLength(); i++) 155 160 { … … 157 162 String name = c.getAttribute(GSXML.NAME_ATT); 158 163 String address = GSPath.appendLink(coll_name, name); 159 Element info_request = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_DESCRIBE, address, userContext);164 Element info_request = GSXML.createBasicRequest(msg_doc, GSXML.REQUEST_TYPE_DESCRIBE, address, userContext); 160 165 //Element req_param_list = this.doc.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 161 166 //req_param_list.appendChild(GSXML.createParameter(this.doc, GSXML.SUBSET_PARAM, GSXML.DISPLAY_TEXT_ELEM+GSXML.LIST_MODIFIER)); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/MessageRouter.java
r28856 r28966 235 235 { 236 236 237 Document doc = this.converter.newDOM();238 Element message = this.converter.nodeToElement(message_node);237 Document doc = XMLConverter.newDOM(); 238 Element message = GSXML.nodeToElement(message_node); 239 239 240 240 // check that its a correct message tag … … 464 464 465 465 // load up the services: serviceRackList 466 Document doc = this.converter.newDOM();466 Document doc = XMLConverter.newDOM(); 467 467 this.service_list = doc.createElement(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER); 468 468 Element service_rack_list_elem = (Element) GSXML.getChildByTagName(config_info, GSXML.SERVICE_CLASS_ELEM + GSXML.LIST_MODIFIER); … … 512 512 return true; 513 513 } 514 Document doc = this.converter.newDOM();514 Document doc = XMLConverter.newDOM(); 515 515 Element service_message = doc.createElement(GSXML.MESSAGE_ELEM); 516 516 Element service_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_DESCRIBE, "", new UserContext()); … … 916 916 917 917 logger.info(" getting info from site:" + site_name); 918 Document doc = this.converter.newDOM();918 Document doc = XMLConverter.newDOM(); 919 919 Element info_request = doc.createElement(GSXML.MESSAGE_ELEM); 920 920 Element req = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_DESCRIBE, "", new UserContext()); … … 923 923 // process the message 924 924 Node info_response_node = comm.process(info_request); 925 Element info_response = converter.nodeToElement(info_response_node);925 Element info_response = GSXML.nodeToElement(info_response_node); 926 926 927 927 if (info_response == null) … … 1083 1083 1084 1084 // message for self, should be type=describe/configure at this stage 1085 Document doc = this.converter.newDOM();1085 Document doc = XMLConverter.newDOM(); 1086 1086 String type = req.getAttribute(GSXML.TYPE_ATT); 1087 1087 Element response = doc.createElement(GSXML.RESPONSE_ELEM); … … 1334 1334 protected Element modifyMessages(Element request, Element message, Element result) 1335 1335 { 1336 Document doc = this.converter.newDOM();1336 Document doc = XMLConverter.newDOM(); 1337 1337 Element response = doc.createElement(GSXML.RESPONSE_ELEM); 1338 1338 response.setAttribute(GSXML.FROM_ATT, ""); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/OAIReceptionist.java
r28885 r28966 178 178 // First, we get a list of all the OAI enabled collections 179 179 // We get this by sending a listSets request to the MR 180 Document doc = this.converter.newDOM();180 Document doc = XMLConverter.newDOM(); 181 181 Element message = doc.createElement(GSXML.MESSAGE_ELEM); 182 182 … … 228 228 return false; 229 229 } 230 Document listsets_doc = this.converter.newDOM();230 Document listsets_doc = XMLConverter.newDOM(); 231 231 Element listsets_element = listsets_doc.createElement(OAIXML.LIST_SETS); 232 232 this.listsets_response = getMessage(listsets_doc, listsets_element); … … 285 285 protected void resetMessageRouter() { 286 286 // we just need to send a configure request to MR 287 Document doc = this.converter.newDOM();287 Document doc = XMLConverter.newDOM(); 288 288 Element mr_request_message = doc.createElement(GSXML.MESSAGE_ELEM); 289 289 Element mr_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_SYSTEM, "", null); … … 321 321 logger.error("OAIReceptionist received request"); 322 322 323 Element message = this.converter.nodeToElement(message_node);323 Element message = GSXML.nodeToElement(message_node); 324 324 logger.error(this.converter.getString(message)); 325 325 … … 413 413 valid_strs.add(OAIXML.RESUMPTION_TOKEN); 414 414 415 Document result_doc = this.converter.newDOM();415 Document result_doc = XMLConverter.newDOM(); 416 416 Element result_element = result_doc.createElement(verb); 417 417 boolean result_token_needed = false; // does this result need to include a … … 538 538 539 539 540 Document doc = this.converter.newDOM();540 Document doc = XMLConverter.newDOM(); 541 541 Element mr_msg = doc.createElement(GSXML.MESSAGE_ELEM); 542 542 Element mr_req = doc.createElement(GSXML.REQUEST_ELEM); … … 767 767 NodeList params = GSXML.getChildrenByTagName(req, GSXML.PARAM_ELEM); 768 768 Element param = null; 769 Document lmf_doc = this.converter.newDOM();769 Document lmf_doc = XMLConverter.newDOM(); 770 770 if(params.getLength() == 0) { 771 771 //this is requesting metadata formats for the whole repository … … 852 852 //Now send the request to the message router to process 853 853 Node result_node = mr.process(message); 854 return converter.nodeToElement(result_node);854 return GSXML.nodeToElement(result_node); 855 855 } 856 856 … … 877 877 return getMessage(this.identify_response.getOwnerDocument(), this.identify_response); 878 878 } 879 Document doc = this.converter.newDOM();879 Document doc = XMLConverter.newDOM(); 880 880 Element identify = doc.createElement(OAIXML.IDENTIFY); 881 881 //do the repository name … … 979 979 * Exceptions: badArgument; cannotDisseminateFormat; idDoesNotExist 980 980 */ 981 Document doc = this.converter.newDOM();981 Document doc = XMLConverter.newDOM(); 982 982 Element get_record = doc.createElement(OAIXML.GET_RECORD); 983 983 … … 1031 1031 msg.appendChild(doc.importNode(req, true)); 1032 1032 Node result_node = mr.process(msg); 1033 return converter.nodeToElement(result_node);1033 return GSXML.nodeToElement(result_node); 1034 1034 } 1035 1035 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/Receptionist.java
r28248 r28966 33 33 protected HashMap<String, Object> config_params = null; 34 34 /** container Document to create XML Nodes */ 35 protected Document doc = null;35 //protected Document doc = null; 36 36 37 37 /** a converter class to parse XML and create Docs */ … … 54 54 { 55 55 this.converter = new XMLConverter(); 56 this.doc = this.converter.newDOM();56 //this.doc = XMLConverter.newDOM(); 57 57 this.action_map = new HashMap<String, Action>(); 58 58 } … … 182 182 public Node process(Node message_node) 183 183 { 184 Element message = this.converter.nodeToElement(message_node);184 Element message = GSXML.nodeToElement(message_node); 185 185 186 186 // get the request out of the message - assume that there is only one … … 242 242 preProcessRequest(request); 243 243 // set up the page 244 Element page = this.doc.createElement(GSXML.PAGE_ELEM); 244 Document doc = XMLConverter.newDOM(); 245 Element page = doc.createElement(GSXML.PAGE_ELEM); 245 246 page.setAttribute(GSXML.LANG_ATT, request.getAttribute(GSXML.LANG_ATT)); 246 247 // just in case these namespaces end up in the page and we want to display the XML … … 273 274 274 275 // the request is part of the page 275 page.appendChild(GSXML.duplicateWithNewName( this.doc, request, GSXML.PAGE_REQUEST_ELEM, true));276 page.appendChild(GSXML.duplicateWithNewName(doc, request, GSXML.PAGE_REQUEST_ELEM, true)); 276 277 // add the response too 277 Element page_response = GSXML.duplicateWithNewName( this.doc, (Element) GSXML.getChildByTagName(action_response, GSXML.RESPONSE_ELEM), GSXML.PAGE_RESPONSE_ELEM, true);278 Element page_response = GSXML.duplicateWithNewName(doc, (Element) GSXML.getChildByTagName(action_response, GSXML.RESPONSE_ELEM), GSXML.PAGE_RESPONSE_ELEM, true); 278 279 page.appendChild(page_response); 279 280 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/TransformingReceptionist.java
r28257 r28966 179 179 else 180 180 { 181 this.language_list = (Element) this.doc.importNode(lang_list, true); 181 //this.language_list = (Element) this.doc.importNode(lang_list, true); 182 this.language_list = lang_list; 182 183 } 183 184 … … 380 381 ArrayList<File> stylesheets = GSFile.getStylesheetFiles(GlobalProperties.getGSDL3Home(), (String) this.config_params.get(GSConstants.SITE_NAME), collection, (String) this.config_params.get(GSConstants.INTERFACE_NAME), base_interfaces, name); 381 382 382 Element extraMetadataList = this.doc.createElement(GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER); 383 Document doc = XMLConverter.newDOM(); 384 Element extraMetadataList = doc.createElement(GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER); 383 385 for (File stylesheet : stylesheets) 384 386 { … … 389 391 for (String metadataString : requiredMetadata) 390 392 { 391 Element metadataElem = this.doc.createElement(GSXML.EXTRA_METADATA);393 Element metadataElem = doc.createElement(GSXML.EXTRA_METADATA); 392 394 metadataElem.setAttribute(GSXML.NAME_ATT, metadataString); 393 395 extraMetadataList.appendChild(metadataElem); … … 701 703 if (style_doc == null) 702 704 { 703 String errorPage = this.converter.getParseErrorMessage(); 704 if (errorPage != null) 705 { 706 return XMLTransformer.constructErrorXHTMLPage("Cannot parse the xslt file\n" + errorPage); 707 } 705 // this getParseErrorMessage may have originally worked, but now it doesn't. 706 // //String errorPage = this.converter.getParseErrorMessage(); 707 // if (errorPage != null) 708 // { 709 // return XMLTransformer.constructErrorXHTMLPage("Cannot parse the xslt file\n");// + errorPage); 710 // } 708 711 return page; 709 712 } … … 712 715 // the paths right if you have paths relative to the document root 713 716 // eg /page. 714 Document doc = this.converter.newDOM();717 Document doc = XMLConverter.newDOM(); 715 718 doc.appendChild(doc.importNode(page, true)); 716 719 Element page_response = (Element) GSXML.getChildByTagName(page, GSXML.PAGE_RESPONSE_ELEM); … … 743 746 if (configStylesheet_doc != null) 744 747 { 745 Document format_doc = this.converter.newDOM();748 Document format_doc = XMLConverter.newDOM(); 746 749 format_doc.appendChild(format_doc.importNode(format_elem, true)); 747 750 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractBrowse.java
r26046 r28966 29 29 import org.greenstone.gsdl3.util.MacroResolver; 30 30 import org.greenstone.gsdl3.util.OID; 31 import org.greenstone.gsdl3.util.XMLConverter; 32 31 33 import org.w3c.dom.Document; 32 34 import org.w3c.dom.Element; … … 113 115 114 116 // short_service_info_ - the browse one 115 Element cb_service = this.d oc.createElement(GSXML.SERVICE_ELEM);117 Element cb_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 116 118 cb_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_BROWSE); 117 119 cb_service.setAttribute(GSXML.NAME_ATT, CLASSIFIER_SERVICE); … … 119 121 120 122 // metadata retrieval for the browsing 121 Element cbmr_service = this.d oc.createElement(GSXML.SERVICE_ELEM);123 Element cbmr_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 122 124 cbmr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 123 125 cbmr_service.setAttribute(GSXML.NAME_ATT, CLASSIFIER_METADATA_SERVICE); … … 125 127 126 128 // the format info 127 Element cb_format_info = this.d oc.createElement(GSXML.FORMAT_ELEM);129 Element cb_format_info = this.desc_doc.createElement(GSXML.FORMAT_ELEM); 128 130 boolean format_found = false; 129 131 … … 132 134 if (def_format != null) 133 135 { 134 cb_format_info.appendChild(GSXML.duplicateWithNewName(this.d oc, def_format, GSXML.DEFAULT_ELEM, true));136 cb_format_info.appendChild(GSXML.duplicateWithNewName(this.desc_doc, def_format, GSXML.DEFAULT_ELEM, true)); 135 137 format_found = true; 136 138 } … … 142 144 Element cl = (Element) classifiers.item(i); 143 145 144 Element new_cl = (Element) this.d oc.importNode(cl, false); // just import this node, not the children146 Element new_cl = (Element) this.desc_doc.importNode(cl, false); // just import this node, not the children 145 147 146 148 // get the format info out, and put inside a classifier element … … 153 155 for (int j = 0; j < elems.getLength(); j++) 154 156 { 155 format_cl.appendChild(this.d oc.importNode(elems.item(j), true));157 format_cl.appendChild(this.desc_doc.importNode(elems.item(j), true)); 156 158 } 157 159 cb_format_info.appendChild(format_cl); … … 184 186 185 187 // Base line for document (might be overriden by sub-classes) 186 gs_doc = new BasicDocument(this.d oc, this.default_document_type);188 gs_doc = new BasicDocument(this.default_document_type); 187 189 188 190 return true; 189 191 } 190 192 191 protected Element getServiceDescription(String service_id, String lang, String subset)193 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 192 194 { 193 195 … … 202 204 } 203 205 204 Element cb_service = this.doc.createElement(GSXML.SERVICE_ELEM);206 Element cb_service = doc.createElement(GSXML.SERVICE_ELEM); 205 207 cb_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_BROWSE); 206 208 cb_service.setAttribute(GSXML.NAME_ATT, CLASSIFIER_SERVICE); 207 cb_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_NAME, getTextString(CLASSIFIER_SERVICE + ".name", lang)));208 cb_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(CLASSIFIER_SERVICE + ".description", lang)));209 210 Element cl_list = this.doc.createElement(GSXML.CLASSIFIER_ELEM + GSXML.LIST_MODIFIER);209 cb_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_NAME, getTextString(CLASSIFIER_SERVICE + ".name", lang))); 210 cb_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(CLASSIFIER_SERVICE + ".description", lang))); 211 212 Element cl_list = doc.createElement(GSXML.CLASSIFIER_ELEM + GSXML.LIST_MODIFIER); 211 213 cb_service.appendChild(cl_list); 212 214 NodeList classifiers = class_list.getElementsByTagName(GSXML.CLASSIFIER_ELEM); … … 214 216 { 215 217 Element cl = (Element) classifiers.item(i); 216 Element new_cl = (Element) this.doc.importNode(cl, false); // just import this node, not the children218 Element new_cl = (Element) doc.importNode(cl, false); // just import this node, not the children 217 219 218 220 //String content = cl.getAttribute(GSXML.CLASSIFIER_CONTENT_ATT); … … 236 238 } 237 239 238 Element cl_name = GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_NAME, text);240 Element cl_name = GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_NAME, text); 239 241 new_cl.appendChild(cl_name); 240 242 … … 248 250 String[] array = { meta_name }; 249 251 String description = getTextString("ClassifierBrowse.classifier_help", lang, array); 250 Element cl_desc = GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_DESCRIPTION, description);252 Element cl_desc = GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_DESCRIPTION, description); 251 253 new_cl.appendChild(cl_desc); 252 254 … … 260 262 { 261 263 262 Element cbmr_service = this.doc.createElement(GSXML.SERVICE_ELEM);264 Element cbmr_service = doc.createElement(GSXML.SERVICE_ELEM); 263 265 cbmr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 264 266 cbmr_service.setAttribute(GSXML.NAME_ATT, CLASSIFIER_METADATA_SERVICE); … … 348 350 349 351 // Create a new (empty) result message 350 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 352 Document result_doc = XMLConverter.newDOM(); 353 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 351 354 result.setAttribute(GSXML.FROM_ATT, CLASSIFIER_SERVICE); 352 355 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 424 427 425 428 // the node list to hold the results 426 Element node_list = this.doc.createElement(GSXML.CLASS_NODE_ELEM + GSXML.LIST_MODIFIER);429 Element node_list = result_doc.createElement(GSXML.CLASS_NODE_ELEM + GSXML.LIST_MODIFIER); 427 430 result.appendChild(node_list); 428 431 … … 432 435 { 433 436 // Add the document to the list 434 Element node = this.doc.createElement(GSXML.CLASS_NODE_ELEM);437 Element node = result_doc.createElement(GSXML.CLASS_NODE_ELEM); 435 438 node_list.appendChild(node); 436 439 … … 450 453 if (want_info) 451 454 { 452 Element node_info_elem = this.doc.createElement("nodeStructureInfo");455 Element node_info_elem = result_doc.createElement("nodeStructureInfo"); 453 456 node.appendChild(node_info_elem); 454 457 … … 459 462 if (info_value != null) 460 463 { 461 Element info_elem = this.doc.createElement("info");464 Element info_elem = result_doc.createElement("info"); 462 465 info_elem.setAttribute(GSXML.NAME_ATT, info_type); 463 466 info_elem.setAttribute(GSXML.VALUE_ATT, info_value); … … 470 473 { 471 474 // all structure info goes into a nodeStructure elem 472 Element structure_elem = this.doc.createElement(GSXML.NODE_STRUCTURE_ELEM);475 Element structure_elem = result_doc.createElement(GSXML.NODE_STRUCTURE_ELEM); 473 476 node.appendChild(structure_elem); 474 477 … … 476 479 { 477 480 String root_id = getRootId(node_id); 478 Element root_node = createClassifierNode(r oot_id); //, true, false);481 Element root_node = createClassifierNode(result_doc, root_id); //, true, false); 479 482 addDescendants(root_node, root_id, true); 480 483 structure_elem.appendChild(root_node); … … 483 486 484 487 // Add the requested structure information 485 Element base_node = createClassifierNode( node_id); //, false, false);488 Element base_node = createClassifierNode(result_doc, node_id); //, false, false); 486 489 487 490 //Ancestors: continually add parent nodes until the root is reached … … 496 499 if (parent_id == null) 497 500 break; // no parent 498 Element parent_node = createClassifierNode( parent_id);501 Element parent_node = createClassifierNode(result_doc, parent_id); 499 502 parent_node.appendChild(top_node); 500 503 current_id = parent_id;//.getAttribute(GSXML.NODE_ID_ATT); … … 508 511 if (parent_id != null) 509 512 { 510 Element parent_node = createClassifierNode(parent_id);513 Element parent_node = createClassifierNode(result_doc, parent_id); 511 514 parent_node.appendChild(base_node); 512 515 top_node = parent_node; … … 567 570 568 571 // Create a new (empty) result message 569 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 572 Document result_doc = XMLConverter.newDOM(); 573 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 570 574 571 575 String lang = request.getAttribute(GSXML.LANG_ATT); … … 602 606 } 603 607 604 Element node_list = this.doc.createElement(GSXML.CLASS_NODE_ELEM + GSXML.LIST_MODIFIER);608 Element node_list = result_doc.createElement(GSXML.CLASS_NODE_ELEM + GSXML.LIST_MODIFIER); 605 609 result.appendChild(node_list); 606 610 … … 620 624 621 625 // Add the document to the results list 622 Element new_node = (Element) this.doc.importNode(request_node, false);626 Element new_node = (Element) result_doc.importNode(request_node, false); 623 627 node_list.appendChild(new_node); 624 628 … … 632 636 } 633 637 634 Element metadata_list = getMetadataList( node_id, all_metadata, metadata_names_list);638 Element metadata_list = getMetadataList(result_doc, node_id, all_metadata, metadata_names_list); 635 639 new_node.appendChild(metadata_list); 636 640 } … … 640 644 641 645 /** Creates a classifier node */ 642 protected Element createClassifierNode(String node_id)643 { 644 Element node = this.doc.createElement(GSXML.CLASS_NODE_ELEM);646 protected Element createClassifierNode(Document doc, String node_id) 647 { 648 Element node = doc.createElement(GSXML.CLASS_NODE_ELEM); 645 649 node.setAttribute(GSXML.NODE_ID_ATT, node_id); 646 650 node.setAttribute(GSXML.CHILD_TYPE_ATT, getChildType(node_id)); … … 652 656 * <docNode nodeId='xxx' nodeType='leaf' docType='hierarchy'/> 653 657 */ 654 protected Element createDocNode(String node_id)655 { 656 return this.gs_doc.createDocNode( node_id);658 protected Element createDocNode(Document doc, String node_id) 659 { 660 return this.gs_doc.createDocNode(doc, node_id); 657 661 } 658 662 … … 675 679 if (child_ids == null) 676 680 return; 681 Document doc = node.getOwnerDocument(); 677 682 for (int i = 0; i < child_ids.size(); i++) 678 683 { … … 681 686 if (isDocumentId(child_id)) 682 687 { 683 child_elem = createDocNode(child_id);688 child_elem = createDocNode(doc, child_id); 684 689 } 685 690 else 686 691 { 687 child_elem = createClassifierNode(child_id);692 child_elem = createClassifierNode(doc, child_id); 688 693 } 689 694 node.appendChild(child_elem); … … 784 789 * returns all available metadata, otherwise just returns requested metadata 785 790 */ 786 abstract protected Element getMetadataList(String node_id, boolean all_metadata, ArrayList<String> metadata_names);791 abstract protected Element getMetadataList(Document doc, String node_id, boolean all_metadata, ArrayList<String> metadata_names); 787 792 788 793 /** -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractDocumentRetrieve.java
r26198 r28966 31 31 import org.greenstone.gsdl3.util.OID; 32 32 import org.greenstone.gsdl3.util.GSConstants; 33 import org.greenstone.gsdl3.util.XMLConverter; 33 34 34 35 // XML classes … … 104 105 if (does_structure) 105 106 { 106 Element dsr_service = this.d oc.createElement(GSXML.SERVICE_ELEM);107 Element dsr_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 107 108 dsr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 108 109 dsr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_STRUCTURE_RETRIEVE_SERVICE); … … 112 113 if (does_metadata) 113 114 { 114 Element dmr_service = this.d oc.createElement(GSXML.SERVICE_ELEM);115 Element dmr_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 115 116 dmr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 116 117 dmr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_METADATA_RETRIEVE_SERVICE); … … 120 121 if (does_content) 121 122 { 122 Element dcr_service = this.d oc.createElement(GSXML.SERVICE_ELEM);123 Element dcr_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 123 124 dcr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 124 125 dcr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_CONTENT_RETRIEVE_SERVICE); … … 131 132 if (display_format != null) 132 133 { 133 this.format_info_map.put(DOCUMENT_CONTENT_RETRIEVE_SERVICE, this.d oc.importNode(display_format, true));134 this.format_info_map.put(DOCUMENT_CONTENT_RETRIEVE_SERVICE, this.desc_doc.importNode(display_format, true)); 134 135 // should we keep a copy? 135 136 // check for docType option. … … 171 172 172 173 // Base line for document (might be overriden by sub-classes) 173 gs_doc = new BasicDocument(this.d oc, this.default_document_type);174 gs_doc = new BasicDocument(this.default_document_type); 174 175 175 176 return true; 176 177 } 177 178 178 protected Element getServiceDescription(String service_id, String lang, String subset)179 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 179 180 { 180 181 181 182 // these ones are probably never called, but put them here just in case 182 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);183 Element service_elem = doc.createElement(GSXML.SERVICE_ELEM); 183 184 service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 184 185 service_elem.setAttribute(GSXML.NAME_ATT, service_id); … … 190 191 191 192 // Create a new (empty) result message 192 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 193 Document result_doc = XMLConverter.newDOM(); 194 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 193 195 String lang = request.getAttribute(GSXML.LANG_ATT); 194 196 result.setAttribute(GSXML.FROM_ATT, DOCUMENT_METADATA_RETRIEVE_SERVICE); … … 204 206 if (param_list == null) 205 207 { 206 GSXML.addError( this.doc,result, "DocumentMetadataRetrieve: missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);208 GSXML.addError(result, "DocumentMetadataRetrieve: missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 207 209 return result; 208 210 } … … 232 234 if (!all_metadata && metadata_names_list.size() == 0) 233 235 { 234 GSXML.addError( this.doc,result, "DocumentMetadataRetrieve: no metadata names found in the " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);236 GSXML.addError(result, "DocumentMetadataRetrieve: no metadata names found in the " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 235 237 return result; 236 238 } … … 240 242 if (request_node_list == null) 241 243 { 242 GSXML.addError( this.doc,result, "DocumentMetadataRetrieve: missing " + GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);244 GSXML.addError(result, "DocumentMetadataRetrieve: missing " + GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 243 245 return result; 244 246 } 245 247 246 248 // copy the request doc node list to the response 247 Element response_node_list = (Element) this.doc.importNode(request_node_list, true);249 Element response_node_list = (Element) result_doc.importNode(request_node_list, true); 248 250 result.appendChild(response_node_list); 249 251 250 252 // use the copied list so that we add the metadata into the copy 251 253 // are we just adding metadata for the top level nodes? or can we accept a hierarchy here??? 252 NodeList request_nodes = GSXML.getChildrenByTagName(response_node_list, GSXML.DOC_NODE_ELEM);253 if ( request_nodes.getLength() == 0)254 { 255 GSXML.addError( this.doc,result, "DocumentMetadataRetrieve: no " + GSXML.DOC_NODE_ELEM + " found in the " + GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);254 NodeList doc_nodes = GSXML.getChildrenByTagName(response_node_list, GSXML.DOC_NODE_ELEM); 255 if (doc_nodes.getLength() == 0) 256 { 257 GSXML.addError(result, "DocumentMetadataRetrieve: no " + GSXML.DOC_NODE_ELEM + " found in the " + GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 256 258 return result; 257 259 } 258 260 259 261 // Whew, now we have checked (almost) all the syntax of the request, now we can process it. 260 for (int i = 0; i < request_nodes.getLength(); i++)261 { 262 Element request_node = (Element) request_nodes.item(i);263 String node_id = request_node.getAttribute(GSXML.NODE_ID_ATT);262 for (int i = 0; i < doc_nodes.getLength(); i++) 263 { 264 Element doc_node = (Element) doc_nodes.item(i); 265 String node_id = doc_node.getAttribute(GSXML.NODE_ID_ATT); 264 266 boolean is_href_id = false; 265 267 if (node_id.equals("")) 266 268 { 267 node_id = getGreenstoneIdFromHref( request_node);269 node_id = getGreenstoneIdFromHref(doc_node); 268 270 if (node_id == null) 269 271 { 270 272 // **** TODO, is this good enough??? 271 request_node.setAttribute("external_link", "true");273 doc_node.setAttribute("external_link", "true"); 272 274 continue; 273 275 } … … 287 289 try 288 290 { 289 Element metadata_list = getMetadataList( node_id, all_metadata, metadata_names_list, lang);291 Element metadata_list = getMetadataList(result_doc, node_id, all_metadata, metadata_names_list, lang); 290 292 if (metadata_list != null) 291 293 { 292 request_node.appendChild(metadata_list);294 doc_node.appendChild(metadata_list); 293 295 } 294 296 } 295 297 catch (GSException e) 296 298 { 297 GSXML.addError( this.doc,result, e.getMessage(), e.getType());299 GSXML.addError(result, e.getMessage(), e.getType()); 298 300 if (e.getType().equals(GSXML.ERROR_TYPE_SYSTEM)) 299 301 { … … 312 314 313 315 // Create a new (empty) result message 314 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 316 Document result_doc = XMLConverter.newDOM(); 317 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 315 318 result.setAttribute(GSXML.FROM_ATT, DOCUMENT_STRUCTURE_RETRIEVE_SERVICE); 316 319 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 328 331 if (param_list == null) 329 332 { 330 GSXML.addError( this.doc,result, "DocumentStructureRetrieve: missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);333 GSXML.addError(result, "DocumentStructureRetrieve: missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 331 334 return result; 332 335 } … … 336 339 if (query_doc_list == null) 337 340 { 338 GSXML.addError( this.doc,result, "DocumentStructureRetrieve: missing " + GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);341 GSXML.addError(result, "DocumentStructureRetrieve: missing " + GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 339 342 return result; 340 343 } 341 344 342 345 // copy the doc_list to the response 343 Element response_node_list = (Element) this.doc.importNode(query_doc_list, true);346 Element response_node_list = (Element) result_doc.importNode(query_doc_list, true); 344 347 result.appendChild(response_node_list); 345 348 … … 348 351 if (node_list.getLength() == 0) 349 352 { 350 GSXML.addError( this.doc,result, "DocumentStructureRetrieve: no " + GSXML.DOC_NODE_ELEM + " found in the " + GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);353 GSXML.addError(result, "DocumentStructureRetrieve: no " + GSXML.DOC_NODE_ELEM + " found in the " + GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 351 354 return result; 352 355 } … … 407 410 want_children = false; 408 411 412 // for each of the doc nodes, get the required info 413 // these nodes are part of result_doc - can use that to create Elements 409 414 for (int i = 0; i < node_list.getLength(); i++) 410 415 { 411 Element doc = (Element) node_list.item(i);412 413 String doc_id = doc .getAttribute(GSXML.NODE_ID_ATT);416 Element doc_node = (Element) node_list.item(i); 417 418 String doc_id = doc_node.getAttribute(GSXML.NODE_ID_ATT); 414 419 boolean is_href_id = false; 415 420 if (doc_id.equals("")) 416 421 { 417 doc_id = getGreenstoneIdFromHref(doc );422 doc_id = getGreenstoneIdFromHref(doc_node); 418 423 if (doc_id == null) 419 424 { 420 425 // **** TODO, is this good enough??? 421 doc .setAttribute("external_link", "true");426 doc_node.setAttribute("external_link", "true"); 422 427 continue; 423 428 } 424 doc .setAttribute(GSXML.NODE_ID_ATT, doc_id);429 doc_node.setAttribute(GSXML.NODE_ID_ATT, doc_id); 425 430 } 426 431 … … 428 433 { 429 434 doc_id = translateId(doc_id); 430 doc .setAttribute(GSXML.NODE_ID_ATT, doc_id);435 doc_node.setAttribute(GSXML.NODE_ID_ATT, doc_id); 431 436 } 432 437 … … 438 443 if (want_info) 439 444 { 440 Element node_info_elem = this.doc.createElement("nodeStructureInfo");441 doc .appendChild(node_info_elem);445 Element node_info_elem = result_doc.createElement("nodeStructureInfo"); 446 doc_node.appendChild(node_info_elem); 442 447 443 448 for (int j = 0; j < info_types.size(); j++) … … 447 452 if (info_value != null) 448 453 { 449 Element info_elem = this.doc.createElement("info");454 Element info_elem = result_doc.createElement("info"); 450 455 info_elem.setAttribute(GSXML.NAME_ATT, info_type); 451 456 info_elem.setAttribute(GSXML.VALUE_ATT, info_value); … … 458 463 { 459 464 // all structure info goes into a nodeStructure elem 460 Element structure_elem = this.doc.createElement(GSXML.NODE_STRUCTURE_ELEM);461 doc .appendChild(structure_elem);465 Element structure_elem = result_doc.createElement(GSXML.NODE_STRUCTURE_ELEM); 466 doc_node.appendChild(structure_elem); 462 467 463 468 if (want_entire_structure) 464 469 { 465 470 String root_id = getRootId(doc_id); 466 Element root_node = createDocNode(r oot_id); //, true, false);471 Element root_node = createDocNode(result_doc, root_id); //, true, false); 467 472 addDescendants(root_node, root_id, true); 468 473 structure_elem.appendChild(root_node); … … 471 476 472 477 // Add the requested structure information 473 Element base_node = createDocNode( doc_id); //, false, false);478 Element base_node = createDocNode(result_doc, doc_id); //, false, false); 474 479 475 480 //Ancestors: continually add parent nodes until the root is reached … … 484 489 if (parent_id == null) 485 490 break; // no parent 486 Element parent_node = createDocNode( parent_id);491 Element parent_node = createDocNode(result_doc, parent_id); 487 492 parent_node.appendChild(top_node); 488 493 current_id = parent_id;//.getAttribute(GSXML.NODE_ID_ATT); … … 496 501 if (parent_id != null) 497 502 { 498 Element parent_node = createDocNode(parent_id);503 Element parent_node = createDocNode(result_doc, parent_id); 499 504 parent_node.appendChild(base_node); 500 505 top_node = parent_node; … … 541 546 { 542 547 // Create a new (empty) result message 543 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 548 Document result_doc = XMLConverter.newDOM(); 549 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 544 550 result.setAttribute(GSXML.FROM_ATT, DOCUMENT_CONTENT_RETRIEVE_SERVICE); 545 551 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 564 570 565 571 // copy the request doc node list to the response 566 Element response_node_list = (Element) this.doc.importNode(query_doc_list, true);572 Element response_node_list = (Element) result_doc.importNode(query_doc_list, true); 567 573 result.appendChild(response_node_list); 568 574 569 NodeList request_nodes = GSXML.getChildrenByTagName(response_node_list, GSXML.DOC_NODE_ELEM);570 if ( request_nodes.getLength() == 0)571 { 572 GSXML.addError( this.doc,result, "DocumentContentRetrieve: no " + GSXML.DOC_NODE_ELEM + " found in the " + GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);573 return result; 574 } 575 576 //Element doc_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);575 NodeList doc_nodes = GSXML.getChildrenByTagName(response_node_list, GSXML.DOC_NODE_ELEM); 576 if (doc_nodes.getLength() == 0) 577 { 578 GSXML.addError(result, "DocumentContentRetrieve: no " + GSXML.DOC_NODE_ELEM + " found in the " + GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 579 return result; 580 } 581 582 //Element doc_list = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 577 583 //result.appendChild(doc_list); 578 584 … … 583 589 //String[] is_externals = GSXML.getAttributeValuesFromList(query_doc_list, "externalURL"); 584 590 585 for (int i = 0; i < request_nodes.getLength(); i++)586 { 587 Element request_node = (Element) request_nodes.item(i);588 String node_id = request_node.getAttribute(GSXML.NODE_ID_ATT);591 for (int i = 0; i < doc_nodes.getLength(); i++) 592 { 593 Element doc_node = (Element) doc_nodes.item(i); 594 String node_id = doc_node.getAttribute(GSXML.NODE_ID_ATT); 589 595 590 596 if (node_id.equals("")) 591 597 { 592 node_id = getGreenstoneIdFromHref( request_node);598 node_id = getGreenstoneIdFromHref(doc_node); 593 599 if (node_id == null) 594 600 { 595 601 // **** TODO, is this good enough??? 596 request_node.setAttribute("external_link", "true");602 doc_node.setAttribute("external_link", "true"); 597 603 continue; 598 604 } 599 request_node.setAttribute(GSXML.NODE_ID_ATT, node_id);605 doc_node.setAttribute(GSXML.NODE_ID_ATT, node_id); 600 606 } 601 607 … … 612 618 try 613 619 { 614 Element node_content = getNodeContent(node_id, lang);620 Element node_content = getNodeContent(result_doc, node_id, lang); 615 621 if (node_content != null) 616 622 { 617 request_node.appendChild(node_content);623 doc_node.appendChild(node_content); 618 624 } 619 625 } 620 626 catch (GSException e) 621 627 { 622 GSXML.addError( this.doc,result, e.getMessage());628 GSXML.addError(result, e.getMessage()); 623 629 return result; 624 630 } … … 631 637 * <docNode nodeId='xxx' nodeType='leaf' docType='hierarchy'/> 632 638 */ 633 protected Element createDocNode(String node_id)634 { 635 return this.gs_doc.createDocNode(node_id);639 protected Element createDocNode(Document doc, String node_id) 640 { 641 return this.gs_doc.createDocNode(doc, node_id); 636 642 } 637 643 … … 759 765 * <metadataList><metadata name="xxx">value</metadata></metadataList> 760 766 */ 761 abstract protected Element getMetadataList( String doc_id, boolean all_metadata, ArrayList<String> metadata_names, String lang) throws GSException;767 abstract protected Element getMetadataList(Document doc, String doc_id, boolean all_metadata, ArrayList<String> metadata_names, String lang) throws GSException; 762 768 763 769 /** … … 765 771 * <nodeContent>text content or other elements</nodeContent> can return 766 772 */ 767 abstract protected Element getNodeContent(String doc_id, String lang) throws GSException;773 abstract protected Element getNodeContent(Document doc, String doc_id, String lang) throws GSException; 768 774 769 775 /** -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractGS2DocumentRetrieve.java
r26198 r28966 127 127 } 128 128 129 gs_doc_db = new BasicDocumentDatabase( this.doc,database_type, this.site_home, this.cluster_name, this.index_stem);129 gs_doc_db = new BasicDocumentDatabase(database_type, this.site_home, this.cluster_name, this.index_stem); 130 130 if (!gs_doc_db.isValid()) 131 131 { … … 174 174 * name="xxx">value</metadata></metadataList> 175 175 */ 176 protected Element getMetadataList( String node_id, boolean all_metadata, ArrayList<String> metadata_names, String lang) throws GSException177 { 178 Element metadata_list = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);176 protected Element getMetadataList(Document doc, String node_id, boolean all_metadata, ArrayList<String> metadata_names, String lang) throws GSException 177 { 178 Element metadata_list = doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 179 179 DBInfo info = this.coll_db.getInfo(node_id); 180 180 if (info == null) … … 195 195 for (int i = 0; i < values.size(); i++) 196 196 { 197 GSXML.addMetadata( this.doc,metadata_list, key, this.macro_resolver.resolve(values.elementAt(i), lang, MacroResolver.SCOPE_META, node_id));197 GSXML.addMetadata(metadata_list, key, this.macro_resolver.resolve(values.elementAt(i), lang, MacroResolver.SCOPE_META, node_id)); 198 198 } 199 199 } … … 213 213 { 214 214 // some of these may be parent/ancestor. does resolve need a different id??? 215 GSXML.addMetadata( this.doc,metadata_list, meta_name, this.macro_resolver.resolve(values.elementAt(j), lang, MacroResolver.SCOPE_META, node_id));215 GSXML.addMetadata(metadata_list, meta_name, this.macro_resolver.resolve(values.elementAt(j), lang, MacroResolver.SCOPE_META, node_id)); 216 216 } 217 217 } … … 295 295 * <nodeContent>text content or other elements</nodeContent> 296 296 */ 297 abstract protected Element getNodeContent(String doc_id, String lang) throws GSException;297 abstract protected Element getNodeContent(Document doc, String doc_id, String lang) throws GSException; 298 298 299 299 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractGS2FieldSearch.java
r28181 r28966 26 26 import org.greenstone.gsdl3.util.FacetWrapper; 27 27 import org.greenstone.gsdl3.util.GSXML; 28 import org.greenstone.gsdl3.util.XMLConverter; 29 28 30 import org.w3c.dom.Document; 29 31 import org.w3c.dom.Element; … … 226 228 { 227 229 // set up short_service_info_ - for now just has id and type - name will be added in on the fly 228 Element fq_service = this.d oc.createElement(GSXML.SERVICE_ELEM);230 Element fq_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 229 231 fq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 230 232 fq_service.setAttribute(GSXML.NAME_ATT, FIELD_QUERY_SERVICE); … … 239 241 if (this.advanced_form_search) 240 242 { 241 Element afq_service = this.d oc.createElement(GSXML.SERVICE_ELEM);243 Element afq_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 242 244 afq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 243 245 afq_service.setAttribute(GSXML.NAME_ATT, ADVANCED_FIELD_QUERY_SERVICE); … … 252 254 if (this.raw_search) 253 255 { 254 Element rq_service = this.d oc.createElement(GSXML.SERVICE_ELEM);256 Element rq_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 255 257 rq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 256 258 rq_service.setAttribute(GSXML.NAME_ATT, RAW_QUERY_SERVICE); … … 299 301 } 300 302 } 301 protected Element getServiceDescription(String service_id, String lang, String subset)303 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 302 304 { 303 305 // should we check that the service is actually on offer? presumably we wont get asked for services that we haven't advertised previously. … … 305 307 if (!service_id.equals(FIELD_QUERY_SERVICE) && !service_id.equals(ADVANCED_FIELD_QUERY_SERVICE) && !service_id.equals(RAW_QUERY_SERVICE)) 306 308 { 307 return super.getServiceDescription(service_id, lang, subset);308 } 309 310 Element service = this.doc.createElement(GSXML.SERVICE_ELEM);309 return super.getServiceDescription(doc, service_id, lang, subset); 310 } 311 312 Element service = doc.createElement(GSXML.SERVICE_ELEM); 311 313 service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 312 314 service.setAttribute(GSXML.NAME_ATT, service_id); 313 315 if (subset == null || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER)) 314 316 { 315 service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_NAME, getTextString(service_id + ".name", lang)));316 service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(service_id + ".submit", lang)));317 service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(service_id + ".description", lang)));317 service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_NAME, getTextString(service_id + ".name", lang))); 318 service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(service_id + ".submit", lang))); 319 service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(service_id + ".description", lang))); 318 320 319 321 } 320 322 if (subset == null || subset.equals(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER)) 321 323 { 322 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);324 Element param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 323 325 service.appendChild(param_list); 324 326 if (service_id.equals(FIELD_QUERY_SERVICE)) … … 346 348 Element multiparam = null; 347 349 Element param = null; 348 multiparam = GSXML.createParameterDescription( this.doc, SIMPLE_FIELD_PARAM, "", GSXML.PARAM_TYPE_MULTI, null, null, null);350 multiparam = GSXML.createParameterDescription(doc, SIMPLE_FIELD_PARAM, "", GSXML.PARAM_TYPE_MULTI, null, null, null); 349 351 multiparam.setAttribute("occurs", "4"); 350 352 param_list.appendChild(multiparam); … … 376 378 Element param = null; 377 379 378 multiparam = GSXML.createParameterDescription( this.doc, ADVANCED_FIELD_PARAM, "", GSXML.PARAM_TYPE_MULTI, null, null, null);380 multiparam = GSXML.createParameterDescription(doc, ADVANCED_FIELD_PARAM, "", GSXML.PARAM_TYPE_MULTI, null, null, null); 379 381 multiparam.setAttribute("occurs", "4"); 380 382 param_list.appendChild(multiparam); … … 431 433 protected void createParameter(String name, Element param_list, String lang) 432 434 { 435 Document doc = param_list.getOwnerDocument(); 433 436 Element param = null; 434 437 String param_default = paramDefaults.get(name); … … 441 444 { 442 445 // the first one is the default 443 //param = GSXML.createParameterDescription2( this.doc, LEVEL_PARAM, getTextString("param."+LEVEL_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, (String)level_ids.get(0), level_ids, level_names);444 param = GSXML.createParameterDescription2( this.doc, LEVEL_PARAM, getTextString("param." + LEVEL_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, this.default_level, level_ids, level_names);446 //param = GSXML.createParameterDescription2(doc, LEVEL_PARAM, getTextString("param."+LEVEL_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, (String)level_ids.get(0), level_ids, level_names); 447 param = GSXML.createParameterDescription2(doc, LEVEL_PARAM, getTextString("param." + LEVEL_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, this.default_level, level_ids, level_names); 445 448 } 446 449 else 447 450 { 448 451 // we need to set the level, but hidden, in case there is an invalid level saved 449 //param = GSXML.createParameterDescription( this.doc, LEVEL_PARAM, "", GSXML.PARAM_TYPE_INVISIBLE, (String)level_ids.get(0), null, null);450 param = GSXML.createParameterDescription( this.doc, LEVEL_PARAM, "", GSXML.PARAM_TYPE_INVISIBLE, this.default_level, null, null);452 //param = GSXML.createParameterDescription(doc, LEVEL_PARAM, "", GSXML.PARAM_TYPE_INVISIBLE, (String)level_ids.get(0), null, null); 453 param = GSXML.createParameterDescription(doc, LEVEL_PARAM, "", GSXML.PARAM_TYPE_INVISIBLE, this.default_level, null, null); 451 454 } 452 455 } … … 456 459 String[] vals1_texts = { getTextString("param." + RANK_PARAM + "." + RANK_PARAM_RANK, lang), getTextString("param." + RANK_PARAM + "." + RANK_PARAM_NONE, lang) }; 457 460 458 param = GSXML.createParameterDescription( this.doc, RANK_PARAM, getTextString("param." + RANK_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, param_default, vals1, vals1_texts);461 param = GSXML.createParameterDescription(doc, RANK_PARAM, getTextString("param." + RANK_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, param_default, vals1, vals1_texts); 459 462 460 463 } 461 464 else if (name.equals(FIELD_QUERY_PARAM)) 462 465 { 463 param = GSXML.createParameterDescription( this.doc, FIELD_QUERY_PARAM, getTextString("param." + FIELD_QUERY_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null);466 param = GSXML.createParameterDescription(doc, FIELD_QUERY_PARAM, getTextString("param." + FIELD_QUERY_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null); 464 467 465 468 } … … 468 471 String[] bool_ops = { "0", "1" }; 469 472 String[] bool_texts = { getTextString("param.boolean.off", lang, "AbstractTextSearch"), getTextString("param.boolean.on", lang, "AbstractTextSearch") }; 470 param = GSXML.createParameterDescription( this.doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_BOOLEAN, param_default, bool_ops, bool_texts);473 param = GSXML.createParameterDescription(doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_BOOLEAN, param_default, bool_ops, bool_texts); 471 474 472 475 } … … 481 484 // org.greenstone.gsdl3.service.AbstractGS2FieldSearch.createParameter(AbstractGS2FieldSearch.java:362) 482 485 // Changed from: 483 // param = GSXML.createParameterDescription2( this.doc, name, getTextString("param."+name, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, (String)fields.get(0), fields, field_names );486 // param = GSXML.createParameterDescription2(doc, name, getTextString("param."+name, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, (String)fields.get(0), fields, field_names ); 484 487 String default_value = (fields.size() > 0) ? fields.get(0) : null; 485 488 // don't want to access element 0 if fields.size()==0, and 486 489 // GSXML.createParameterDescription2 checks for default_value==null condition 487 param = GSXML.createParameterDescription2( this.doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, default_value, fields, field_names);490 param = GSXML.createParameterDescription2(doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, default_value, fields, field_names); 488 491 489 492 } … … 494 497 String[] val_texts = { getTextString("param." + FIELD_COMBINE_PARAM + "." + FIELD_COMBINE_PARAM_AND, lang), getTextString("param." + FIELD_COMBINE_PARAM + "." + FIELD_COMBINE_PARAM_OR, lang), getTextString("param." + FIELD_COMBINE_PARAM + "." + FIELD_COMBINE_PARAM_NOT, lang) }; 495 498 496 param = GSXML.createParameterDescription( this.doc, FIELD_COMBINE_PARAM, "", GSXML.PARAM_TYPE_ENUM_SINGLE, param_default, vals, val_texts);499 param = GSXML.createParameterDescription(doc, FIELD_COMBINE_PARAM, "", GSXML.PARAM_TYPE_ENUM_SINGLE, param_default, vals, val_texts); 497 500 param.setAttribute(GSXML.PARAM_IGNORE_POS_ATT, "0"); 498 501 } … … 596 599 597 600 // Create a new (empty) result message 598 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 601 Document result_doc = XMLConverter.newDOM(); 602 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 599 603 result.setAttribute(GSXML.FROM_ATT, service_name); 600 604 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 652 656 // Create a metadata list to store information about the query results 653 657 // should we be using metadataList? or something else? 654 Element metadata_list = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);658 Element metadata_list = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 655 659 result.appendChild(metadata_list); 656 660 … … 658 662 long totalDocs = numDocsMatched(query_result); 659 663 660 GSXML.addMetadata( this.doc,metadata_list, "numDocsMatched", "" + totalDocs);664 GSXML.addMetadata(metadata_list, "numDocsMatched", "" + totalDocs); 661 665 662 666 // Create a document list to store the matching documents, and add them … … 675 679 } 676 680 } 677 GSXML.addMetadata( this.doc,metadata_list, "numDocsReturned", "" + docs_returned);681 GSXML.addMetadata(metadata_list, "numDocsReturned", "" + docs_returned); 678 682 679 683 // add a metadata item to specify what actual query was done - eg if stuff was stripped out etc. and then we can use the query later, cos we don't know which parameter was the query 680 GSXML.addMetadata( this.doc,metadata_list, "query", query);684 GSXML.addMetadata(metadata_list, "query", query); 681 685 if (docs.length > 0) 682 686 { 683 Element document_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);687 Element document_list = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 684 688 result.appendChild(document_list); 685 689 for (int d = 0; d < docs.length; d++) 686 690 { 687 691 String doc_id = internalNum2OID(docs[d]); 688 Element doc_node = createDocNode( doc_id, doc_ranks[d]);692 Element doc_node = createDocNode(result_doc, doc_id, doc_ranks[d]); 689 693 document_list.appendChild(doc_node); 690 694 } … … 692 696 693 697 // Create a term list to store the term information, and add it 694 Element term_list = this.doc.createElement(GSXML.TERM_ELEM + GSXML.LIST_MODIFIER);698 Element term_list = result_doc.createElement(GSXML.TERM_ELEM + GSXML.LIST_MODIFIER); 695 699 result.appendChild(term_list); 696 700 addTermInfo(term_list, params, query_result); … … 701 705 if(facets != null) 702 706 { 703 Element facet_list = this.doc.createElement(GSXML.FACET_ELEM + GSXML.LIST_MODIFIER);707 Element facet_list = result_doc.createElement(GSXML.FACET_ELEM + GSXML.LIST_MODIFIER); 704 708 result.appendChild(facet_list); 705 709 706 710 for(FacetWrapper currentFacet : facets) 707 711 { 708 Element facet_elem = this.doc.createElement(GSXML.FACET_ELEM);712 Element facet_elem = result_doc.createElement(GSXML.FACET_ELEM); 709 713 facet_elem.setAttribute(GSXML.NAME_ATT, currentFacet.getName()); 710 714 facet_list.appendChild(facet_elem); … … 717 721 if(countValue > 0) 718 722 { 719 Element count_elem = this.doc.createElement(GSXML.COUNT_ELEM);723 Element count_elem = result_doc.createElement(GSXML.COUNT_ELEM); 720 724 count_elem.setAttribute(GSXML.NAME_ATT, countName); 721 725 count_elem.setTextContent("" + countValue); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractGS2TextSearch.java
r28181 r28966 108 108 109 109 // replaces default AbstractSearch version with one tied to database 110 gs_doc_db = new BasicDocumentDatabase( this.doc,database_type, this.site_home, this.cluster_name, this.index_stem);110 gs_doc_db = new BasicDocumentDatabase(database_type, this.site_home, this.cluster_name, this.index_stem); 111 111 if (!gs_doc_db.isValid()) 112 112 { -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractSearch.java
r28181 r28966 28 28 import org.greenstone.gsdl3.util.GSPath; 29 29 import org.greenstone.gsdl3.util.GSXML; 30 import org.w3c.dom.Document; 30 31 import org.w3c.dom.Element; 31 32 import org.w3c.dom.NodeList; … … 106 107 // will be added in if the list is requested. 107 108 108 Element tq_service = this.d oc.createElement(GSXML.SERVICE_ELEM);109 Element tq_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 109 110 tq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 110 111 tq_service.setAttribute(GSXML.NAME_ATT, QUERY_SERVICE); … … 142 143 if (format != null) 143 144 { 144 this.format_info_map.put(QUERY_SERVICE, this.d oc.importNode(format, true));145 this.format_info_map.put(QUERY_SERVICE, this.desc_doc.importNode(format, true)); 145 146 } 146 147 … … 163 164 164 165 // Base line for document (might be overriden by sub-classes) 165 gs_doc = new BasicDocument(this.d oc, this.default_document_type);166 gs_doc = new BasicDocument(this.default_document_type); 166 167 167 168 return true; … … 184 185 * other services they need to provide their own descriptions 185 186 */ 186 protected Element getServiceDescription(String service, String lang, String subset)187 protected Element getServiceDescription(Document doc, String service, String lang, String subset) 187 188 { 188 189 if (!service.equals(QUERY_SERVICE)) … … 191 192 } 192 193 193 Element tq_service = this.doc.createElement(GSXML.SERVICE_ELEM);194 Element tq_service = doc.createElement(GSXML.SERVICE_ELEM); 194 195 tq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 195 196 tq_service.setAttribute(GSXML.NAME_ATT, QUERY_SERVICE); 196 197 if (subset == null || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER)) 197 198 { 198 tq_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_NAME, getServiceName(QUERY_SERVICE, lang)));199 tq_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_SUBMIT, getServiceSubmit(QUERY_SERVICE, lang)));200 tq_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getServiceDescription(QUERY_SERVICE, lang)));199 tq_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_NAME, getServiceName(QUERY_SERVICE, lang))); 200 tq_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_SUBMIT, getServiceSubmit(QUERY_SERVICE, lang))); 201 tq_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getServiceDescription(QUERY_SERVICE, lang))); 201 202 } 202 203 if (subset == null || subset.equals(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER)) 203 204 { 204 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);205 Element param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 205 206 addCustomQueryParams(param_list, lang); 206 207 addStandardQueryParams(param_list, lang); … … 282 283 protected boolean createParameterChain(String name, Element param_list, String lang, String default_value) 283 284 { 285 Document doc = param_list.getOwnerDocument(); 284 286 Element param = null; 285 287 String param_default = default_value; … … 290 292 if (name.equals(QUERY_PARAM) || name.equals(RAW_PARAM)) 291 293 { 292 param = GSXML.createParameterDescription( this.doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_STRING, param_default, null, null);294 param = GSXML.createParameterDescription(doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_STRING, param_default, null, null); 293 295 param_list.appendChild(param); 294 296 return true; … … 309 311 param_default = this.default_index; 310 312 } 311 param = GSXML.createParameterDescription2( this.doc, INDEX_PARAM, getTextString("param." + INDEX_PARAM, lang), param_type, param_default, index_ids, index_names);313 param = GSXML.createParameterDescription2(doc, INDEX_PARAM, getTextString("param." + INDEX_PARAM, lang), param_type, param_default, index_ids, index_names); 312 314 param_list.appendChild(param); 313 315 return true; … … 315 317 else if (name.equals(MAXDOCS_PARAM)) 316 318 { 317 param = GSXML.createParameterDescription( this.doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_INTEGER, param_default, null, null);319 param = GSXML.createParameterDescription(doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_INTEGER, param_default, null, null); 318 320 param_list.appendChild(param); 319 321 return true; … … 321 323 else if (name.equals(HITS_PER_PAGE_PARAM)) 322 324 { 323 param = GSXML.createParameterDescription( this.doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_INTEGER, param_default, null, null);325 param = GSXML.createParameterDescription(doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_INTEGER, param_default, null, null); 324 326 param_list.appendChild(param); 325 327 return true; … … 328 330 { 329 331 // start page - set to 1 for the search page 330 param = GSXML.createParameterDescription( this.doc, START_PAGE_PARAM, "", GSXML.PARAM_TYPE_INVISIBLE, param_default, null, null);332 param = GSXML.createParameterDescription(doc, START_PAGE_PARAM, "", GSXML.PARAM_TYPE_INVISIBLE, param_default, null, null); 331 333 param_list.appendChild(param); 332 334 return true; … … 343 345 * rank='0.23'/> 344 346 */ 345 protected Element createDocNode(String node_id, String rank)346 { 347 return this.gs_doc.createDocNode(node_id, rank);347 protected Element createDocNode(Document doc, String node_id, String rank) 348 { 349 return this.gs_doc.createDocNode(doc, node_id, rank); 348 350 } 349 351 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractTextSearch.java
r28181 r28966 24 24 import org.apache.log4j.Logger; 25 25 import org.greenstone.gsdl3.util.GSXML; 26 27 import org.w3c.dom.Document; 26 28 import org.w3c.dom.Element; 27 29 … … 90 92 protected boolean createParameterChain(String name, Element param_list, String lang, String default_value) 91 93 { 94 Document doc = param_list.getOwnerDocument(); 92 95 Element param = null; 93 96 String param_default = default_value; … … 120 123 param_default = this.default_index_subcollection; 121 124 } 122 param = GSXML.createParameterDescription2( this.doc, INDEX_SUBCOLLECTION_PARAM, getTextString("param." + INDEX_SUBCOLLECTION_PARAM, lang), param_type, param_default, index_sub_ids, index_sub_names);125 param = GSXML.createParameterDescription2(doc, INDEX_SUBCOLLECTION_PARAM, getTextString("param." + INDEX_SUBCOLLECTION_PARAM, lang), param_type, param_default, index_sub_ids, index_sub_names); 123 126 param_list.appendChild(param); 124 127 return true; … … 141 144 param_default = this.default_index_language; 142 145 } 143 param = GSXML.createParameterDescription2( this.doc, INDEX_LANGUAGE_PARAM, getTextString("param." + INDEX_LANGUAGE_PARAM, lang), param_type, param_default, index_lang_ids, index_lang_names);146 param = GSXML.createParameterDescription2(doc, INDEX_LANGUAGE_PARAM, getTextString("param." + INDEX_LANGUAGE_PARAM, lang), param_type, param_default, index_lang_ids, index_lang_names); 144 147 param_list.appendChild(param); 145 148 return true; … … 148 151 String[] bool_ops = {"0", "1"}; 149 152 String[] bool_texts = {getTextString("param.boolean.off", lang),getTextString("param.boolean.on", lang)}; 150 param = GSXML.createParameterDescription( this.doc, name, getTextString("param."+name, lang), GSXML.PARAM_TYPE_BOOLEAN, param_default, bool_ops, bool_texts);153 param = GSXML.createParameterDescription(doc, name, getTextString("param."+name, lang), GSXML.PARAM_TYPE_BOOLEAN, param_default, bool_ops, bool_texts); 151 154 param_list.appendChild(param); 152 155 return true; … … 155 158 String[] vals = {MATCH_PARAM_SOME, MATCH_PARAM_ALL }; 156 159 String[] val_texts = {getTextString("param."+MATCH_PARAM+"."+MATCH_PARAM_SOME, lang), getTextString("param."+MATCH_PARAM+"."+MATCH_PARAM_ALL, lang)}; 157 param = GSXML.createParameterDescription( this.doc, MATCH_PARAM, getTextString("param."+MATCH_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, param_default, vals, val_texts);160 param = GSXML.createParameterDescription(doc, MATCH_PARAM, getTextString("param."+MATCH_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, param_default, vals, val_texts); 158 161 param_list.appendChild(param); 159 162 return true; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/ArchiveIO.java
r25635 r28966 29 29 import org.greenstone.gsdl3.util.SimpleCollectionDatabase; 30 30 import org.greenstone.gsdl3.util.UserContext; 31 31 import org.greenstone.gsdl3.util.XMLConverter; 32 33 import org.w3c.dom.Document; 32 34 import org.w3c.dom.Element; 33 35 import org.w3c.dom.NodeList; … … 72 74 for (int i = 0; i < _services.length; i++) 73 75 { 74 Element service = this.d oc.createElement(GSXML.SERVICE_ELEM);76 Element service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 75 77 service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 76 78 service.setAttribute(GSXML.NAME_ATT, _services[i]); … … 78 80 } 79 81 80 _GSDM = new GSDocumentModel(this.site_home, this. doc, this.router);82 _GSDM = new GSDocumentModel(this.site_home, this.router); 81 83 82 84 return true; 83 85 } 84 86 85 protected Element getServiceDescription(String service_id, String lang, String subset)87 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 86 88 { 87 89 for (int i = 0; i < _services.length; i++) … … 89 91 if (service_id.equals(_services[i])) 90 92 { 91 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);93 Element service_elem = doc.createElement(GSXML.SERVICE_ELEM); 92 94 service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 93 95 service_elem.setAttribute(GSXML.NAME_ATT, _services[i]); … … 106 108 { 107 109 // Create a new (empty) result message 108 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 110 Document result_doc = XMLConverter.newDOM(); 111 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 109 112 result.setAttribute(GSXML.FROM_ATT, ARCHIVE_GET_DOCUMENT_FILE_PATH); 110 113 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 116 119 if (param_list == null) 117 120 { 118 GSXML.addError( this.doc,result, ARCHIVE_GET_DOCUMENT_FILE_PATH + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);121 GSXML.addError(result, ARCHIVE_GET_DOCUMENT_FILE_PATH + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 119 122 return result; 120 123 } … … 126 129 String filePath = _GSDM.archiveGetDocumentFilePath(oid, collection, userContext); 127 130 128 Element metadataList = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);129 metadataList.appendChild(GSXML.createMetadataElement( this.doc, "docfilepath", filePath)); //TODO: Replace "docfilepath" with a constant131 Element metadataList = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 132 metadataList.appendChild(GSXML.createMetadataElement(result_doc, "docfilepath", filePath)); //TODO: Replace "docfilepath" with a constant 130 133 result.appendChild(metadataList); 131 134 … … 136 139 { 137 140 //Create a new (empty) result message 138 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 141 Document result_doc = XMLConverter.newDOM(); 142 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 139 143 result.setAttribute(GSXML.FROM_ATT, ARCHIVE_GET_SOURCE_FILE_OID); 140 144 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 146 150 if (param_list == null) 147 151 { 148 GSXML.addError( this.doc,result, ARCHIVE_GET_SOURCE_FILE_OID + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);152 GSXML.addError(result, ARCHIVE_GET_SOURCE_FILE_OID + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 149 153 return result; 150 154 } … … 160 164 } 161 165 162 Element metadataList = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);163 metadataList.appendChild(GSXML.createMetadataElement( this.doc, GSXML.NODE_ID_ATT, oid));166 Element metadataList = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 167 metadataList.appendChild(GSXML.createMetadataElement(result_doc, GSXML.NODE_ID_ATT, oid)); 164 168 result.appendChild(metadataList); 165 169 … … 170 174 { 171 175 //Create a new (empty) result message 172 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 176 Document result_doc = XMLConverter.newDOM(); 177 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 173 178 result.setAttribute(GSXML.FROM_ATT, ARCHIVE_CHECK_DOCUMENT_OR_SECTION_EXISTS); 174 179 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 180 185 if (param_list == null) 181 186 { 182 GSXML.addError( this.doc,result, ARCHIVE_CHECK_DOCUMENT_OR_SECTION_EXISTS + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);187 GSXML.addError(result, ARCHIVE_CHECK_DOCUMENT_OR_SECTION_EXISTS + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 183 188 return result; 184 189 } … … 202 207 { 203 208 //Create a new (empty) result message 204 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 209 Document result_doc = XMLConverter.newDOM(); 210 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 205 211 result.setAttribute(GSXML.FROM_ATT, ARCHIVE_WRITE_ENTRY_TO_DATABASE); 206 212 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 212 218 if (param_list == null) 213 219 { 214 GSXML.addError( this.doc,result, ARCHIVE_WRITE_ENTRY_TO_DATABASE + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);220 GSXML.addError(result, ARCHIVE_WRITE_ENTRY_TO_DATABASE + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 215 221 return result; 216 222 } … … 262 268 { 263 269 //Create a new (empty) result message 264 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 270 Document result_doc = XMLConverter.newDOM(); 271 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 265 272 result.setAttribute(GSXML.FROM_ATT, ARCHIVE_REMOVE_ENTRY_FROM_DATABASE); 266 273 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 272 279 if (param_list == null) 273 280 { 274 GSXML.addError( this.doc,result, ARCHIVE_REMOVE_ENTRY_FROM_DATABASE + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);281 GSXML.addError(result, ARCHIVE_REMOVE_ENTRY_FROM_DATABASE + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 275 282 return result; 276 283 } … … 305 312 { 306 313 //Create a new (empty) result message 307 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 314 Document result_doc = XMLConverter.newDOM(); 315 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 308 316 result.setAttribute(GSXML.FROM_ATT, ARCHIVE_GET_ASSOCIATED_IMPORT_FILES); 309 317 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 315 323 if (param_list == null) 316 324 { 317 GSXML.addError( this.doc,result, ARCHIVE_GET_ASSOCIATED_IMPORT_FILES + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);325 GSXML.addError(result, ARCHIVE_GET_ASSOCIATED_IMPORT_FILES + ": Missing " + GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 318 326 return result; 319 327 } … … 329 337 } 330 338 331 Element metadataList = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);332 metadataList.appendChild(GSXML.createMetadataElement( this.doc, "srcfile", assocFiles.get(0)));339 Element metadataList = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 340 metadataList.appendChild(GSXML.createMetadataElement(result_doc, "srcfile", assocFiles.get(0))); 333 341 334 342 for (int i = 1; i < assocFiles.size(); i++) 335 343 { 336 metadataList.appendChild(GSXML.createMetadataElement( this.doc, "assocfile", assocFiles.get(i)));344 metadataList.appendChild(GSXML.createMetadataElement(result_doc, "assocfile", assocFiles.get(i))); 337 345 } 338 346 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/ArchiveRetrieve.java
r25635 r28966 26 26 import org.greenstone.gsdl3.util.SimpleCollectionDatabase; 27 27 import org.greenstone.gsdl3.util.UserContext; 28 28 import org.greenstone.gsdl3.util.XMLConverter; 29 30 import org.w3c.dom.Document; 29 31 import org.w3c.dom.Element; 30 32 … … 57 59 this.config_info = info; 58 60 59 Element documentFilePathRetrieveService = this.d oc.createElement(GSXML.SERVICE_ELEM);61 Element documentFilePathRetrieveService = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 60 62 documentFilePathRetrieveService.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 61 63 documentFilePathRetrieveService.setAttribute(GSXML.NAME_ATT, DOCUMENT_FILE_PATH_RETRIEVE_SERVICE); 62 64 this.short_service_info.appendChild(documentFilePathRetrieveService); 63 65 64 Element associatedImportFilesRetrieveService = this.d oc.createElement(GSXML.SERVICE_ELEM);66 Element associatedImportFilesRetrieveService = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 65 67 associatedImportFilesRetrieveService.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 66 68 associatedImportFilesRetrieveService.setAttribute(GSXML.NAME_ATT, ASSOCIATED_IMPORT_FILES_RETRIEVE_SERVICE); 67 69 this.short_service_info.appendChild(associatedImportFilesRetrieveService); 68 70 69 Element sourceFileDocIDRetrieveService = this.d oc.createElement(GSXML.SERVICE_ELEM);71 Element sourceFileDocIDRetrieveService = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 70 72 sourceFileDocIDRetrieveService.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 71 73 sourceFileDocIDRetrieveService.setAttribute(GSXML.NAME_ATT, SOURCE_FILE_OID_RETRIEVE); … … 75 77 } 76 78 77 protected Element getServiceDescription(String service_id, String lang, String subset)79 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 78 80 { 79 81 if (service_id.equals(DOCUMENT_FILE_PATH_RETRIEVE_SERVICE)) 80 82 { 81 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);83 Element service_elem = doc.createElement(GSXML.SERVICE_ELEM); 82 84 service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 83 85 service_elem.setAttribute(GSXML.NAME_ATT, DOCUMENT_FILE_PATH_RETRIEVE_SERVICE); … … 86 88 else if (service_id.equals(ASSOCIATED_IMPORT_FILES_RETRIEVE_SERVICE)) 87 89 { 88 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);90 Element service_elem = doc.createElement(GSXML.SERVICE_ELEM); 89 91 service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 90 92 service_elem.setAttribute(GSXML.NAME_ATT, ASSOCIATED_IMPORT_FILES_RETRIEVE_SERVICE); … … 93 95 else if (service_id.equals(SOURCE_FILE_OID_RETRIEVE)) 94 96 { 95 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);97 Element service_elem = doc.createElement(GSXML.SERVICE_ELEM); 96 98 service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 97 99 service_elem.setAttribute(GSXML.NAME_ATT, SOURCE_FILE_OID_RETRIEVE); … … 104 106 { 105 107 // Create a new (empty) result message 106 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 108 Document result_doc = XMLConverter.newDOM(); 109 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 107 110 result.setAttribute(GSXML.FROM_ATT, DOCUMENT_FILE_PATH_RETRIEVE_SERVICE); 108 111 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 113 116 Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 114 117 if (param_list == null) { 115 GSXML.addError( this.doc,result, "DocumentFilePathRetrieve: missing "+ GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);118 GSXML.addError(result, "DocumentFilePathRetrieve: missing "+ GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 116 119 return result; 117 120 } … … 130 133 "doc.xml"; 131 134 132 Element metadataList = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);133 metadataList.appendChild( createMetadataElement("docfilepath", docFilePath));135 Element metadataList = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 136 metadataList.appendChild(GSXML.createMetadataElement(result_doc, "docfilepath", docFilePath)); 134 137 result.appendChild(metadataList); 135 138 … … 140 143 { 141 144 //Create a new (empty) result message 142 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 145 Document result_doc = XMLConverter.newDOM(); 146 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 143 147 result.setAttribute(GSXML.FROM_ATT, SOURCE_FILE_OID_RETRIEVE); 144 148 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 150 154 if (param_list == null) 151 155 { 152 GSXML.addError( this.doc,result, "DocumentFilePathRetrieve: missing "+ GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);156 GSXML.addError(result, "DocumentFilePathRetrieve: missing "+ GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 153 157 return result; 154 158 } … … 201 205 String oid = info.getInfo("oid"); 202 206 203 Element metadataList = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);204 metadataList.appendChild( createMetadataElement("oid", oid));207 Element metadataList = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 208 metadataList.appendChild(GSXML.createMetadataElement(result_doc, "oid", oid)); 205 209 result.appendChild(metadataList); 206 210 … … 211 215 { 212 216 //Create a new (empty) result message 213 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 217 Document result_doc = XMLConverter.newDOM(); 218 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 214 219 result.setAttribute(GSXML.FROM_ATT, ASSOCIATED_IMPORT_FILES_RETRIEVE_SERVICE); 215 220 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 221 226 if (param_list == null) 222 227 { 223 GSXML.addError( this.doc,result, "AssociatedImportFilesRetrieve: missing "+ GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX);228 GSXML.addError(result, "AssociatedImportFilesRetrieve: missing "+ GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER, GSXML.ERROR_TYPE_SYNTAX); 224 229 return result; 225 230 } … … 272 277 Vector<String> data = info.getMultiInfo("assoc-file"); 273 278 274 Element metadataList = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);275 metadataList.appendChild( createMetadataElement("srcfile", srcFile));279 Element metadataList = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 280 metadataList.appendChild(GSXML.createMetadataElement(result_doc, "srcfile", srcFile)); 276 281 277 282 for (int i = 0; i < data.size(); i++) 278 283 { 279 metadataList.appendChild(createMetadataElement("assocfile", data.get(i)));284 metadataList.appendChild(GSXML.createMetadataElement(result_doc, "assocfile", data.get(i))); 280 285 } 281 286 … … 285 290 } 286 291 287 public Element createMetadataElement(String name, String value)288 {289 Element metaElem = this.doc.createElement(GSXML.METADATA_ELEM);290 metaElem.setAttribute("name", name);291 metaElem.setAttribute("value", value);292 return metaElem;293 }294 292 295 293 public String getAssocFilePathFromDocID(String oid, String collection, UserContext userContext) 296 294 { 297 Element mr_query_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 298 Element mr_query_request = GSXML.createBasicRequest (this.doc, GSXML.REQUEST_TYPE_PAGE, collection + "/DocumentMetadataRetrieve", userContext); 295 Document doc = XMLConverter.newDOM(); 296 Element mr_query_message = doc.createElement(GSXML.MESSAGE_ELEM); 297 Element mr_query_request = GSXML.createBasicRequest (doc, GSXML.REQUEST_TYPE_PAGE, collection + "/DocumentMetadataRetrieve", userContext); 299 298 mr_query_message.appendChild(mr_query_request); 300 299 301 Element paramList = this.doc.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);302 paramList.appendChild( createMetadataElement("metadata", "assocfilepath"));300 Element paramList = doc.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 301 paramList.appendChild(GSXML.createMetadataElement(doc, "metadata", "assocfilepath")); 303 302 304 303 mr_query_request.appendChild(paramList); 305 304 306 Element docListElem = this.doc.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);307 Element docElem = this.doc.createElement(GSXML.DOC_NODE_ELEM);305 Element docListElem = doc.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); 306 Element docElem = doc.createElement(GSXML.DOC_NODE_ELEM); 308 307 docElem.setAttribute(GSXML.NODE_ID_ATT, oid); 309 308 docListElem.appendChild(docElem); … … 324 323 { 325 324 //Find out what kind of database we have 326 Element dbTypeMessage = this.doc.createElement(GSXML.MESSAGE_ELEM); 327 Element dbTypeRequest = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_DESCRIBE, collection, userContext); 325 Document doc = XMLConverter.newDOM(); 326 Element dbTypeMessage = doc.createElement(GSXML.MESSAGE_ELEM); 327 Element dbTypeRequest = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_DESCRIBE, collection, userContext); 328 328 dbTypeMessage.appendChild(dbTypeRequest); 329 329 Element dbTypeResponse = (Element)this.router.process(dbTypeMessage); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/Authentication.java
r28958 r28966 19 19 import org.greenstone.gsdl3.util.UserQueryResult; 20 20 import org.greenstone.gsdl3.util.UserTermInfo; 21 import org.greenstone.gsdl3.util.XMLConverter; 21 22 import org.greenstone.util.GlobalProperties; 23 24 import org.w3c.dom.Document; 22 25 import org.w3c.dom.Element; 23 26 import org.w3c.dom.NodeList; … … 168 171 169 172 // set up Authentication service info - for now just has name and type 170 Element authentication_service = this.d oc.createElement(GSXML.SERVICE_ELEM);173 Element authentication_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 171 174 authentication_service.setAttribute(GSXML.TYPE_ATT, "authen"); 172 175 authentication_service.setAttribute(GSXML.NAME_ATT, AUTHENTICATION_SERVICE); 173 176 this.short_service_info.appendChild(authentication_service); 174 177 175 Element getUserInformation_service = this.d oc.createElement(GSXML.SERVICE_ELEM);178 Element getUserInformation_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 176 179 getUserInformation_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 177 180 getUserInformation_service.setAttribute(GSXML.NAME_ATT, GET_USER_INFORMATION_SERVICE); 178 181 this.short_service_info.appendChild(getUserInformation_service); 179 182 180 Element changeEditMode_service = this.d oc.createElement(GSXML.SERVICE_ELEM);183 Element changeEditMode_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 181 184 changeEditMode_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 182 185 changeEditMode_service.setAttribute(GSXML.NAME_ATT, CHANGE_USER_EDIT_MODE_SERVICE); 183 186 this.short_service_info.appendChild(changeEditMode_service); 184 187 185 Element remoteAuthentication_service = this.d oc.createElement(GSXML.SERVICE_ELEM);188 Element remoteAuthentication_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 186 189 remoteAuthentication_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 187 190 remoteAuthentication_service.setAttribute(GSXML.NAME_ATT, REMOTE_AUTHENTICATION_SERVICE); … … 214 217 } 215 218 216 protected Element getServiceDescription(String service_id, String lang, String subset)217 { 218 219 Element authen_service = this.doc.createElement(GSXML.SERVICE_ELEM);219 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 220 { 221 222 Element authen_service = doc.createElement(GSXML.SERVICE_ELEM); 220 223 221 224 if (service_id.equals(AUTHENTICATION_SERVICE)) … … 246 249 if (service_id.equals(AUTHENTICATION_SERVICE) && (subset == null || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER))) 247 250 { 248 authen_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_NAME, getServiceName(service_id, lang)));249 authen_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getServiceDescription(service_id, lang)));251 authen_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_NAME, getServiceName(service_id, lang))); 252 authen_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getServiceDescription(service_id, lang))); 250 253 } 251 254 return authen_service; … … 270 273 { 271 274 // Create a new (empty) result message 272 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 275 Document result_doc = XMLConverter.newDOM(); 276 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 273 277 274 278 result.setAttribute(GSXML.FROM_ATT, CHANGE_USER_EDIT_MODE_SERVICE); … … 278 282 if (paramList == null) 279 283 { 280 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_REQUEST_HAS_NO_PARAM_LIST));284 GSXML.addError(result, _errorMessageMap.get(ERROR_REQUEST_HAS_NO_PARAM_LIST)); 281 285 return result; 282 286 } … … 362 366 } 363 367 } 364 365 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);368 Document result_doc = XMLConverter.newDOM(); 369 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 366 370 result.setAttribute(GSXML.FROM_ATT, REMOTE_AUTHENTICATION_SERVICE); 367 371 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 368 Element s = GSXML.createTextElement( this.doc, GSXML.STATUS_ELEM, message);372 Element s = GSXML.createTextElement(result_doc, GSXML.STATUS_ELEM, message); 369 373 result.appendChild(s); 370 374 return result; … … 374 378 { 375 379 // Create a new (empty) result message 376 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 380 Document result_doc = XMLConverter.newDOM(); 381 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 377 382 378 383 result.setAttribute(GSXML.FROM_ATT, GET_USER_INFORMATION_SERVICE); … … 382 387 if (paramList == null) 383 388 { 384 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_REQUEST_HAS_NO_PARAM_LIST));389 GSXML.addError(result, _errorMessageMap.get(ERROR_REQUEST_HAS_NO_PARAM_LIST)); 385 390 return result; 386 391 } … … 392 397 if (username == null) 393 398 { 394 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_USERNAME_NOT_SPECIFIED));399 GSXML.addError(result, _errorMessageMap.get(ERROR_USERNAME_NOT_SPECIFIED)); 395 400 return result; 396 401 } … … 405 410 if (terms.size() == 0) 406 411 { 407 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_REQUESTED_USER_NOT_FOUND));412 GSXML.addError(result, _errorMessageMap.get(ERROR_REQUESTED_USER_NOT_FOUND)); 408 413 return result; 409 414 } 410 415 411 416 UserTermInfo userInfo = terms.get(0); 412 Element userInfoList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);417 Element userInfoList = result_doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 413 418 result.appendChild(userInfoList); 414 419 415 Element usernameField = GSXML.createParameter( this.doc, "username", userInfo.username);416 Element passwordField = GSXML.createParameter( this.doc, "password", userInfo.password);417 Element groupsField = GSXML.createParameter( this.doc, "groups", userInfo.groups);418 Element accountStatusField = GSXML.createParameter( this.doc, "accountstatus", userInfo.accountstatus);419 Element commentField = GSXML.createParameter( this.doc, "comment", userInfo.comment);420 Element usernameField = GSXML.createParameter(result_doc, "username", userInfo.username); 421 Element passwordField = GSXML.createParameter(result_doc, "password", userInfo.password); 422 Element groupsField = GSXML.createParameter(result_doc, "groups", userInfo.groups); 423 Element accountStatusField = GSXML.createParameter(result_doc, "accountstatus", userInfo.accountstatus); 424 Element commentField = GSXML.createParameter(result_doc, "comment", userInfo.comment); 420 425 421 426 if (editEnabled != null) 422 427 { 423 Element editEnabledElem = GSXML.createParameter( this.doc, "editEnabled", editEnabled);428 Element editEnabledElem = GSXML.createParameter(result_doc, "editEnabled", editEnabled); 424 429 userInfoList.appendChild(editEnabledElem); 425 430 } … … 441 446 442 447 // Create a new (empty) result message 443 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 448 Document result_doc = XMLConverter.newDOM(); 449 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 444 450 result.setAttribute(GSXML.FROM_ATT, AUTHENTICATION_SERVICE); 445 451 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 446 452 447 453 // Create an Authentication node put into the result 448 Element authenNode = this.doc.createElement(GSXML.AUTHEN_NODE_ELEM);454 Element authenNode = result_doc.createElement(GSXML.AUTHEN_NODE_ELEM); 449 455 result.appendChild(authenNode); 450 result.appendChild(getCollectList( this.site_home + File.separatorChar + "collect"));456 result.appendChild(getCollectList(result_doc, this.site_home + File.separatorChar + "collect")); 451 457 452 458 // Create a service node added into the Authentication node 453 Element serviceNode = this.doc.createElement(GSXML.SERVICE_ELEM);459 Element serviceNode = result_doc.createElement(GSXML.SERVICE_ELEM); 454 460 authenNode.appendChild(serviceNode); 455 461 … … 459 465 { 460 466 serviceNode.setAttribute("operation", LOGIN); 461 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_REQUEST_HAS_NO_PARAM_LIST));467 GSXML.addError(result, _errorMessageMap.get(ERROR_REQUEST_HAS_NO_PARAM_LIST)); 462 468 return result; // Return the empty result 463 469 } … … 473 479 { 474 480 serviceNode.setAttribute("operation", LOGIN); 475 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_NOT_LOGGED_IN));481 GSXML.addError(result, _errorMessageMap.get(ERROR_NOT_LOGGED_IN)); 476 482 return result; 477 483 } … … 486 492 { 487 493 serviceNode.setAttribute("operation", LOGIN); 488 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_NOT_LOGGED_IN));494 GSXML.addError(result, _errorMessageMap.get(ERROR_NOT_LOGGED_IN)); 489 495 return result; 490 496 } … … 493 499 { 494 500 serviceNode.setAttribute("operation", LOGIN); 495 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_ADMIN_NOT_LOGGED_IN));501 GSXML.addError(result, _errorMessageMap.get(ERROR_ADMIN_NOT_LOGGED_IN)); 496 502 return result; 497 503 } … … 502 508 if (error != NO_ERROR) 503 509 { 504 GSXML.addError( this.doc,result, _errorMessageMap.get(error));510 GSXML.addError(result, _errorMessageMap.get(error)); 505 511 } 506 512 } … … 518 524 if ((error = checkUsername(newUsername)) != NO_ERROR) 519 525 { 520 GSXML.addError( this.doc,result, _errorMessageMap.get(error));526 GSXML.addError(result, _errorMessageMap.get(error)); 521 527 return result; 522 528 } … … 525 531 if ((error = checkPassword(newPassword)) != NO_ERROR) 526 532 { 527 GSXML.addError( this.doc,result, _errorMessageMap.get(error));533 GSXML.addError(result, _errorMessageMap.get(error)); 528 534 return result; 529 535 } … … 535 541 { 536 542 serviceNode.setAttribute("operation", ADD_USER); 537 GSXML.addError( this.doc,result, _errorMessageMap.get(error));543 GSXML.addError(result, _errorMessageMap.get(error)); 538 544 } 539 545 else … … 553 559 if ((error = checkUsername(newUsername)) != NO_ERROR) 554 560 { 555 GSXML.addError( this.doc,result, _errorMessageMap.get(error));561 GSXML.addError(result, _errorMessageMap.get(error)); 556 562 return result; 557 563 } … … 560 566 if ((error = checkPassword(newPassword)) != NO_ERROR) 561 567 { 562 GSXML.addError( this.doc,result, _errorMessageMap.get(error));568 GSXML.addError(result, _errorMessageMap.get(error)); 563 569 return result; 564 570 } … … 584 590 { 585 591 serviceNode.setAttribute("operation", REGISTER); 586 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_CAPTCHA_MISSING));592 GSXML.addError(result, _errorMessageMap.get(ERROR_CAPTCHA_MISSING)); 587 593 return result; 588 594 } … … 593 599 { 594 600 serviceNode.setAttribute("operation", REGISTER); 595 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_CAPTCHA_DOES_NOT_MATCH));601 GSXML.addError(result, _errorMessageMap.get(ERROR_CAPTCHA_DOES_NOT_MATCH)); 596 602 return result; 597 603 } … … 606 612 { 607 613 serviceNode.setAttribute("operation", REGISTER); 608 GSXML.addError( this.doc,result, _errorMessageMap.get(error));614 GSXML.addError(result, _errorMessageMap.get(error)); 609 615 } 610 616 } … … 623 629 if ((error = checkUsername(newUsername)) != NO_ERROR) 624 630 { 625 GSXML.addError( this.doc,result, _errorMessageMap.get(error));631 GSXML.addError(result, _errorMessageMap.get(error)); 626 632 return result; 627 633 } … … 636 642 if ((error = checkPassword(newPassword)) != NO_ERROR) 637 643 { 638 GSXML.addError( this.doc,result, _errorMessageMap.get(error));644 GSXML.addError(result, _errorMessageMap.get(error)); 639 645 return result; 640 646 } … … 654 660 { 655 661 serviceNode.setAttribute("operation", EDIT_USER); 656 GSXML.addError( this.doc,result, _errorMessageMap.get(error));662 GSXML.addError(result, _errorMessageMap.get(error)); 657 663 } 658 664 return result; … … 663 669 { 664 670 serviceNode.setAttribute("operation", EDIT_USER); 665 GSXML.addError( this.doc,result, _errorMessageMap.get(error));671 GSXML.addError(result, _errorMessageMap.get(error)); 666 672 } 667 673 else … … 684 690 addUserInformationToNode(previousUsername, serviceNode); 685 691 serviceNode.setAttribute("operation", ACCOUNT_SETTINGS); 686 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_USER_ALREADY_EXISTS));692 GSXML.addError(result, _errorMessageMap.get(ERROR_USER_ALREADY_EXISTS)); 687 693 return result; 688 694 } … … 698 704 addUserInformationToNode(previousUsername, serviceNode); 699 705 serviceNode.setAttribute("operation", ACCOUNT_SETTINGS); 700 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_INCORRECT_PASSWORD), "Incorrect Password");706 GSXML.addError(result, _errorMessageMap.get(ERROR_INCORRECT_PASSWORD), "Incorrect Password"); 701 707 return result; 702 708 } … … 706 712 if ((error = checkPassword(newPassword)) != NO_ERROR) 707 713 { 708 GSXML.addError( this.doc,result, _errorMessageMap.get(error));714 GSXML.addError(result, _errorMessageMap.get(error)); 709 715 return result; 710 716 } … … 721 727 if ((error = checkUsername(newUsername)) != NO_ERROR) 722 728 { 723 GSXML.addError( this.doc,result, _errorMessageMap.get(error));729 GSXML.addError(result, _errorMessageMap.get(error)); 724 730 return result; 725 731 } … … 741 747 addUserInformationToNode(previousUsername, serviceNode); 742 748 serviceNode.setAttribute("operation", ACCOUNT_SETTINGS); 743 GSXML.addError( this.doc,result, _errorMessageMap.get(error));749 GSXML.addError(result, _errorMessageMap.get(error)); 744 750 } 745 751 return result; … … 749 755 if (error != NO_ERROR) 750 756 { 751 GSXML.addError( this.doc,result, _errorMessageMap.get(error));757 GSXML.addError(result, _errorMessageMap.get(error)); 752 758 } 753 759 … … 767 773 if (user_name == null || oldPassword == null || newPassword == null) 768 774 { 769 GSXML.addError( this.doc,result, _errorMessageMap.get("missing compulsory parameters: username, oldPassword, or newPassword"));775 GSXML.addError(result, _errorMessageMap.get("missing compulsory parameters: username, oldPassword, or newPassword")); 770 776 return result; 771 777 } … … 775 781 { 776 782 addUserInformationToNode(user_name, serviceNode); 777 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_INCORRECT_PASSWORD), "Incorrect Password");783 GSXML.addError(result, _errorMessageMap.get(ERROR_INCORRECT_PASSWORD), "Incorrect Password"); 778 784 return result; 779 785 } … … 783 789 if ((error = checkPassword(newPassword)) != NO_ERROR) 784 790 { 785 GSXML.addError( this.doc,result, _errorMessageMap.get(error));791 GSXML.addError(result, _errorMessageMap.get(error)); 786 792 return result; 787 793 } … … 794 800 if (info != "succeed") 795 801 {//see DerbyWrapper.modifyUserInfo 796 GSXML.addError( this.doc,result, _errorMessageMap.get(info));802 GSXML.addError(result, _errorMessageMap.get(info)); 797 803 return result; 798 804 } … … 804 810 if (error != NO_ERROR) 805 811 { 806 GSXML.addError( this.doc,result, _errorMessageMap.get(error));812 GSXML.addError(result, _errorMessageMap.get(error)); 807 813 } 808 814 } … … 814 820 { 815 821 serviceNode.setAttribute("operation", ""); 816 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_USERNAME_NOT_SPECIFIED));822 GSXML.addError(result, _errorMessageMap.get(ERROR_USERNAME_NOT_SPECIFIED)); 817 823 return result; 818 824 } … … 821 827 { 822 828 serviceNode.setAttribute("operation", LOGIN); 823 GSXML.addError( this.doc,result, _errorMessageMap.get(ERROR_NOT_AUTHORISED));829 GSXML.addError(result, _errorMessageMap.get(ERROR_NOT_AUTHORISED)); 824 830 return result; 825 831 } … … 827 833 if (error != NO_ERROR) 828 834 { 829 GSXML.addError( this.doc,result, _errorMessageMap.get(error));835 GSXML.addError(result, _errorMessageMap.get(error)); 830 836 } 831 837 } … … 861 867 if (_recaptchaPublicKey != null && _recaptchaPrivateKey != null) 862 868 { 863 Element recaptchaElem = this.doc.createElement("recaptcha");869 Element recaptchaElem = result_doc.createElement("recaptcha"); 864 870 recaptchaElem.setAttribute("publicKey", _recaptchaPublicKey); 865 871 recaptchaElem.setAttribute("privateKey", _recaptchaPrivateKey); … … 873 879 if (error != NO_ERROR) 874 880 { 875 GSXML.addError( this.doc,result, _errorMessageMap.get(error));881 GSXML.addError(result, _errorMessageMap.get(error)); 876 882 } 877 883 addUserInformationToNode(null, serviceNode); … … 985 991 if (userQueryResult != null) 986 992 { 987 Element user_node = getUserNode(userQueryResult);993 Element user_node = getUserNodeList(serviceNode.getOwnerDocument(), userQueryResult); 988 994 serviceNode.appendChild(user_node); 989 995 return NO_ERROR; … … 1114 1120 } 1115 1121 1116 private Element getUserNode(UserQueryResult userQueryResult)1117 { 1118 Element user_list_node = this.doc.createElement(GSXML.USER_NODE_ELEM + "List");1122 private Element getUserNodeList(Document doc, UserQueryResult userQueryResult) 1123 { 1124 Element user_list_node = doc.createElement(GSXML.USER_NODE_ELEM + GSXML.LIST_MODIFIER); 1119 1125 1120 1126 Vector userInfo = userQueryResult.users; … … 1122 1128 for (int i = 0; i < userQueryResult.getSize(); i++) 1123 1129 { 1124 Element user_node = this.doc.createElement(GSXML.USER_NODE_ELEM);1130 Element user_node = doc.createElement(GSXML.USER_NODE_ELEM); 1125 1131 String username = ((UserTermInfo) userInfo.get(i)).username; 1126 1132 String groups = ((UserTermInfo) userInfo.get(i)).groups; … … 1139 1145 } 1140 1146 1141 private Element getCollectList(String collect)1142 { 1143 Element collect_list_node = this.doc.createElement(GSXML.COLLECTION_ELEM + "List");1147 private Element getCollectList(Document doc, String collect) 1148 { 1149 Element collect_list_node = doc.createElement(GSXML.COLLECTION_ELEM + GSXML.LIST_MODIFIER); 1144 1150 File[] collect_dir = (new File(collect)).listFiles(); 1145 1151 if (collect_dir != null && collect_dir.length > 0) … … 1149 1155 if (collect_dir[i].isDirectory() && (!collect_dir[i].getName().startsWith(".svn"))) 1150 1156 { 1151 Element collect_node = this.doc.createElement(GSXML.COLLECTION_ELEM);1152 collect_node.setAttribute( "name", collect_dir[i].getName());1157 Element collect_node = doc.createElement(GSXML.COLLECTION_ELEM); 1158 collect_node.setAttribute(GSXML.NAME_ATT, collect_dir[i].getName()); 1153 1159 collect_list_node.appendChild(collect_node); 1154 1160 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/BerryBasket.java
r25635 r28966 27 27 import java.util.Iterator; 28 28 29 import org.w3c.dom.Document; 29 30 import org.w3c.dom.Element; 30 31 import org.w3c.dom.NodeList; … … 34 35 import org.greenstone.gsdl3.util.GSPath; 35 36 import org.greenstone.gsdl3.util.UserContext; 37 import org.greenstone.gsdl3.util.XMLConverter; 36 38 37 39 import java.io.Serializable; … … 111 113 112 114 // set up short_service_info_ - for now just has name and type 113 Element add_service = this.d oc.createElement(GSXML.SERVICE_ELEM);115 Element add_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 114 116 add_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 115 117 add_service.setAttribute(GSXML.NAME_ATT, ADD_ITEM_SERVICE); … … 117 119 118 120 // set up short_service_info_ - for now just has name and type 119 Element disp_service = this.d oc.createElement(GSXML.SERVICE_ELEM);121 Element disp_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 120 122 disp_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 121 123 disp_service.setAttribute(GSXML.NAME_ATT, DISPLAY_ITEMS_SERVICE); … … 123 125 124 126 // set up short_service_info_ - for now just has name and type 125 Element num_service = this.d oc.createElement(GSXML.SERVICE_ELEM);127 Element num_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 126 128 num_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 127 129 num_service.setAttribute(GSXML.NAME_ATT, ITEM_NUM_SERVICE); … … 129 131 130 132 // set up short_service_info_ - for now just has name and type 131 Element delete_service = this.d oc.createElement(GSXML.SERVICE_ELEM);133 Element delete_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 132 134 delete_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 133 135 delete_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEMS_SERVICE); … … 135 137 136 138 // set up short_service_info_ - for now just has name and type 137 Element deleteone_service = this.d oc.createElement(GSXML.SERVICE_ELEM);139 Element deleteone_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 138 140 deleteone_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 139 141 deleteone_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEM_SERVICE); … … 141 143 142 144 // set up short_service_info_ - for now just has name and type 143 Element mail_service = this.d oc.createElement(GSXML.SERVICE_ELEM);145 Element mail_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 144 146 mail_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 145 147 mail_service.setAttribute(GSXML.NAME_ATT, SEND_MAIL_SERVICE); … … 151 153 152 154 /** returns a specific service description */ 153 protected Element getServiceDescription(String service_id, String lang, String subset)155 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 154 156 { 155 157 156 158 if (service_id.equals(ADD_ITEM_SERVICE)) 157 159 { 158 Element add_service = this.doc.createElement(GSXML.SERVICE_ELEM);160 Element add_service = doc.createElement(GSXML.SERVICE_ELEM); 159 161 add_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 160 162 add_service.setAttribute(GSXML.NAME_ATT, ADD_ITEM_SERVICE); … … 164 166 { 165 167 166 Element disp_service = this.doc.createElement(GSXML.SERVICE_ELEM);168 Element disp_service = doc.createElement(GSXML.SERVICE_ELEM); 167 169 disp_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 168 170 disp_service.setAttribute(GSXML.NAME_ATT, DISPLAY_ITEMS_SERVICE); … … 173 175 { 174 176 175 Element num_service = this.doc.createElement(GSXML.SERVICE_ELEM);177 Element num_service = doc.createElement(GSXML.SERVICE_ELEM); 176 178 num_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 177 179 num_service.setAttribute(GSXML.NAME_ATT, ITEM_NUM_SERVICE); … … 182 184 { 183 185 184 Element del_service = this.doc.createElement(GSXML.SERVICE_ELEM);186 Element del_service = doc.createElement(GSXML.SERVICE_ELEM); 185 187 del_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 186 188 del_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEMS_SERVICE); … … 191 193 { 192 194 193 Element delone_service = this.doc.createElement(GSXML.SERVICE_ELEM);195 Element delone_service = doc.createElement(GSXML.SERVICE_ELEM); 194 196 delone_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 195 197 delone_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEM_SERVICE); … … 200 202 { 201 203 202 Element mail_service = this.doc.createElement(GSXML.SERVICE_ELEM);204 Element mail_service = doc.createElement(GSXML.SERVICE_ELEM); 203 205 mail_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 204 206 mail_service.setAttribute(GSXML.NAME_ATT, SEND_MAIL_SERVICE); … … 214 216 215 217 // Create a new (empty) result message 216 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 218 Document result_doc = XMLConverter.newDOM(); 219 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 217 220 218 221 // Get the parameters of the request … … 242 245 Item newItem = generateItem(collection, item); 243 246 items.put(item, newItem); 244 result.appendChild(newItem.wrapIntoElement( ));247 result.appendChild(newItem.wrapIntoElement(result_doc)); 245 248 } 246 249 } … … 251 254 items.put(item, newItem); 252 255 docsMap.put(collection, items); 253 result.appendChild(newItem.wrapIntoElement( ));256 result.appendChild(newItem.wrapIntoElement(result_doc)); 254 257 } 255 258 … … 307 310 308 311 // Create a new (empty) result message 309 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 312 Document result_doc = XMLConverter.newDOM(); 313 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 310 314 311 315 // Get the parameters of the request … … 363 367 364 368 // Create a new (empty) result message 365 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 369 Document result_doc = XMLConverter.newDOM(); 370 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 366 371 367 372 // Get the parameters of the request … … 413 418 414 419 // Create a new (empty) result message 415 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 420 Document result_doc = XMLConverter.newDOM(); 421 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 416 422 417 423 int size = 0; … … 427 433 { 428 434 Item item = (Item) values.next(); 429 result.appendChild(item.wrapIntoElement( ));430 } 431 } 432 433 Element selement = this.doc.createElement("size");435 result.appendChild(item.wrapIntoElement(result_doc)); 436 } 437 } 438 439 Element selement = result_doc.createElement("size"); 434 440 selement.setAttribute("value", size + ""); 435 441 result.appendChild(selement); … … 442 448 443 449 // Build a request to obtain some document metadata 444 Element dm_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 445 Element dm_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext); 450 Document doc = XMLConverter.newDOM(); 451 Element dm_message = doc.createElement(GSXML.MESSAGE_ELEM); 452 Element dm_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext); 446 453 dm_message.appendChild(dm_request); 447 454 … … 452 459 meta_names.add("Date"); 453 460 454 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);461 Element param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 455 462 456 463 Element param = null; … … 459 466 { 460 467 String name = i.next(); 461 param = this.doc.createElement(GSXML.PARAM_ELEM);468 param = doc.createElement(GSXML.PARAM_ELEM); 462 469 param_list.appendChild(param); 463 470 param.setAttribute(GSXML.NAME_ATT, "metadata"); … … 469 476 470 477 // create the doc node list for the metadata request 471 Element dm_doc_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);478 Element dm_doc_list = doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 472 479 dm_request.appendChild(dm_doc_list); 473 480 … … 475 482 { 476 483 // Add the documentNode to the list 477 Element dm_doc_node = this.doc.createElement(GSXML.DOC_NODE_ELEM);484 Element dm_doc_node = doc.createElement(GSXML.DOC_NODE_ELEM); 478 485 dm_doc_list.appendChild(dm_doc_node); 479 486 dm_doc_node.setAttribute(GSXML.NODE_ID_ATT, ids.next()); … … 489 496 490 497 // Create a new (empty) result message 491 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 498 Document result_doc = XMLConverter.newDOM(); 499 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 492 500 493 501 Iterator<String> keys = docsMap.keySet().iterator(); … … 499 507 Iterator itemItr = items.values().iterator(); 500 508 501 Element collectionNode = this.doc.createElement("berryList");509 Element collectionNode = result_doc.createElement("berryList"); 502 510 collectionNode.setAttribute("name", collection); 503 511 result.appendChild(collectionNode); … … 506 514 { 507 515 Item item = (Item) itemItr.next(); 508 Element itemElement = this.doc.createElement("item");516 Element itemElement = result_doc.createElement("item"); 509 517 510 518 collectionNode.appendChild(itemElement); … … 524 532 { 525 533 // Create a new (empty) result message 526 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 534 Document result_doc = XMLConverter.newDOM(); 535 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 527 536 528 537 // Get the parameters of the request … … 606 615 607 616 logger.info("\nMail was sent successfully."); 608 result.appendChild( this.doc.createTextNode("Mail was sent successfully."));617 result.appendChild(result_doc.createTextNode("Mail was sent successfully.")); 609 618 } 610 619 catch (Exception e) 611 620 { 612 621 e.printStackTrace(); 613 result.appendChild( this.doc.createTextNode(e.getMessage()));622 result.appendChild(result_doc.createTextNode(e.getMessage())); 614 623 } 615 624 … … 651 660 } 652 661 653 public Element wrapIntoElement( )662 public Element wrapIntoElement(Document doc) 654 663 { 655 664 Element itemElement = doc.createElement("item"); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/CoverageMetadataRetrieve.java
r25976 r28966 65 65 // with their names and service types 66 66 // we have two services, a new textquery, and a new one of a new type 67 //Element tq_service = this.d oc.createElement(GSXML.SERVICE_ELEM);67 //Element tq_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 68 68 //tq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 69 69 //tq_service.setAttribute(GSXML.NAME_ATT, QUERY_SERVICE); 70 70 //this.short_service_info.appendChild(tq_service); 71 71 72 Element diff_service = this.d oc.createElement(GSXML.SERVICE_ELEM);72 Element diff_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 73 73 diff_service.setAttribute(GSXML.TYPE_ATT, "retrieve"); 74 74 diff_service.setAttribute(GSXML.NAME_ATT, COVERAGE_SERVICE); … … 122 122 if (format != null) 123 123 { 124 this.format_info_map.put(COVERAGE_SERVICE, this.d oc.importNode(format, true));124 this.format_info_map.put(COVERAGE_SERVICE, this.desc_doc.importNode(format, true)); 125 125 } 126 126 … … 130 130 131 131 // get the desription of a service. Could include parameter lists, displayText 132 protected Element getServiceDescription(String service, String lang, String subset)132 protected Element getServiceDescription(Document doc, String service, String lang, String subset) 133 133 { 134 134 … … 141 141 /* 142 142 * if (service.equals(QUERY_SERVICE)) { Element tq_service = 143 * this.doc.createElement(GSXML.SERVICE_ELEM);143 * doc.createElement(GSXML.SERVICE_ELEM); 144 144 * tq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 145 145 * tq_service.setAttribute(GSXML.NAME_ATT, QUERY_SERVICE); if … … 148 148 * in any <displayText> elements // name, for example - get from 149 149 * properties file 150 * tq_service.appendChild(GSXML.createDisplayTextElement( this.doc,150 * tq_service.appendChild(GSXML.createDisplayTextElement(doc, 151 151 * GSXML.DISPLAY_TEXT_NAME, getTextString(QUERY_SERVICE+".name", lang) 152 152 * )); } … … 155 155 * subset.equals(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER)) { // add in a 156 156 * param list if this service has parameters Element param_list = 157 * this.doc.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);157 * doc.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 158 158 * tq_service.appendChild(param_list); // create any params and append 159 159 * to param_list } return tq_service; } … … 162 162 if (service.equals(COVERAGE_SERVICE)) 163 163 { 164 Element diff_service = this.doc.createElement(GSXML.SERVICE_ELEM);164 Element diff_service = doc.createElement(GSXML.SERVICE_ELEM); 165 165 diff_service.setAttribute(GSXML.TYPE_ATT, "retrieve"); 166 166 diff_service.setAttribute(GSXML.NAME_ATT, COVERAGE_SERVICE); … … 169 169 // add in any <displayText> elements 170 170 // name, for example - get from properties file 171 diff_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_NAME, getTextString(COVERAGE_SERVICE + ".name", lang)));171 diff_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_NAME, getTextString(COVERAGE_SERVICE + ".name", lang))); 172 172 } 173 173 … … 175 175 { 176 176 // add in a param list if this service has parameters 177 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);177 Element param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 178 178 diff_service.appendChild(param_list); 179 179 // create any params and append to param_list … … 230 230 231 231 // Create response 232 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 232 Document result_doc = XMLConverter.newDOM(); 233 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 233 234 result.setAttribute(GSXML.FROM_ATT, COVERAGE_SERVICE); 234 235 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 235 236 236 Element metadataSetList = this.doc.createElement("metadataSetList");237 Element metadataSetList = result_doc.createElement("metadataSetList"); 237 238 result.appendChild(metadataSetList); 238 239 … … 249 250 250 251 // Create metadataSet using the current key and add to metadataSetList 251 metadataSet = this.doc.createElement("metadataSet");252 metadataSet = result_doc.createElement("metadataSet"); 252 253 if (current_key.indexOf("-") != -1) 253 254 { … … 263 264 { 264 265 value = iter2.next(); 265 metadata = this.doc.createElement("metadata");266 metadata = result_doc.createElement("metadata"); 266 267 metadata.setAttribute(GSXML.NAME_ATT, value); 267 268 metadataSet.appendChild(metadata); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/CrossCollectionSearch.java
r28180 r28966 29 29 import org.greenstone.gsdl3.util.GSXML; 30 30 import org.greenstone.gsdl3.util.UserContext; 31 import org.greenstone.gsdl3.util.XMLConverter; 32 33 import org.w3c.dom.Document; 31 34 import org.w3c.dom.Element; 32 35 import org.w3c.dom.Node; … … 65 68 logger.info("Configuring CrossCollectionSearch..."); 66 69 // query service 67 Element ccs_service = this.d oc.createElement(GSXML.SERVICE_ELEM);70 Element ccs_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 68 71 ccs_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 69 72 ccs_service.setAttribute(GSXML.NAME_ATT, TEXT_QUERY_SERVICE); … … 71 74 72 75 // metadata service 73 Element dmr_service = this.d oc.createElement(GSXML.SERVICE_ELEM);76 Element dmr_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 74 77 dmr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 75 78 dmr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_METADATA_RETRIEVE_SERVICE); … … 80 83 if (format_info != null) 81 84 { 82 this.format_info_map.put(TEXT_QUERY_SERVICE, this.d oc.importNode(format_info, true));85 this.format_info_map.put(TEXT_QUERY_SERVICE, this.desc_doc.importNode(format_info, true)); 83 86 } 84 87 else … … 91 94 } 92 95 format_string += "</xsl:attribute><gsf:icon/></a></td><td><gsf:metadata name='Title'/> (<xsl:value-of select='@collection'/>) </td></gsf:template></format>"; 93 this.format_info_map.put(TEXT_QUERY_SERVICE, this.d oc.importNode(this.converter.getDOM(format_string).getDocumentElement(), true));96 this.format_info_map.put(TEXT_QUERY_SERVICE, this.desc_doc.importNode(this.converter.getDOM(format_string).getDocumentElement(), true)); 94 97 } 95 98 return true; 96 99 } 97 100 98 protected Element getServiceDescription(String service, String lang, String subset)101 protected Element getServiceDescription(Document doc, String service, String lang, String subset) 99 102 { 100 103 if (service.equals(TEXT_QUERY_SERVICE)) 101 104 { 102 105 103 Element ccs_service = this.doc.createElement(GSXML.SERVICE_ELEM);106 Element ccs_service = doc.createElement(GSXML.SERVICE_ELEM); 104 107 ccs_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 105 108 ccs_service.setAttribute(GSXML.NAME_ATT, TEXT_QUERY_SERVICE); … … 108 111 if (subset == null || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER)) 109 112 { 110 ccs_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_NAME, getTextString(TEXT_QUERY_SERVICE + ".name", lang)));111 ccs_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(TEXT_QUERY_SERVICE + ".submit", lang)));112 ccs_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(TEXT_QUERY_SERVICE + ".description", lang)));113 ccs_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_NAME, getTextString(TEXT_QUERY_SERVICE + ".name", lang))); 114 ccs_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(TEXT_QUERY_SERVICE + ".submit", lang))); 115 ccs_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(TEXT_QUERY_SERVICE + ".description", lang))); 113 116 } 114 117 // param info 115 118 if (subset == null || subset.equals(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER)) 116 119 { 117 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);120 Element param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 118 121 // collection list 119 122 if (coll_ids_list == null) … … 125 128 addCollectionNames(lang); 126 129 } 127 Element param = GSXML.createParameterDescription( this.doc, COLLECTION_PARAM, getTextString("param." + COLLECTION_PARAM, lang), GSXML.PARAM_TYPE_ENUM_MULTI, "all", coll_ids_list, coll_names_map.get(lang));130 Element param = GSXML.createParameterDescription(doc, COLLECTION_PARAM, getTextString("param." + COLLECTION_PARAM, lang), GSXML.PARAM_TYPE_ENUM_MULTI, "all", coll_ids_list, coll_names_map.get(lang)); 128 131 param_list.appendChild(param); 129 132 // query param 130 param = GSXML.createParameterDescription( this.doc, QUERY_PARAM, getTextString("param." + QUERY_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null);133 param = GSXML.createParameterDescription(doc, QUERY_PARAM, getTextString("param." + QUERY_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null); 131 134 param_list.appendChild(param); 132 135 ccs_service.appendChild(param_list); … … 137 140 } 138 141 // these ones are probably never called, but put them here just in case 139 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);142 Element service_elem = doc.createElement(GSXML.SERVICE_ELEM); 140 143 service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 141 144 service_elem.setAttribute(GSXML.NAME_ATT, service); … … 147 150 { 148 151 // Create a new (empty) result message 149 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 152 Document result_doc = XMLConverter.newDOM(); 153 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 150 154 result.setAttribute(GSXML.FROM_ATT, TEXT_QUERY_SERVICE); 151 155 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 173 177 } 174 178 175 Element query_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 179 Document msg_doc = XMLConverter.newDOM(); 180 Element query_message = msg_doc.createElement(GSXML.MESSAGE_ELEM); 176 181 // we are sending the same request to each collection - build up the to 177 182 // attribute for the request … … 187 192 } 188 193 // send the query to all colls 189 Element query_request = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_PROCESS, to_att.toString(), userContext);194 Element query_request = GSXML.createBasicRequest(msg_doc, GSXML.REQUEST_TYPE_PROCESS, to_att.toString(), userContext); 190 195 query_message.appendChild(query_request); 191 196 // should we add params individually? 192 Element new_param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);197 Element new_param_list = msg_doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 193 198 query_request.appendChild(new_param_list); 194 new_param_list.appendChild( this.doc.importNode(GSXML.getNamedElement(param_list, GSXML.PARAM_ELEM, GSXML.NAME_ATT, QUERY_PARAM), true));199 new_param_list.appendChild(msg_doc.importNode(GSXML.getNamedElement(param_list, GSXML.PARAM_ELEM, GSXML.NAME_ATT, QUERY_PARAM), true)); 195 200 Element query_result = (Element) this.router.process(query_message); 196 201 … … 215 220 } 216 221 217 Element metadata_list = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);222 Element metadata_list = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 218 223 result.appendChild(metadata_list); 219 GSXML.addMetadata( this.doc,metadata_list, "numDocsReturned", "" + numDocsReturned);220 //GSXML.addMetadata( this.doc,metadata_list, "numDocsMatched", ""+numDocsMatched);221 222 Element doc_node_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);224 GSXML.addMetadata(metadata_list, "numDocsReturned", "" + numDocsReturned); 225 //GSXML.addMetadata(metadata_list, "numDocsMatched", ""+numDocsMatched); 226 227 Element doc_node_list = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 223 228 result.appendChild(doc_node_list); 224 229 … … 240 245 { 241 246 242 doc_node_list.appendChild( this.doc.importNode(this_node, true));247 doc_node_list.appendChild(result_doc.importNode(this_node, true)); 243 248 } 244 249 else … … 267 272 268 273 // first, get the message router info 269 Element coll_list_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 270 Element coll_list_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_DESCRIBE, "", userContext); // uid 274 Document msg_doc = XMLConverter.newDOM(); 275 Element coll_list_message = msg_doc.createElement(GSXML.MESSAGE_ELEM); 276 Element coll_list_request = GSXML.createBasicRequest(msg_doc, GSXML.REQUEST_TYPE_DESCRIBE, "", userContext); // uid 271 277 coll_list_message.appendChild(coll_list_request); 272 278 logger.debug("coll list request = " + this.converter.getPrettyString(coll_list_request)); … … 283 289 NodeList colls = coll_list_response.getElementsByTagName(GSXML.COLLECTION_ELEM); 284 290 // we can send the same request to multiple collections at once by using a comma separated list 285 Element metadata_message = this.doc.createElement(GSXML.MESSAGE_ELEM);291 Element metadata_message = msg_doc.createElement(GSXML.MESSAGE_ELEM); 286 292 StringBuffer colls_sb = new StringBuffer(); 287 293 for (int i = 0; i < colls.getLength(); i++) … … 298 304 } 299 305 300 Element metadata_request = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_DESCRIBE, colls_sb.toString(), userContext);306 Element metadata_request = GSXML.createBasicRequest(msg_doc, GSXML.REQUEST_TYPE_DESCRIBE, colls_sb.toString(), userContext); 301 307 metadata_message.appendChild(metadata_request); 302 308 logger.debug("metadata request = " + this.converter.getPrettyString(metadata_message)); … … 352 358 353 359 // need to request MR for collection descriptions 354 Element metadata_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 360 Document msg_doc = XMLConverter.newDOM(); 361 Element metadata_message = msg_doc.createElement(GSXML.MESSAGE_ELEM); 355 362 356 363 // get a comma separated list of coll ids to send to MR … … 365 372 colls_sb.append(coll_ids_list[i]); 366 373 } 367 Element metadata_request = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_DESCRIBE, colls_sb.toString(), userContext);374 Element metadata_request = GSXML.createBasicRequest(msg_doc, GSXML.REQUEST_TYPE_DESCRIBE, colls_sb.toString(), userContext); 368 375 // param_list to request just displayTextList 369 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);370 Element param = GSXML.createParameter( this.doc, GSXML.SUBSET_PARAM, GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER);376 Element param_list = msg_doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 377 Element param = GSXML.createParameter(msg_doc, GSXML.SUBSET_PARAM, GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER); 371 378 param_list.appendChild(param); 372 379 metadata_request.appendChild(param_list); … … 393 400 { 394 401 // Create a new (empty) result message 395 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 402 Document result_doc = XMLConverter.newDOM(); 403 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 396 404 result.setAttribute(GSXML.FROM_ATT, DOCUMENT_METADATA_RETRIEVE_SERVICE); 397 405 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 414 422 415 423 // the resulting doc node list 416 Element result_node_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);424 Element result_node_list = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 417 425 result.appendChild(result_node_list); 418 426 419 // get all the metadata params420 Element new_param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);421 Element param = GSXML.createParameter(this.doc, "metadata", "Title");422 new_param_list.appendChild(param);423 427 424 428 // organise the nodes into collection lists … … 432 436 if (coll_items == null) 433 437 { 434 coll_items = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);438 coll_items = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 435 439 coll_map.put(coll_name, coll_items); 436 440 } 437 coll_items.appendChild( this.doc.importNode(doc_node, true));441 coll_items.appendChild(result_doc.importNode(doc_node, true)); 438 442 } 439 443 440 444 // create teh individual requests 441 Element meta_request_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 445 Document msg_doc = XMLConverter.newDOM(); 446 Element meta_request_message = msg_doc.createElement(GSXML.MESSAGE_ELEM); 447 // get all the metadata params 448 Element new_param_list = msg_doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 449 Element param = GSXML.createParameter(msg_doc, "metadata", "Title"); 450 new_param_list.appendChild(param); 451 442 452 Set mapping_set = coll_map.entrySet(); 443 453 Iterator iter = mapping_set.iterator(); … … 448 458 String cname = (String) e.getKey(); 449 459 Element doc_nodes = (Element) e.getValue(); 450 Element meta_request = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_PROCESS, GSPath.appendLink(cname, DOCUMENT_METADATA_RETRIEVE_SERVICE), userContext);451 meta_request.appendChild( doc_nodes);460 Element meta_request = GSXML.createBasicRequest(msg_doc, GSXML.REQUEST_TYPE_PROCESS, GSPath.appendLink(cname, DOCUMENT_METADATA_RETRIEVE_SERVICE), userContext); 461 meta_request.appendChild(msg_doc.importNode(doc_nodes, true)); 452 462 meta_request.appendChild(new_param_list.cloneNode(true)); 453 463 meta_request_message.appendChild(meta_request); … … 456 466 457 467 Node meta_result_node = this.router.process(meta_request_message); 458 Element meta_result = this.converter.nodeToElement(meta_result_node);468 Element meta_result = GSXML.nodeToElement(meta_result_node); 459 469 460 470 // now need to put the doc nodes back in the right order … … 472 482 { 473 483 Element doc_node = (Element) query_doc_list.item(i); 474 Element new_node = (Element) this.doc.importNode(doc_node, false);484 Element new_node = (Element) result_doc.importNode(doc_node, false); 475 485 result_node_list.appendChild(new_node); 476 486 String coll_name = doc_node.getAttribute("collection"); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/DebugService.java
r28118 r28966 52 52 for (int i = 0; i < services.length; i++) 53 53 { 54 Element service = this.d oc.createElement(GSXML.SERVICE_ELEM);54 Element service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 55 55 service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 56 56 service.setAttribute(GSXML.NAME_ATT, services[i]); … … 61 61 } 62 62 63 protected Element getServiceDescription(String service_id, String lang, String subset)63 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 64 64 { 65 65 for (int i = 0; i < services.length; i++) … … 67 67 if (service_id.equals(services[i])) 68 68 { 69 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);69 Element service_elem = doc.createElement(GSXML.SERVICE_ELEM); 70 70 service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 71 71 service_elem.setAttribute(GSXML.NAME_ATT, services[i]); … … 79 79 protected Element processResolveCallTemplate(Element request) 80 80 { 81 Element result = GSXML.createBasicResponse(this.doc, RESOLVE_CALL_TEMPLATE); 81 Document result_doc = XMLConverter.newDOM(); 82 83 Element result = GSXML.createBasicResponse(result_doc, RESOLVE_CALL_TEMPLATE); 82 84 83 85 if (request == null) 84 86 { 85 GSXML.addError( this.doc,result, RESOLVE_CALL_TEMPLATE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);87 GSXML.addError(result, RESOLVE_CALL_TEMPLATE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 86 88 return result; 87 89 } … … 99 101 if (!found) 100 102 { 101 GSXML.addError( this.doc,result, "This user does not have the required permissions to perform this action.");103 GSXML.addError(result, "This user does not have the required permissions to perform this action."); 102 104 return result; 103 105 } … … 108 110 if (param_list == null) 109 111 { 110 GSXML.addError( this.doc,result, RESOLVE_CALL_TEMPLATE + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX);112 GSXML.addError(result, RESOLVE_CALL_TEMPLATE + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX); 111 113 return result; 112 114 } … … 142 144 Element debugElement = (Element) current.getElementsByTagName("debug").item(0); 143 145 144 Element requestedTemplate = this.doc.createElement("requestedTemplate");146 Element requestedTemplate = result_doc.createElement("requestedTemplate"); 145 147 requestedTemplate.setTextContent(debugElement.getAttribute("filename")); 146 148 result.appendChild(requestedTemplate); … … 153 155 protected Element processGetXMLTemplateFromFile(Element request) 154 156 { 155 Element result = GSXML.createBasicResponse(this.doc, GET_TEMPLATE_FROM_XML_FILE); 157 Document result_doc = XMLConverter.newDOM(); 158 Element result = GSXML.createBasicResponse(result_doc, GET_TEMPLATE_FROM_XML_FILE); 156 159 157 160 if (request == null) 158 161 { 159 GSXML.addError( this.doc,result, GET_TEMPLATE_FROM_XML_FILE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);162 GSXML.addError(result, GET_TEMPLATE_FROM_XML_FILE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 160 163 return result; 161 164 } … … 173 176 if (!found) 174 177 { 175 GSXML.addError( this.doc,result, "This user does not have the required permissions to perform this action.");178 GSXML.addError(result, "This user does not have the required permissions to perform this action."); 176 179 return result; 177 180 } … … 182 185 if (param_list == null) 183 186 { 184 GSXML.addError( this.doc,result, GET_TEMPLATE_FROM_XML_FILE + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX);187 GSXML.addError(result, GET_TEMPLATE_FROM_XML_FILE + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX); 185 188 return result; 186 189 } … … 210 213 else 211 214 { 212 GSXML.addError( this.doc,result, "A valid namespace was not specified.");215 GSXML.addError(result, "A valid namespace was not specified."); 213 216 return result; 214 217 } … … 257 260 fixAttributes(template); 258 261 259 Element requestedTemplate = this.doc.createElement("requestedNameTemplate");260 requestedTemplate.appendChild( this.doc.importNode(template, true));262 Element requestedTemplate = result_doc.createElement("requestedNameTemplate"); 263 requestedTemplate.appendChild(result_doc.importNode(template, true)); 261 264 result.appendChild(requestedTemplate); 262 265 } … … 274 277 fixAttributes(template); 275 278 276 Element requestedTemplate = this.doc.createElement("requestedMatchTemplate");277 requestedTemplate.appendChild( this.doc.importNode(template, true));279 Element requestedTemplate = result_doc.createElement("requestedMatchTemplate"); 280 requestedTemplate.appendChild(result_doc.importNode(template, true)); 278 281 result.appendChild(requestedTemplate); 279 282 } … … 306 309 protected Element processSaveXMLTemplateToFile(Element request) 307 310 { 308 Element result = GSXML.createBasicResponse(this.doc, SAVE_TEMPLATE_TO_XML_FILE); 311 Document result_doc = XMLConverter.newDOM(); 312 Element result = GSXML.createBasicResponse(result_doc, SAVE_TEMPLATE_TO_XML_FILE); 309 313 310 314 if (request == null) 311 315 { 312 GSXML.addError( this.doc,result, SAVE_TEMPLATE_TO_XML_FILE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);316 GSXML.addError(result, SAVE_TEMPLATE_TO_XML_FILE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 313 317 return result; 314 318 } … … 326 330 if (!foundGroup) 327 331 { 328 GSXML.addError( this.doc,result, "This user does not have the required permissions to perform this action.");332 GSXML.addError(result, "This user does not have the required permissions to perform this action."); 329 333 return result; 330 334 } … … 335 339 if (param_list == null) 336 340 { 337 GSXML.addError( this.doc,result, SAVE_TEMPLATE_TO_XML_FILE + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX);341 GSXML.addError(result, SAVE_TEMPLATE_TO_XML_FILE + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX); 338 342 return result; 339 343 } … … 364 368 else 365 369 { 366 GSXML.addError( this.doc,result, SAVE_TEMPLATE_TO_XML_FILE + ": The specified namespace was not valid", GSXML.ERROR_TYPE_SYNTAX);370 GSXML.addError(result, SAVE_TEMPLATE_TO_XML_FILE + ": The specified namespace was not valid", GSXML.ERROR_TYPE_SYNTAX); 367 371 return result; 368 372 } … … 441 445 if (!found) 442 446 { 443 GSXML.addError( this.doc,result, SAVE_TEMPLATE_TO_XML_FILE + ": Could not save as the specified template could not be found", GSXML.ERROR_TYPE_SYNTAX);447 GSXML.addError(result, SAVE_TEMPLATE_TO_XML_FILE + ": Could not save as the specified template could not be found", GSXML.ERROR_TYPE_SYNTAX); 444 448 } 445 449 else … … 457 461 catch (Exception ex) 458 462 { 459 GSXML.addError( this.doc,result, SAVE_TEMPLATE_TO_XML_FILE + ": There was an error writing out the XML file", GSXML.ERROR_TYPE_SYNTAX);463 GSXML.addError(result, SAVE_TEMPLATE_TO_XML_FILE + ": There was an error writing out the XML file", GSXML.ERROR_TYPE_SYNTAX); 460 464 } 461 465 … … 464 468 else 465 469 { 466 GSXML.addError( this.doc,result, SAVE_TEMPLATE_TO_XML_FILE + "File: " + xslFile.getAbsolutePath() + " does not exist", GSXML.ERROR_TYPE_SYNTAX);470 GSXML.addError(result, SAVE_TEMPLATE_TO_XML_FILE + "File: " + xslFile.getAbsolutePath() + " does not exist", GSXML.ERROR_TYPE_SYNTAX); 467 471 } 468 472 … … 472 476 protected Element processGetTemplateListFromFile(Element request) 473 477 { 474 Element result = GSXML.createBasicResponse(this.doc, GET_TEMPLATE_LIST_FROM_FILE); 478 Document result_doc = XMLConverter.newDOM(); 479 Element result = GSXML.createBasicResponse(result_doc, GET_TEMPLATE_LIST_FROM_FILE); 475 480 476 481 if (request == null) 477 482 { 478 GSXML.addError( this.doc,result, GET_TEMPLATE_LIST_FROM_FILE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);483 GSXML.addError(result, GET_TEMPLATE_LIST_FROM_FILE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 479 484 return result; 480 485 } … … 492 497 if (!found) 493 498 { 494 GSXML.addError( this.doc,result, "This user does not have the required permissions to perform this action.");499 GSXML.addError(result, "This user does not have the required permissions to perform this action."); 495 500 return result; 496 501 } … … 501 506 if (param_list == null) 502 507 { 503 GSXML.addError( this.doc,result, GET_TEMPLATE_FROM_XML_FILE + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX);508 GSXML.addError(result, GET_TEMPLATE_FROM_XML_FILE + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX); 504 509 return result; 505 510 } … … 517 522 if (locationName == null || locationName.length() == 0) 518 523 { 519 GSXML.addError( this.doc,result, "Parameter \"locationName\" was null or empty.");524 GSXML.addError(result, "Parameter \"locationName\" was null or empty."); 520 525 return result; 521 526 } … … 534 539 } 535 540 536 Element templateList = this.doc.createElement("templateList");541 Element templateList = result_doc.createElement("templateList"); 537 542 StringBuilder templateListString = new StringBuilder("["); 538 543 … … 574 579 else 575 580 { 576 GSXML.addError( this.doc,result, "File: " + xslFile.getAbsolutePath() + " does not exist");581 GSXML.addError(result, "File: " + xslFile.getAbsolutePath() + " does not exist"); 577 582 return result; 578 583 } … … 583 588 protected Element processGetXSLTFilesForCollection(Element request) 584 589 { 585 Element result = GSXML.createBasicResponse(this.doc, GET_XSLT_FILES_FOR_COLLECTION); 590 Document result_doc = XMLConverter.newDOM(); 591 Element result = GSXML.createBasicResponse(result_doc, GET_XSLT_FILES_FOR_COLLECTION); 586 592 587 593 if (request == null) 588 594 { 589 GSXML.addError( this.doc,result, GET_XSLT_FILES_FOR_COLLECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);595 GSXML.addError(result, GET_XSLT_FILES_FOR_COLLECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 590 596 return result; 591 597 } … … 603 609 if (!found) 604 610 { 605 GSXML.addError( this.doc,result, "This user does not have the required permissions to perform this action.");611 GSXML.addError(result, "This user does not have the required permissions to perform this action."); 606 612 return result; 607 613 } … … 612 618 if (param_list == null) 613 619 { 614 GSXML.addError( this.doc,result, GET_TEMPLATE_FROM_XML_FILE + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX);620 GSXML.addError(result, GET_TEMPLATE_FROM_XML_FILE + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX); 615 621 return result; 616 622 } … … 622 628 String collectionName = (String) params.get("collectionName"); 623 629 624 Element fileList = this.doc.createElement("fileListJSON");630 Element fileList = result_doc.createElement("fileListJSON"); 625 631 StringBuilder fileListString = new StringBuilder("["); 626 632 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/DocXMLUtil.java
r24993 r28966 25 25 import org.greenstone.gsdl3.util.GSXML; 26 26 import org.greenstone.gsdl3.util.UserContext; 27 import org.greenstone.gsdl3.util.XMLConverter; 27 28 28 29 import org.w3c.dom.Document; … … 82 83 for (int i = 0; i < services.length; i++) 83 84 { 84 Element service = this.d oc.createElement(GSXML.SERVICE_ELEM);85 Element service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 85 86 service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 86 87 service.setAttribute(GSXML.NAME_ATT, services[i]); … … 88 89 } 89 90 90 _GSDM = new GSDocumentModel(this.site_home, this. doc, this.router);91 _GSDM = new GSDocumentModel(this.site_home, this.router); 91 92 92 93 return true; 93 94 } 94 95 95 protected Element getServiceDescription(String service_id, String lang, String subset)96 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 96 97 { 97 98 for (int i = 0; i < services.length; i++) … … 99 100 if (service_id.equals(services[i])) 100 101 { 101 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);102 Element service_elem = doc.createElement(GSXML.SERVICE_ELEM); 102 103 service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 103 104 service_elem.setAttribute(GSXML.NAME_ATT, services[i]); … … 115 116 protected Element processDocXMLCreateEmptyFile(Element request) 116 117 { 117 Element result = GSXML.createBasicResponse(this.doc, DOC_XML_CREATE_EMPTY_FILE); 118 119 if (request == null) 120 { 121 GSXML.addError(this.doc, result, DOC_XML_CREATE_EMPTY_FILE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 118 Document result_doc = XMLConverter.newDOM(); 119 Element result = GSXML.createBasicResponse(result_doc, DOC_XML_CREATE_EMPTY_FILE); 120 121 if (request == null) 122 { 123 GSXML.addError(result, DOC_XML_CREATE_EMPTY_FILE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 122 124 return result; 123 125 } … … 144 146 protected Element processDocXMLGetMetadata(Element request) 145 147 { 146 Element result = GSXML.createBasicResponse(this.doc, DOC_XML_GET_METADATA); 147 148 if (request == null) 149 { 150 GSXML.addError(this.doc, result, DOC_XML_GET_METADATA + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 148 Document result_doc = XMLConverter.newDOM(); 149 Element result = GSXML.createBasicResponse(result_doc, DOC_XML_GET_METADATA); 150 151 if (request == null) 152 { 153 GSXML.addError(result, DOC_XML_GET_METADATA + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 151 154 return result; 152 155 } … … 171 174 for(Element metadataValue : metadataValues) 172 175 { 173 Element metadataElem = this.doc.createElement(GSXML.METADATA_ELEM);176 Element metadataElem = result_doc.createElement(GSXML.METADATA_ELEM); 174 177 metadataElem.setAttribute(GSXML.NAME_ATT, metadataName); 175 178 metadataElem.setAttribute(GSXML.VALUE_ATT, metadataValue.getFirstChild().getNodeValue()); … … 183 186 protected Element processDocXMLSetMetadata(Element request) 184 187 { 185 Element result = GSXML.createBasicResponse(this.doc, DOC_XML_SET_METADATA); 186 187 if (request == null) 188 { 189 GSXML.addError(this.doc, result, DOC_XML_SET_METADATA + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 188 Document result_doc = XMLConverter.newDOM(); 189 Element result = GSXML.createBasicResponse(result_doc, DOC_XML_SET_METADATA); 190 191 if (request == null) 192 { 193 GSXML.addError(result, DOC_XML_SET_METADATA + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 190 194 return result; 191 195 } … … 232 236 catch(Exception ex) 233 237 { 234 GSXML.addError( this.doc,result, DOC_XML_SET_METADATA + ": Error converting the position attribute to an integer", GSXML.ERROR_TYPE_SYNTAX);238 GSXML.addError(result, DOC_XML_SET_METADATA + ": Error converting the position attribute to an integer", GSXML.ERROR_TYPE_SYNTAX); 235 239 return result; 236 240 } … … 252 256 else 253 257 { 254 GSXML.addError( this.doc,result, DOC_XML_SET_METADATA + ": A position or previous value was not given", GSXML.ERROR_TYPE_SYNTAX);258 GSXML.addError(result, DOC_XML_SET_METADATA + ": A position or previous value was not given", GSXML.ERROR_TYPE_SYNTAX); 255 259 return result; 256 260 } … … 262 266 protected Element processDocXMLCreateSection(Element request) 263 267 { 264 Element result = GSXML.createBasicResponse(this.doc, DOC_XML_CREATE_SECTION); 265 266 if (request == null) 267 { 268 GSXML.addError(this.doc, result, DOC_XML_CREATE_SECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 268 Document result_doc = XMLConverter.newDOM(); 269 Element result = GSXML.createBasicResponse(result_doc, DOC_XML_CREATE_SECTION); 270 271 if (request == null) 272 { 273 GSXML.addError(result, DOC_XML_CREATE_SECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 269 274 return result; 270 275 } … … 291 296 protected Element processDocXMLDeleteSection(Element request) 292 297 { 293 Element result = GSXML.createBasicResponse(this.doc, DOC_XML_DELETE_SECTION); 294 295 if (request == null) 296 { 297 GSXML.addError(this.doc, result, DOC_XML_DELETE_SECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 298 Document result_doc = XMLConverter.newDOM(); 299 Element result = GSXML.createBasicResponse(result_doc, DOC_XML_DELETE_SECTION); 300 301 if (request == null) 302 { 303 GSXML.addError(result, DOC_XML_DELETE_SECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 298 304 return result; 299 305 } … … 320 326 protected Element processDocXMLGetSection(Element request) 321 327 { 322 Element result = GSXML.createBasicResponse(this.doc, DOC_XML_GET_SECTION); 323 324 if (request == null) 325 { 326 GSXML.addError(this.doc, result, DOC_XML_GET_SECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 328 Document result_doc = XMLConverter.newDOM(); 329 Element result = GSXML.createBasicResponse(result_doc, DOC_XML_GET_SECTION); 330 331 if (request == null) 332 { 333 GSXML.addError(result, DOC_XML_GET_SECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 327 334 return result; 328 335 } … … 349 356 protected Element processDocXMLSetSection(Element request) 350 357 { 351 Element result = GSXML.createBasicResponse(this.doc, DOC_XML_SET_SECTION); 352 353 if (request == null) 354 { 355 GSXML.addError(this.doc, result, DOC_XML_SET_SECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 358 Document result_doc = XMLConverter.newDOM(); 359 Element result = GSXML.createBasicResponse(result_doc, DOC_XML_SET_SECTION); 360 361 if (request == null) 362 { 363 GSXML.addError(result, DOC_XML_SET_SECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 356 364 return result; 357 365 } … … 394 402 protected Element processDocXMLGetText(Element request) 395 403 { 396 Element result = GSXML.createBasicResponse(this.doc, DOC_XML_GET_TEXT); 397 398 if (request == null) 399 { 400 GSXML.addError(this.doc, result, DOC_XML_GET_TEXT + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 404 Document result_doc = XMLConverter.newDOM(); 405 Element result = GSXML.createBasicResponse(result_doc, DOC_XML_GET_TEXT); 406 407 if (request == null) 408 { 409 GSXML.addError(result, DOC_XML_GET_TEXT + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 401 410 return result; 402 411 } … … 420 429 if (content == null) 421 430 { 422 result.appendChild( this.doc.createElement(GSXML.DOCXML_CONTENT_ELEM));431 result.appendChild(result_doc.createElement(GSXML.DOCXML_CONTENT_ELEM)); 423 432 } 424 433 else 425 434 { 426 Element contentElem = this.doc.createElement(GSXML.DOCXML_CONTENT_ELEM);427 Node textNode = this.doc.createTextNode(content);435 Element contentElem = result_doc.createElement(GSXML.DOCXML_CONTENT_ELEM); 436 Node textNode = result_doc.createTextNode(content); 428 437 contentElem.appendChild(textNode); 429 438 result.appendChild(contentElem); … … 436 445 protected Element processDocXMLSetText(Element request) 437 446 { 438 Element result = GSXML.createBasicResponse(this.doc, DOC_XML_SET_TEXT); 439 440 if (request == null) 441 { 442 GSXML.addError(this.doc, result, DOC_XML_SET_TEXT + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 447 Document result_doc = XMLConverter.newDOM(); 448 Element result = GSXML.createBasicResponse(result_doc, DOC_XML_SET_TEXT); 449 450 if (request == null) 451 { 452 GSXML.addError(result, DOC_XML_SET_TEXT + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 443 453 return result; 444 454 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/DocumentBasket.java
r25635 r28966 27 27 import java.util.Iterator; 28 28 29 import org.w3c.dom.Document; 29 30 import org.w3c.dom.Element; 30 31 import org.w3c.dom.NodeList; … … 35 36 import org.greenstone.gsdl3.util.GSPath; 36 37 import org.greenstone.gsdl3.util.UserContext; 38 import org.greenstone.gsdl3.util.XMLConverter; 37 39 38 40 import java.net.InetAddress; … … 115 117 116 118 // set up short_service_info_ - for now just has name and type 117 Element add_service = this.d oc.createElement(GSXML.SERVICE_ELEM);119 Element add_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 118 120 add_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 119 121 add_service.setAttribute(GSXML.NAME_ATT, ADD_ITEM_SERVICE); … … 121 123 122 124 // set up short_service_info_ - for now just has name and type 123 Element disp_service = this.d oc.createElement(GSXML.SERVICE_ELEM);125 Element disp_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 124 126 disp_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 125 127 disp_service.setAttribute(GSXML.NAME_ATT, DISPLAY_ITEMS_SERVICE); … … 127 129 128 130 // set up short_service_info_ - for now just has name and type 129 Element num_service = this.d oc.createElement(GSXML.SERVICE_ELEM);131 Element num_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 130 132 num_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 131 133 num_service.setAttribute(GSXML.NAME_ATT, ITEM_NUM_SERVICE); … … 133 135 134 136 // set up short_service_info_ - for now just has name and type 135 Element delete_service = this.d oc.createElement(GSXML.SERVICE_ELEM);137 Element delete_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 136 138 delete_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 137 139 delete_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEMS_SERVICE); … … 139 141 140 142 // set up short_service_info_ - for now just has name and type 141 Element deleteone_service = this.d oc.createElement(GSXML.SERVICE_ELEM);143 Element deleteone_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 142 144 deleteone_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 143 145 deleteone_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEM_SERVICE); … … 145 147 146 148 // set up short_service_info_ - for now just has name and type 147 Element deleteall_service = this.d oc.createElement(GSXML.SERVICE_ELEM);149 Element deleteall_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 148 150 deleteall_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 149 151 deleteall_service.setAttribute(GSXML.NAME_ATT, CLEAR_ITEMS_SERVICE); … … 151 153 152 154 // set up short_service_info_ - for now just has name and type 153 Element merge_service = this.d oc.createElement(GSXML.SERVICE_ELEM);155 Element merge_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 154 156 merge_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 155 157 merge_service.setAttribute(GSXML.NAME_ATT, MERGE_ITEM_SERVICE); … … 160 162 161 163 /** returns a specific service description */ 162 protected Element getServiceDescription(String service_id, String lang, String subset)164 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 163 165 { 164 166 if (service_id.equals(ADD_ITEM_SERVICE)) 165 167 { 166 Element add_service = this.doc.createElement(GSXML.SERVICE_ELEM);168 Element add_service = doc.createElement(GSXML.SERVICE_ELEM); 167 169 add_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 168 170 add_service.setAttribute(GSXML.NAME_ATT, ADD_ITEM_SERVICE); … … 172 174 { 173 175 174 Element disp_service = this.doc.createElement(GSXML.SERVICE_ELEM);176 Element disp_service = doc.createElement(GSXML.SERVICE_ELEM); 175 177 disp_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 176 178 disp_service.setAttribute(GSXML.NAME_ATT, DISPLAY_ITEMS_SERVICE); … … 181 183 { 182 184 183 Element num_service = this.doc.createElement(GSXML.SERVICE_ELEM);185 Element num_service = doc.createElement(GSXML.SERVICE_ELEM); 184 186 num_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 185 187 num_service.setAttribute(GSXML.NAME_ATT, ITEM_NUM_SERVICE); … … 190 192 { 191 193 192 Element del_service = this.doc.createElement(GSXML.SERVICE_ELEM);194 Element del_service = doc.createElement(GSXML.SERVICE_ELEM); 193 195 del_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 194 196 del_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEMS_SERVICE); … … 199 201 { 200 202 201 Element clear_service = this.doc.createElement(GSXML.SERVICE_ELEM);203 Element clear_service = doc.createElement(GSXML.SERVICE_ELEM); 202 204 clear_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 203 205 clear_service.setAttribute(GSXML.NAME_ATT, CLEAR_ITEMS_SERVICE); … … 208 210 { 209 211 210 Element delone_service = this.doc.createElement(GSXML.SERVICE_ELEM);212 Element delone_service = doc.createElement(GSXML.SERVICE_ELEM); 211 213 delone_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 212 214 delone_service.setAttribute(GSXML.NAME_ATT, DELETE_ITEM_SERVICE); … … 215 217 if (service_id.equals(MERGE_ITEM_SERVICE)) 216 218 { 217 Element merge_service = this.doc.createElement(GSXML.SERVICE_ELEM);219 Element merge_service = doc.createElement(GSXML.SERVICE_ELEM); 218 220 merge_service.setAttribute(GSXML.TYPE_ATT, "gather"); // what?? 219 221 merge_service.setAttribute(GSXML.NAME_ATT, MERGE_ITEM_SERVICE); … … 229 231 //System.err.println("DOCSMAP = " + docsMap); 230 232 // Create a new (empty) result message 231 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 233 Document result_doc = XMLConverter.newDOM(); 234 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 232 235 233 236 // Get the parameters of the request … … 261 264 Item newItem = generateItem(collection, item); 262 265 items.put(item, newItem); 263 result.appendChild(newItem.wrapIntoElement( ));266 result.appendChild(newItem.wrapIntoElement(result_doc)); 264 267 } 265 268 } … … 270 273 items.put(item, newItem); 271 274 docsMap.put(collection, items); 272 result.appendChild(newItem.wrapIntoElement( ));275 result.appendChild(newItem.wrapIntoElement(result_doc)); 273 276 } 274 277 … … 423 426 { 424 427 Hashtable<String, Hashtable<String, Item>> docsMap = updateDocMap(request); 425 426 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);428 Document result_doc = XMLConverter.newDOM(); 429 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 427 430 428 431 // Get the parameters of the request … … 451 454 452 455 // Create a new (empty) result message 453 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 456 Document result_doc = XMLConverter.newDOM(); 457 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 454 458 455 459 // Get the parameters of the request … … 509 513 510 514 // Create a new (empty) result message 511 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 515 Document result_doc = XMLConverter.newDOM(); 516 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 512 517 513 518 // Get the parameters of the request … … 560 565 561 566 // Create a new (empty) result message 562 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 567 Document result_doc = XMLConverter.newDOM(); 568 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 563 569 564 570 int size = 0; … … 574 580 { 575 581 Item item = (Item) values.next(); 576 result.appendChild(item.wrapIntoElement( ));577 } 578 } 579 580 Element selement = this.doc.createElement("size");582 result.appendChild(item.wrapIntoElement(result_doc)); 583 } 584 } 585 586 Element selement = result_doc.createElement("size"); 581 587 selement.setAttribute("value", size + ""); 582 588 result.appendChild(selement); … … 585 591 } 586 592 587 593 private Element getDocumentMetadata(String to, UserContext userContext, Iterator<String> ids) 588 594 { 589 595 590 596 // Build a request to obtain some document metadata 591 Element dm_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 592 Element dm_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext); 597 Document msg_doc = XMLConverter.newDOM(); 598 Element dm_message = msg_doc.createElement(GSXML.MESSAGE_ELEM); 599 Element dm_request = GSXML.createBasicRequest(msg_doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext); 593 600 dm_message.appendChild(dm_request); 594 601 … … 599 606 meta_names.add("Date"); 600 607 601 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);608 Element param_list = msg_doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 602 609 603 610 Element param = null; … … 606 613 { 607 614 String name = i.next(); 608 param = this.doc.createElement(GSXML.PARAM_ELEM);615 param = msg_doc.createElement(GSXML.PARAM_ELEM); 609 616 param_list.appendChild(param); 610 617 param.setAttribute(GSXML.NAME_ATT, "metadata"); … … 615 622 616 623 // create the doc node list for the metadata request 617 Element dm_doc_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);624 Element dm_doc_list = msg_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 618 625 dm_request.appendChild(dm_doc_list); 619 626 … … 621 628 { 622 629 // Add the documentNode to the list 623 Element dm_doc_node = this.doc.createElement(GSXML.DOC_NODE_ELEM);630 Element dm_doc_node = msg_doc.createElement(GSXML.DOC_NODE_ELEM); 624 631 dm_doc_list.appendChild(dm_doc_node); 625 632 dm_doc_node.setAttribute(GSXML.NODE_ID_ATT, ids.next()); … … 634 641 635 642 // Create a new (empty) result message 636 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 643 Document result_doc = XMLConverter.newDOM(); 644 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 637 645 638 646 Iterator<String> keys = docsMap.keySet().iterator(); … … 644 652 Iterator itemItr = items.values().iterator(); 645 653 646 Element collectionNode = this.doc.createElement("documentList");654 Element collectionNode = result_doc.createElement("documentList"); 647 655 collectionNode.setAttribute("name", collection); 648 656 result.appendChild(collectionNode); … … 651 659 { 652 660 Item item = (Item) itemItr.next(); 653 Element itemElement = this.doc.createElement("item");661 Element itemElement = result_doc.createElement("item"); 654 662 655 663 collectionNode.appendChild(itemElement); … … 698 706 } 699 707 700 public Element wrapIntoElement( )708 public Element wrapIntoElement(Document doc) 701 709 { 702 710 Element itemElement = doc.createElement("item"); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/DocumentMaker.java
r25895 r28966 40 40 import org.greenstone.gsdl3.util.GSXML; 41 41 import org.greenstone.gsdl3.util.UserContext; 42 42 import org.greenstone.gsdl3.util.XMLConverter; 43 44 import org.w3c.dom.Document; 43 45 import org.w3c.dom.Element; 44 46 import org.w3c.dom.NodeList; … … 84 86 for (int i = 0; i < services.length; i++) 85 87 { 86 Element service = this.d oc.createElement(GSXML.SERVICE_ELEM);88 Element service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 87 89 service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 88 90 service.setAttribute(GSXML.NAME_ATT, services[i]); … … 90 92 } 91 93 92 _GSDM = new GSDocumentModel(this.site_home, this. doc, this.router);94 _GSDM = new GSDocumentModel(this.site_home, this.router); 93 95 94 96 return true; 95 97 } 96 98 97 protected Element getServiceDescription(String service_id, String lang, String subset)99 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 98 100 { 99 101 for (int i = 0; i < services.length; i++) … … 101 103 if (service_id.equals(services[i])) 102 104 { 103 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);105 Element service_elem = doc.createElement(GSXML.SERVICE_ELEM); 104 106 service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 105 107 service_elem.setAttribute(GSXML.NAME_ATT, services[i]); … … 117 119 protected Element processDocumentCreate(Element request) 118 120 { 119 Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_CREATE); 120 121 if (request == null) 122 { 123 GSXML.addError(this.doc, result, DOCUMENT_CREATE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 121 Document result_doc = XMLConverter.newDOM(); 122 Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_CREATE); 123 124 if (request == null) 125 { 126 GSXML.addError(result, DOCUMENT_CREATE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 124 127 return result; 125 128 } … … 148 151 protected Element processDocumentDelete(Element request) 149 152 { 150 Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_DELETE); 151 152 if (request == null) 153 { 154 GSXML.addError(this.doc, result, DOCUMENT_DELETE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 153 Document result_doc = XMLConverter.newDOM(); 154 Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_DELETE); 155 156 if (request == null) 157 { 158 GSXML.addError(result, DOCUMENT_DELETE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 155 159 return result; 156 160 } … … 178 182 protected Element processDocumentDuplicate(Element request) 179 183 { 180 Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_DUPLICATE); 181 182 if (request == null) 183 { 184 GSXML.addError(this.doc, result, DOCUMENT_DUPLICATE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 184 Document result_doc = XMLConverter.newDOM(); 185 Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_DUPLICATE); 186 187 if (request == null) 188 { 189 GSXML.addError(result, DOCUMENT_DUPLICATE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 185 190 return result; 186 191 } … … 211 216 protected Element processDocumentGetInformation(Element request) 212 217 { 213 Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_GET_INFORMATION); 214 215 if (request == null) 216 { 217 GSXML.addError(this.doc, result, DOCUMENT_GET_INFORMATION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 218 Document result_doc = XMLConverter.newDOM(); 219 Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_GET_INFORMATION); 220 221 if (request == null) 222 { 223 GSXML.addError(result, DOCUMENT_GET_INFORMATION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 218 224 return result; 219 225 } … … 249 255 protected Element processDocumentMove(Element request) 250 256 { 251 Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_MOVE); 252 253 if (request == null) 254 { 255 GSXML.addError(this.doc, result, DOCUMENT_MOVE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 257 Document result_doc = XMLConverter.newDOM(); 258 Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_MOVE); 259 260 if (request == null) 261 { 262 GSXML.addError(result, DOCUMENT_MOVE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 256 263 return result; 257 264 } … … 281 288 protected Element processDocumentMerge(Element request) 282 289 { 283 Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_MERGE); 284 285 if (request == null) 286 { 287 GSXML.addError(this.doc, result, DOCUMENT_MERGE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 290 Document result_doc = XMLConverter.newDOM(); 291 Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_MERGE); 292 293 if (request == null) 294 { 295 GSXML.addError(result, DOCUMENT_MERGE + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 288 296 return result; 289 297 } … … 312 320 protected Element processDocumentSplit(Element request) 313 321 { 314 Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_SPLIT); 315 316 if (request == null) 317 { 318 GSXML.addError(this.doc, result, DOCUMENT_SPLIT + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 322 Document result_doc = XMLConverter.newDOM(); 323 Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_SPLIT); 324 325 if (request == null) 326 { 327 GSXML.addError(result, DOCUMENT_SPLIT + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 319 328 return result; 320 329 } … … 338 347 catch (Exception ex) 339 348 { 340 GSXML.addError( this.doc,result, DOCUMENT_SPLIT + ": The split point was not an integer", GSXML.ERROR_TYPE_SYNTAX);349 GSXML.addError(result, DOCUMENT_SPLIT + ": The split point was not an integer", GSXML.ERROR_TYPE_SYNTAX); 341 350 return result; 342 351 } … … 354 363 protected Element processDocumentExecuteTransaction(Element request) 355 364 { 356 Element result = GSXML.createBasicResponse(this.doc, DOCUMENT_EXECUTE_TRANSACTION); 357 358 if (request == null) 359 { 360 GSXML.addError(this.doc, result, DOCUMENT_EXECUTE_TRANSACTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 365 Document result_doc = XMLConverter.newDOM(); 366 Element result = GSXML.createBasicResponse(result_doc, DOCUMENT_EXECUTE_TRANSACTION); 367 368 if (request == null) 369 { 370 GSXML.addError(result, DOCUMENT_EXECUTE_TRANSACTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 361 371 return result; 362 372 } … … 367 377 if (param_list == null) 368 378 { 369 GSXML.addError( this.doc,result, DOCUMENT_EXECUTE_TRANSACTION + ": Request has no parameter list", GSXML.ERROR_TYPE_SYNTAX);379 GSXML.addError(result, DOCUMENT_EXECUTE_TRANSACTION + ": Request has no parameter list", GSXML.ERROR_TYPE_SYNTAX); 370 380 return result; 371 381 } … … 419 429 420 430 //_GSDM.documentCreate(oid, collection, userContext); <--- Maybe go back to this 421 _GSDM.documentXMLSetSection(oid, collection, this.doc.createElement(GSXML.DOCXML_SECTION_ELEM), _GSDM.operationStringToInt(subOperation), userContext);431 _GSDM.documentXMLSetSection(oid, collection, result_doc.createElement(GSXML.DOCXML_SECTION_ELEM), _GSDM.operationStringToInt(subOperation), userContext); 422 432 } 423 433 else if (operation.equals("delete")) -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/FedoraSearch.java.tmp
r20294 r28966 185 185 186 186 if (fedora_url != null) { 187 GSXML.addMetadata( this.doc,metadata_list, "URL", fedora_url);187 GSXML.addMetadata( metadata_list, "URL", fedora_url); 188 188 } 189 189 if (o.getDescription() != null) { 190 GSXML.addMetadata( this.doc,metadata_list, "Description", description[0]);190 GSXML.addMetadata(metadata_list, "Description", description[0]); 191 191 } 192 192 if (title[0] != null) { 193 GSXML.addMetadata( this.doc,metadata_list, "Title", title[0]);193 GSXML.addMetadata(metadata_list, "Title", title[0]); 194 194 } 195 195 } … … 211 211 // Add a metadata element specifying the number of matching documents 212 212 //logger.info("FedoraSearch Number of Documents:" + matchNum); 213 GSXML.addMetadata( this.doc,metadata_list, "numDocsMatched", ""+matchNum);213 GSXML.addMetadata(metadata_list, "numDocsMatched", ""+matchNum); 214 214 215 215 return result; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/FedoraServiceProxy.java
r26311 r28966 87 87 extends ServiceRack implements OID.OIDTranslatable 88 88 { 89 90 static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.FedoraServiceProxy.class.getName()); 91 protected MacroResolver macro_resolver = null; 92 93 94 /** The handle to the fedora connection */ 95 private DigitalLibraryServicesAPIA fedoraServicesAPIA; 96 97 private String prevLanguage = ""; 98 99 public void cleanUp() { 100 super.cleanUp(); 101 } 102 103 /** sets the message router */ 104 public void setMessageRouter(MessageRouter m) { 105 this.router = m; 106 setLibraryName(m.getLibraryName()); 107 } 108 109 /** the no-args constructor */ 110 public FedoraServiceProxy() { 111 super(); 112 113 this.macro_resolver = new BasicTextMacroResolver(); 114 } 115 116 117 /* configure the service module 118 * 119 * @param info the XML node <serviceRack name="XXX"/> with name equal 120 * to the class name (of the subclass) 121 * 122 * must configure short_service_info_ and service_info_map_ 123 * @return true if configured ok 124 * must be implemented in subclasses 125 */ 126 /*public boolean configure(Element info) { 127 return configure(info, null); 128 }*/ 129 130 public boolean configure(Element info, Element extra_info) { 131 // set up the class loader 132 133 if (!super.configure(info, extra_info)){ 134 return false; 135 } 136 137 // Try to instantiate a Fedora dl handle 138 try { 139 // Fedora connection settings defaults. 140 // Read host and port from global.properties, since by default, we expect the Greenstone server to be used 141 Properties globalProperties = new Properties(); 142 globalProperties.load(Class.forName("org.greenstone.util.GlobalProperties").getClassLoader().getResourceAsStream("global.properties")); 143 String host = globalProperties.getProperty("tomcat.server", "localhost"); 144 String port = globalProperties.getProperty("tomcat.port", "8383"); 145 String protocol = "http"; 146 String username = "fedoraIntCallUser"; //"fedoraAdmin" 147 String password = "changeme"; //"<user password>" 148 149 // See if buildConfig.xml overrides any of the defaults 150 // info is the <serviceRack> Element from buildConfig.xml (extra_info are the Elements of collectionConfig.xml) 151 152 NodeList nodes = info.getElementsByTagName("fedoraConnection"); 153 if(nodes != null && nodes.getLength() > 0) { 154 155 Element fedoraElement = (Element)nodes.item(0); 156 if(fedoraElement.hasAttribute("protocol")) { 157 protocol = fedoraElement.getAttribute("protocol"); 158 } 159 if(fedoraElement.hasAttribute("host")) { 160 host = fedoraElement.getAttribute("host"); 161 } 162 if(fedoraElement.hasAttribute("port")) { 163 port = fedoraElement.getAttribute("port"); 164 } 165 if(fedoraElement.hasAttribute("username")) { 166 username = fedoraElement.getAttribute("username"); 167 } 168 if(fedoraElement.hasAttribute("password")) { 169 password = fedoraElement.getAttribute("password"); 170 } 171 } 172 173 fedoraServicesAPIA = new FedoraServicesAPIA(protocol, host, Integer.parseInt(port), username, password); 174 175 } catch(org.greenstone.fedora.services.FedoraGS3Exception.CancelledException e) { 176 // The user pressed cancel in the fedora services instantiation dialog 177 return false; 178 } catch(Exception e) { 179 logger.error("Error instantiating the interface to the Fedora Repository:\n", e); // second parameter prints e's stacktrace 180 return false; 181 } 182 183 184 // Need to put the available services into short_service_info 185 // This is used by DefaultReceptionist.process() has an exception. But DefaultReceptionist.addExtraInfo() 186 // isn't helpful, and the problem actually already occurs in 187 // Receptionist.process() -> PageAction.process() -> MessageRouter.process() 188 // -> Collection/ServiceCluster.process() -> ServiceCluster.configureServiceRackList() 189 // -> ServiceRack.process() -> ServiceRack.processDescribe() -> ServiceRack.getServiceList(). 190 // ServiceRack.getServiceList() requires this ServiceRack's services to be filled into the 191 // short_service_info Element which needs to be done in this FedoraServiceProxy.configure(). 192 193 // get the display and format elements from the coll config file for 194 // the classifiers 195 AbstractBrowse.extractExtraClassifierInfo(info, extra_info); 196 197 // Copied from IViaProxy.java: 198 String collection = fedoraServicesAPIA.describeCollection(this.cluster_name); 199 200 Element collNode = getResponseAsDOM(collection); 201 Element serviceList = (Element)collNode.getElementsByTagName(GSXML.SERVICE_ELEM+GSXML.LIST_MODIFIER).item(0); 202 203 //this.short_service_info.appendChild(short_service_info.getOwnerDocument().importNode(serviceList, true)); 204 // we want the individual service Elements, not the serviceList Element which will wrap it later 205 NodeList services = collNode.getElementsByTagName(GSXML.SERVICE_ELEM); 206 for(int i = 0; i < services.getLength(); i++) { 207 Node service = services.item(i); 208 this.short_service_info.appendChild(short_service_info.getOwnerDocument().importNode(service, true)); 209 } 210 211 // add some format info to service map if there is any 212 String path = GSPath.appendLink(GSXML.SEARCH_ELEM, GSXML.FORMAT_ELEM); 213 Element search_format = (Element) GSXML.getNodeByPath(extra_info, path); 214 if (search_format != null) { 215 this.format_info_map.put("TextQuery", this.desc_doc.importNode(search_format, true)); 216 this.format_info_map.put("FieldQuery", this.desc_doc.importNode(search_format, true)); 217 } 218 219 // look for document display format 220 path = GSPath.appendLink(GSXML.DISPLAY_ELEM, GSXML.FORMAT_ELEM); 221 Element display_format = (Element)GSXML.getNodeByPath(extra_info, path); 222 if (display_format != null) { 223 this.format_info_map.put("DocumentContentRetrieve", this.desc_doc.importNode(display_format, true)); 224 // should we make a copy? 225 } 226 227 // the format info 228 Element cb_format_info = this.desc_doc.createElement(GSXML.FORMAT_ELEM); 229 boolean format_found = false; 230 231 // look for classifier <browse><format> 232 path = GSPath.appendLink(GSXML.BROWSE_ELEM, GSXML.FORMAT_ELEM); 233 Element browse_format = (Element)GSXML.getNodeByPath(extra_info, path); 234 if (browse_format != null) { 235 cb_format_info.appendChild(GSXML.duplicateWithNewName(this.desc_doc, browse_format, GSXML.DEFAULT_ELEM, true)); 236 format_found = true; 237 } 238 239 // add in to the description a simplified list of classifiers 240 Element browse = (Element)GSXML.getChildByTagName(extra_info, "browse"); // the <browse> 241 NodeList classifiers = browse.getElementsByTagName(GSXML.CLASSIFIER_ELEM); 242 for(int i=0; i<classifiers.getLength(); i++) { 243 Element cl = (Element)classifiers.item(i); 244 Element new_cl = (Element)this.desc_doc.importNode(cl, false); // just import this node, not the children 245 246 // get the format info out, and put inside a classifier element 247 Element format_cl = (Element)new_cl.cloneNode(false); 248 Element format = (Element)GSXML.getChildByTagName(cl, GSXML.FORMAT_ELEM); 249 if (format != null) { 250 251 //copy all the children 252 NodeList elems = format.getChildNodes(); 253 for (int j=0; j<elems.getLength();j++) { 254 format_cl.appendChild(this.desc_doc.importNode(elems.item(j), true)); 255 } 256 cb_format_info.appendChild(format_cl); 257 format_found = true; 258 } 259 260 } 261 262 if (format_found) { 263 this.format_info_map.put("ClassifierBrowse", cb_format_info); 264 } 265 266 267 // set up the macro resolver 268 macro_resolver.setSiteDetails(this.site_http_address, this.cluster_name, this.getLibraryName()); 269 Element replacement_elem = (Element)GSXML.getChildByTagName(extra_info, "replaceList"); 270 if (replacement_elem != null) { 271 macro_resolver.addMacros(replacement_elem); 272 } 273 // look for any refs to global replace lists 274 NodeList replace_refs_elems = extra_info.getElementsByTagName("replaceListRef"); 275 for (int i=0; i<replace_refs_elems.getLength(); i++) { 276 String id = ((Element)replace_refs_elems.item(i)).getAttribute("id"); 277 if (!id.equals("")) { 278 Element replace_list = GSXML.getNamedElement(this.router.config_info, "replaceList", "id", id); 279 if (replace_list != null) { 280 macro_resolver.addMacros(replace_list); 281 } 282 } 283 } 284 285 // configured ok 286 return true; 287 } 288 289 290 /* "DocumentContentRetrieve", "DocumentMetadataRetrieve", "DocumentStructureRetrieve", 291 "TextQuery", "FieldQuery", "ClassifierBrowse", "ClassifierBrowseMetadataRetrieve" */ 292 293 protected Element processDocumentContentRetrieve(Element request) { 294 String[] docIDs = parse(request, GSXML.DOC_NODE_ELEM, GSXML.NODE_ID_ATT); 295 String[] relLinks = parse(request, GSXML.DOC_NODE_ELEM, "externalURL"); 296 297 //logger.error("### request:"); 298 //logger.error(GSXML.elementToString(request, true)); 299 300 if(docIDs == null) { 301 logger.error("DocumentContentRetrieve request specified no doc nodes.\n"); 302 return XMLConverter.newDOM().createElement(GSXML.RESPONSE_ELEM); // empty response 303 } else { 304 for(int i = 0; i < docIDs.length; i++) { 305 //logger.error("BEFORE: docIDs[" + i + "]: " + docIDs[i]); 306 if(relLinks[i] != null && docIDs[i].startsWith("http://")) { // need to do a look up 307 docIDs[i] = translateExternalId(docIDs[i]); 308 } else { 309 docIDs[i] = translateId(docIDs[i]); 310 } 311 //logger.error("AFTER: docIDs[" + i + "]: " + docIDs[i]); 312 } 313 } 314 315 String lang = request.getAttribute(GSXML.LANG_ATT); 316 if(!lang.equals(prevLanguage)) { 317 prevLanguage = lang; 318 fedoraServicesAPIA.setLanguage(lang); 319 } 320 321 // first param (the collection) is not used by Fedora 322 Element response = getResponseAsDOM(fedoraServicesAPIA.retrieveDocumentContent(this.cluster_name, docIDs)); 323 324 325 // resolve any collection specific macros 326 NodeList nodeContents = response.getElementsByTagName(GSXML.NODE_CONTENT_ELEM); 327 for(int i = 0; i < nodeContents.getLength(); i++) { 328 Element nodeContent = (Element)nodeContents.item(i); 329 /*if(nodeContent != null) { 330 nodeContent = (Element)nodeContent.getFirstChild(); // textNode 331 }*/ 332 //logger.error("GIRAFFE 1. content retrieve response - nodeContent: " + GSXML.nodeToFormattedString(nodeContent)); 333 String docContent = nodeContent.getFirstChild().getNodeValue(); // getTextNode and get its contents. 334 //logger.error("GIRAFFE 2. content retrieve response - docContent: " + docContent); 335 336 if(docContent != null) { 337 // get document text and resolve and macros. Rel and external links have _httpextlink_ set by HTMLPlugin 338 docContent = macro_resolver.resolve(docContent, lang, MacroResolver.SCOPE_TEXT, ""); // doc_id 339 nodeContent.getFirstChild().setNodeValue(docContent); 340 //logger.error("GIRAFFE 3. content retrieve response. Updated docContent: " + docContent); 341 } 342 } 343 344 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 345 } 346 347 protected Element processDocumentStructureRetrieve(Element request) { 348 String[] docIDs = parse(request, GSXML.DOC_NODE_ELEM, GSXML.NODE_ID_ATT); 349 String[] relLinks = parse(request, GSXML.DOC_NODE_ELEM, "externalURL"); 350 351 if(docIDs == null) { 352 logger.error("DocumentStructureRetrieve request specified no doc nodes.\n"); 353 return XMLConverter.newDOM().createElement(GSXML.RESPONSE_ELEM); // empty response 354 } else { 355 for(int i = 0; i < docIDs.length; i++) { 356 //logger.error("BEFORE: docIDs[" + i + "]: " + docIDs[i]); 357 if(relLinks[i] != null && docIDs[i].startsWith("http://")) { // need to do a look up 358 docIDs[i] = translateExternalId(docIDs[i]); 359 } else { 360 docIDs[i] = translateId(docIDs[i]); 361 } 362 } 363 } 364 365 NodeList params = request.getElementsByTagName(GSXML.PARAM_ELEM); 366 String structure=""; 367 String info=""; 368 for(int i = 0; i < params.getLength(); i++) { 369 Element param = (Element)params.item(i); 370 if(param.getAttribute("name").equals("structure")) { 371 structure = structure + param.getAttribute("value") + "|"; 372 } else if(param.getAttribute("name").equals("info")) { 373 info = info + param.getAttribute("value") + "|"; 374 } 375 } 376 377 String lang = request.getAttribute(GSXML.LANG_ATT); 378 if(!lang.equals(prevLanguage)) { 379 prevLanguage = lang; 380 fedoraServicesAPIA.setLanguage(lang); 381 } 382 Element response = getResponseAsDOM(fedoraServicesAPIA.retrieveDocumentStructure( 383 this.cluster_name, docIDs, new String[]{structure}, new String[]{info})); 384 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 385 } 386 387 protected Element processDocumentMetadataRetrieve(Element request) { 388 String[] docIDs = parse(request, GSXML.DOC_NODE_ELEM, GSXML.NODE_ID_ATT); 389 String[] relLinks = parse(request, GSXML.DOC_NODE_ELEM, "externalURL"); 390 391 if(docIDs == null) { 392 logger.error("DocumentMetadataRetrieve request specified no doc nodes.\n"); 393 return XMLConverter.newDOM().createElement(GSXML.RESPONSE_ELEM); // empty response 394 } else { 395 for(int i = 0; i < docIDs.length; i++) { 396 //logger.error("**** relLinks[i]: " + relLinks[i]); 397 //logger.error("**** docIDs[i]: " + docIDs[i]); 398 if(relLinks[i] != null && docIDs[i].startsWith("http://")) { // need to do a look up 399 docIDs[i] = translateExternalId(docIDs[i]); 400 } else { 401 docIDs[i] = translateId(docIDs[i]); 402 } 403 //logger.error("AFTER: docIDs[" + i + "]: " + docIDs[i]); 404 } 405 } 406 407 NodeList params = request.getElementsByTagName(GSXML.PARAM_ELEM); 408 String[] metafields = {}; 409 if(params.getLength() > 0) { 410 metafields = new String[params.getLength()]; 411 for(int i = 0; i < metafields.length; i++) { 412 Element param = (Element)params.item(i); 413 //if(param.hasAttribute(GSXML.NAME_ATT) && param.getAttribute(GSXML.NAME_ATT).equals("metadata") && param.hasAttribute(GSXML.VALUE_ATT)) { 414 if(param.hasAttribute(GSXML.VALUE_ATT)){ 415 metafields[i] = param.getAttribute(GSXML.VALUE_ATT); 416 } else { 417 metafields[i] = ""; 418 } 419 } 420 } 421 422 String lang = request.getAttribute(GSXML.LANG_ATT); 423 if(!lang.equals(prevLanguage)) { 424 prevLanguage = lang; 425 fedoraServicesAPIA.setLanguage(lang); 426 } 427 Element response = getResponseAsDOM(fedoraServicesAPIA.retrieveDocumentMetadata( 428 this.cluster_name, docIDs, metafields)); 429 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 430 } 431 432 protected Element processClassifierBrowseMetadataRetrieve(Element request) { 433 String[] classIDs = parse(request, GSXML.CLASS_NODE_ELEM, GSXML.NODE_ID_ATT); 434 //String[] relLinks = parse(request, GSXML.CLASS_NODE_ELEM, "externalURL"); 435 436 if(classIDs == null) { 437 logger.error("ClassifierBrowseMetadataRetrieve request specified no classifier nodes.\n"); 438 return XMLConverter.newDOM().createElement(GSXML.RESPONSE_ELEM); // empty response 439 } else { 440 for(int i = 0; i < classIDs.length; i++) { 441 classIDs[i] = translateId(classIDs[i]); 442 } 443 } 444 445 NodeList params = request.getElementsByTagName(GSXML.PARAM_ELEM); 446 String[] metafields = {}; 447 if(params.getLength() > 0) { 448 metafields = new String[params.getLength()]; 449 for(int i = 0; i < metafields.length; i++) { 450 Element param = (Element)params.item(i); 451 if(param.hasAttribute(GSXML.VALUE_ATT)){ 452 metafields[i] = param.getAttribute(GSXML.VALUE_ATT); 453 } else { 454 metafields[i] = ""; 455 } 456 } 457 } 458 459 String lang = request.getAttribute(GSXML.LANG_ATT); 460 if(!lang.equals(prevLanguage)) { 461 prevLanguage = lang; 462 fedoraServicesAPIA.setLanguage(lang); 463 } 464 Element response = getResponseAsDOM(fedoraServicesAPIA.retrieveBrowseMetadata( 465 this.cluster_name, "ClassifierBrowseMetadataRetrieve", classIDs, metafields)); 466 //logger.error("**** Response from retrieveBrowseMeta: " + GSXML.elementToString(response, true)); 467 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 468 } 469 470 protected Element processClassifierBrowse(Element request) { 471 String collection = this.cluster_name; 472 String lang = request.getAttribute(GSXML.LANG_ATT); 473 if(!lang.equals(prevLanguage)) { 474 prevLanguage = lang; 475 fedoraServicesAPIA.setLanguage(lang); 476 } 477 478 NodeList classNodes = request.getElementsByTagName(GSXML.CLASS_NODE_ELEM); 479 if(classNodes == null || classNodes.getLength() <= 0) { 480 logger.error("ClassifierBrowse request specified no classifier IDs.\n"); 481 return XMLConverter.newDOM().createElement(GSXML.RESPONSE_ELEM); // empty response 482 } 483 String classifierIDs[] = new String[classNodes.getLength()]; 484 for(int i = 0; i < classifierIDs.length; i++) { 485 Element e = (Element)classNodes.item(i); 486 classifierIDs[i] = e.getAttribute(GSXML.NODE_ID_ATT); 487 classifierIDs[i] = translateId(classifierIDs[i]); 488 } 489 490 NodeList params = request.getElementsByTagName(GSXML.PARAM_ELEM); 491 String structure=""; 492 String info=""; 493 for(int i = 0; i < params.getLength(); i++) { 494 Element param = (Element)params.item(i); 495 if(param.getAttribute("name").equals("structure")) { 496 structure = structure + param.getAttribute("value") + "|"; 497 } else if(param.getAttribute("name").equals("info")) { 498 info = info + param.getAttribute("value") + "|"; 499 } 500 } 501 ///structure = structure + "siblings"; //test for getting with classifier browse structure: siblings 502 503 Element response 504 = getResponseAsDOM(fedoraServicesAPIA.retrieveBrowseStructure(collection, "ClassifierBrowse", classifierIDs, 505 new String[] {structure}, new String[] {info})); 506 //logger.error("**** FedoraServiceProxy - Response from retrieveBrowseStructure: " + GSXML.elementToString(response, true)); 507 508 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 509 } 510 511 protected Element processTextQuery(Element request) { 512 return processQuery(request, "TextQuery"); 513 } 514 515 protected Element processFieldQuery(Element request) { 516 return processQuery(request, "FieldQuery"); 517 } 518 519 protected Element processQuery(Element request, String querytype) { 520 String collection = this.cluster_name; 521 522 String lang = request.getAttribute(GSXML.LANG_ATT); 523 if(!lang.equals(prevLanguage)) { 524 prevLanguage = lang; 525 fedoraServicesAPIA.setLanguage(lang); 526 } 527 528 NodeList paramNodes = request.getElementsByTagName(GSXML.PARAM_ELEM); 529 if(paramNodes.getLength() > 0) { 530 HashMap<String, String> params = new HashMap<String, String>(paramNodes.getLength()); 531 for(int i = 0; i < paramNodes.getLength(); i++) { 532 Element param = (Element)paramNodes.item(i); 533 params.put(param.getAttribute(GSXML.NAME_ATT), param.getAttribute(GSXML.VALUE_ATT)); 534 } 535 536 Element response = getResponseAsDOM(fedoraServicesAPIA.query(collection, querytype, params)); 537 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 538 } else { 539 logger.error("TextQuery request specified no parameters.\n"); 540 return XMLConverter.newDOM().createElement(GSXML.RESPONSE_ELEM); // empty response 541 } 542 } 543 544 // get the requested nodeIDs out of a request message 545 protected String[] parse(Element request, String nodeType, String attribute) { 546 String[] nodevalues = null; 547 int count = 0; 548 549 Element docList = (Element) GSXML.getChildByTagName(request, nodeType+GSXML.LIST_MODIFIER); 550 if (docList != null) { 551 NodeList docNodes = docList.getElementsByTagName(nodeType); 552 if(docNodes.getLength() > 0) { 553 nodevalues = new String[docNodes.getLength()]; 554 for(int i = 0; i < nodevalues.length; i++) { 555 Element e = (Element)docNodes.item(i); 556 String id = e.getAttribute(attribute); 557 // Not sure why there are at times requests for hashXXX.dir, which is not a fedora PID 558 // To skip these: if not requesting an externalURL and if requesting a docNode, 559 // then the ID has to contain the : character special to fedora PIDs 560 if(attribute == "externalURL" || (nodeType != GSXML.DOC_NODE_ELEM || id.contains(":"))) { 561 nodevalues[count++] = id; 562 } 563 } 564 } 565 } 566 567 if(count == 0) { 568 return null; 569 } 570 571 String[] tmp = new String[count]; 572 for(int i = 0; i < count; i++) { 573 tmp[i] = nodevalues[i]; 574 } 575 nodevalues = null; 576 nodevalues = tmp; 577 578 return nodevalues; 579 } 580 581 582 /** if id ends in .fc, .pc etc, then translate it to the correct id 583 * For now (for testing things work) the default implementation is to just remove the suffix */ 584 protected String translateId(String id) { 585 if (OID.needsTranslating(id)) { 586 return OID.translateOID(this, id); //return translateOID(id); 587 } 588 return id; 589 } 590 591 /** if an id is not a greenstone id (an external id) then translate 592 * it to a greenstone one 593 * default implementation: return the id. Custom implementation: 594 * the id is a url that maps to a fedorapid whose dc.title contains the required HASHID */ 595 protected String translateExternalId(String id) { 596 //logger.error("*** to translate an external ID: " + id); /////return id; 597 return this.externalId2OID(id); 598 } 599 600 /** converts an external id to greenstone OID. External ID is a URL link 601 * that, if relative, maps to a fedorapid that has an entry in fedora. 602 * The dc:title meta for that fedorapid will contain the required OID. */ 603 public String externalId2OID(String extid) { 604 if(extid.endsWith(".rt") && (extid.indexOf('.') != extid.lastIndexOf('.'))) { 605 // .rt is not file extension, but Greenstone request for root of document 606 // not relevant for external ID 607 extid = extid.substring(0, extid.length()-3); 608 } 609 610 // the following method is unique to FedoraServicesAPIA 611 String response = ((FedoraServicesAPIA)fedoraServicesAPIA).getDocIDforURL(extid, this.cluster_name); 612 if(response.indexOf(GSXML.ERROR_ELEM) != -1) { 613 logger.error("**** The following error occurred when trying to find externalID for ID " + extid); 614 logger.error(response); 615 return extid; 616 } 617 if(response.equals("")) { 618 return extid; 619 } else { 620 return response; 621 } 622 } 623 624 625 /** translates relative oids into proper oids: 626 * .pr (parent), .rt (root) .fc (first child), .lc (last child), 627 * .ns (next sibling), .ps (previous sibling) 628 * .np (next page), .pp (previous page) : links sections in the order that you'd read the document 629 * a suffix is expected to be present so test before using 630 */ 631 public String processOID(String doc_id, String top, String suff, int sibling_num) { 632 633 // send off request to get sibling etc. information from Fedora 634 Element response = null; 635 String[] children = null; 636 if(doc_id.startsWith("CL")) { // classifiernode 637 response = getResponseAsDOM(fedoraServicesAPIA.retrieveBrowseStructure(this.cluster_name, "ClassifierBrowse", new String[]{doc_id}, 638 new String[]{"children"}, new String[]{"siblingPosition"})); 639 NodeList nl = response.getElementsByTagName(GSXML.NODE_STRUCTURE_ELEM); 640 if(nl.getLength() > 0) { 641 Element nodeStructure = (Element)nl.item(0); 642 643 if(nodeStructure != null) { 644 Element root = (Element) GSXML.getChildByTagName(nodeStructure, GSXML.CLASS_NODE_ELEM); 645 if(root != null) { // get children 646 NodeList classNodes = root.getElementsByTagName(GSXML.CLASS_NODE_ELEM); 647 if(classNodes != null) { 648 children = new String[classNodes.getLength()]; 649 for(int i = 0; i < children.length; i++) { 650 Element child = (Element)classNodes.item(i); 651 children[i] = child.getAttribute(GSXML.NODE_ID_ATT); 652 } 653 } 654 } 655 } 656 } 657 } else { // documentnode 658 response = getResponseAsDOM(fedoraServicesAPIA.retrieveDocumentStructure(this.cluster_name, new String[]{doc_id}, 659 new String[]{"children"}, new String[]{"siblingPosition"})); 660 String path = GSPath.createPath(new String[]{GSXML.RESPONSE_ELEM, GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER, 661 GSXML.DOC_NODE_ELEM, GSXML.NODE_STRUCTURE_ELEM, GSXML.DOC_NODE_ELEM}); 662 Element parentDocNode = (Element) GSXML.getNodeByPath(response, path); 663 664 if (parentDocNode == null) { 665 return top; 666 } // else 667 NodeList docNodes = parentDocNode.getElementsByTagName(GSXML.DOC_NODE_ELEM); // only children should remain, since that's what we requested 668 if(docNodes.getLength() > 0) { 669 children = new String[docNodes.getLength()]; 670 671 for(int i = 0; i < children.length; i++) { 672 Element e = (Element)docNodes.item(i); 673 children[i] = e.getAttribute(GSXML.NODE_ID_ATT); 674 } 675 } else { // return root node 676 children = new String[]{doc_id}; 677 } 678 } 679 680 if (suff.equals("fc")) { 681 return children[0]; 682 } else if (suff.equals("lc")) { 683 return children[children.length-1]; 684 } else { 685 if (suff.equals("ss")) { 686 return children[sibling_num-1]; 687 } 688 // find the position that we are at. 689 int i=0; 690 while(i<children.length) { 691 if (children[i].equals(top)) { 692 break; 693 } 694 i++; 695 } 696 697 if (suff.equals("ns")) { 698 if (i==children.length-1) { 699 return children[i]; 700 } 701 return children[i+1]; 702 } else if (suff.equals("ps")) { 703 if (i==0) { 704 return children[i]; 705 } 706 return children[i-1]; 707 } 708 } 709 710 return top; 711 } 712 713 714 protected Element getResponseAsDOM(String response) { 715 if(response == null) { // will not be the case, because an empty 716 return null; // response message will be sent instead 717 } 718 719 Element message = null; 720 try{ 721 // turn the String xml response into a DOM tree: 722 DocumentBuilder builder 723 = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 724 Document doc 725 = builder.parse(new InputSource(new StringReader(response))); 726 message = doc.getDocumentElement(); 727 } catch(Exception e){ 728 if(response == null) { 729 response = ""; 730 } 731 logger.error("An error occurred while trying to parse the response: "); 732 logger.error(response); 733 logger.error(e.getMessage()); 734 } 735 736 // Error elements in message will be processed outside of here, just return the message 737 return message; 738 } 739 740 /* //process method for stylesheet requests 741 protected Element processFormat(Element request) {} */ 742 743 /* returns the service list for the subclass */ 744 /* protected Element getServiceList(String lang) { 745 // for now, it is static and has no language stuff 746 return (Element) this.short_service_info.cloneNode(true); 747 }*/ 748 749 /** returns a specific service description */ 750 protected Element getServiceDescription(Document doc, String service, String lang, String subset) { 751 if(!lang.equals(prevLanguage)) { 752 prevLanguage = lang; 753 fedoraServicesAPIA.setLanguage(lang); 754 } 755 String serviceResponse = fedoraServicesAPIA.describeService(service); 756 Element response = getResponseAsDOM(serviceResponse); 757 758 // should be no chance of an npe, since FedoraGS3 lists the services, so will have descriptions for each 759 Element e = (Element)response.getElementsByTagName(GSXML.SERVICE_ELEM).item(0); 760 e = (Element)doc.importNode(e, true); 761 return e; 762 } 763 764 /** overloaded version for no args case */ 765 protected String getTextString(String key, String lang) { 766 return getTextString(key, lang, null, null); 767 } 768 769 protected String getTextString(String key, String lang, String dictionary) { 770 return getTextString(key, lang, dictionary, null); 771 } 772 protected String getTextString(String key, String lang, String [] args) { 773 return getTextString(key, lang, null, args); 774 } 775 776 /** getTextString - retrieves a language specific text string for the given 777 key and locale, from the specified resource_bundle (dictionary) 778 */ 779 protected String getTextString(String key, String lang, String dictionary, String[] args) { 780 781 // we want to use the collection class loader in case there are coll specific files 782 if (dictionary != null) { 783 // just try the one specified dictionary 784 Dictionary dict = new Dictionary(dictionary, lang, this.class_loader); 785 String result = dict.get(key, args); 786 if (result == null) { // not found 787 return "_"+key+"_"; 788 } 789 return result; 790 } 791 792 // now we try class names for dictionary names 793 String class_name = this.getClass().getName(); 794 class_name = class_name.substring(class_name.lastIndexOf('.')+1); 795 Dictionary dict = new Dictionary(class_name, lang, this.class_loader); 796 String result = dict.get(key, args); 797 if (result != null) { 798 return result; 799 } 800 801 // we have to try super classes 802 Class c = this.getClass().getSuperclass(); 803 while (result == null && c != null) { 804 class_name = c.getName(); 805 class_name = class_name.substring(class_name.lastIndexOf('.')+1); 806 if (class_name.equals("ServiceRack")) { 807 // this is as far as we go 808 break; 809 } 810 dict = new Dictionary(class_name, lang, this.class_loader); 811 result = dict.get(key, args); 812 c = c.getSuperclass(); 813 } 814 if (result == null) { 815 return "_"+key+"_"; 816 } 817 return result; 818 819 } 820 821 protected String getMetadataNameText(String key, String lang) { 822 823 String properties_name = "metadata_names"; 824 Dictionary dict = new Dictionary(properties_name, lang); 825 826 String result = dict.get(key); 827 if (result == null) { // not found 828 return null; 829 } 830 return result; 831 } 832 89 833 public static class BasicTextMacroResolver extends MacroResolver { 90 834 private static final Pattern p_back_slash = Pattern.compile("\\\"");// create a pattern "\\\"", but it matches both " and \" … … 137 881 } 138 882 139 static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.FedoraServiceProxy.class.getName()); 140 protected MacroResolver macro_resolver = null; 141 142 143 /** The handle to the fedora connection */ 144 private DigitalLibraryServicesAPIA fedoraServicesAPIA; 145 146 private String prevLanguage = ""; 147 148 public void cleanUp() { 149 super.cleanUp(); 150 } 151 152 /** sets the message router */ 153 public void setMessageRouter(MessageRouter m) { 154 this.router = m; 155 setLibraryName(m.getLibraryName()); 156 } 157 158 /** the no-args constructor */ 159 public FedoraServiceProxy() { 160 super(); 161 162 this.converter = new XMLConverter(); 163 this.doc = this.converter.newDOM(); 164 this.short_service_info = this.doc.createElement(GSXML.SERVICE_ELEM+GSXML.LIST_MODIFIER); 165 this.macro_resolver = new BasicTextMacroResolver(); 166 } 167 168 169 /* configure the service module 170 * 171 * @param info the XML node <serviceRack name="XXX"/> with name equal 172 * to the class name (of the subclass) 173 * 174 * must configure short_service_info_ and service_info_map_ 175 * @return true if configured ok 176 * must be implemented in subclasses 177 */ 178 /*public boolean configure(Element info) { 179 return configure(info, null); 180 }*/ 181 182 public boolean configure(Element info, Element extra_info) { 183 // set up the class loader 184 185 if (!super.configure(info, extra_info)){ 186 return false; 187 } 188 189 // Try to instantiate a Fedora dl handle 190 try { 191 // Fedora connection settings defaults. 192 // Read host and port from global.properties, since by default, we expect the Greenstone server to be used 193 Properties globalProperties = new Properties(); 194 globalProperties.load(Class.forName("org.greenstone.util.GlobalProperties").getClassLoader().getResourceAsStream("global.properties")); 195 String host = globalProperties.getProperty("tomcat.server", "localhost"); 196 String port = globalProperties.getProperty("tomcat.port", "8383"); 197 String protocol = "http"; 198 String username = "fedoraIntCallUser"; //"fedoraAdmin" 199 String password = "changeme"; //"<user password>" 200 201 // See if buildConfig.xml overrides any of the defaults 202 // info is the <serviceRack> Element from buildConfig.xml (extra_info are the Elements of collectionConfig.xml) 203 204 NodeList nodes = info.getElementsByTagName("fedoraConnection"); 205 if(nodes != null && nodes.getLength() > 0) { 206 207 Element fedoraElement = (Element)nodes.item(0); 208 if(fedoraElement.hasAttribute("protocol")) { 209 protocol = fedoraElement.getAttribute("protocol"); 210 } 211 if(fedoraElement.hasAttribute("host")) { 212 host = fedoraElement.getAttribute("host"); 213 } 214 if(fedoraElement.hasAttribute("port")) { 215 port = fedoraElement.getAttribute("port"); 216 } 217 if(fedoraElement.hasAttribute("username")) { 218 username = fedoraElement.getAttribute("username"); 219 } 220 if(fedoraElement.hasAttribute("password")) { 221 password = fedoraElement.getAttribute("password"); 222 } 223 } 224 225 fedoraServicesAPIA = new FedoraServicesAPIA(protocol, host, Integer.parseInt(port), username, password); 226 227 } catch(org.greenstone.fedora.services.FedoraGS3Exception.CancelledException e) { 228 // The user pressed cancel in the fedora services instantiation dialog 229 return false; 230 } catch(Exception e) { 231 logger.error("Error instantiating the interface to the Fedora Repository:\n", e); // second parameter prints e's stacktrace 232 return false; 233 } 234 235 236 // Need to put the available services into short_service_info 237 // This is used by DefaultReceptionist.process() has an exception. But DefaultReceptionist.addExtraInfo() 238 // isn't helpful, and the problem actually already occurs in 239 // Receptionist.process() -> PageAction.process() -> MessageRouter.process() 240 // -> Collection/ServiceCluster.process() -> ServiceCluster.configureServiceRackList() 241 // -> ServiceRack.process() -> ServiceRack.processDescribe() -> ServiceRack.getServiceList(). 242 // ServiceRack.getServiceList() requires this ServiceRack's services to be filled into the 243 // short_service_info Element which needs to be done in this FedoraServiceProxy.configure(). 244 245 // get the display and format elements from the coll config file for 246 // the classifiers 247 AbstractBrowse.extractExtraClassifierInfo(info, extra_info); 248 249 // Copied from IViaProxy.java: 250 String collection = fedoraServicesAPIA.describeCollection(this.cluster_name); 251 252 Element collNode = getResponseAsDOM(collection); 253 Element serviceList = (Element)collNode.getElementsByTagName(GSXML.SERVICE_ELEM+GSXML.LIST_MODIFIER).item(0); 254 255 //this.short_service_info.appendChild(short_service_info.getOwnerDocument().importNode(serviceList, true)); 256 // we want the individual service Elements, not the serviceList Element which will wrap it later 257 NodeList services = collNode.getElementsByTagName(GSXML.SERVICE_ELEM); 258 for(int i = 0; i < services.getLength(); i++) { 259 Node service = services.item(i); 260 this.short_service_info.appendChild(short_service_info.getOwnerDocument().importNode(service, true)); 261 } 262 263 // add some format info to service map if there is any 264 String path = GSPath.appendLink(GSXML.SEARCH_ELEM, GSXML.FORMAT_ELEM); 265 Element search_format = (Element) GSXML.getNodeByPath(extra_info, path); 266 if (search_format != null) { 267 this.format_info_map.put("TextQuery", this.doc.importNode(search_format, true)); 268 this.format_info_map.put("FieldQuery", this.doc.importNode(search_format, true)); 269 } 270 271 // look for document display format 272 path = GSPath.appendLink(GSXML.DISPLAY_ELEM, GSXML.FORMAT_ELEM); 273 Element display_format = (Element)GSXML.getNodeByPath(extra_info, path); 274 if (display_format != null) { 275 this.format_info_map.put("DocumentContentRetrieve", this.doc.importNode(display_format, true)); 276 // should we make a copy? 277 } 278 279 // the format info 280 Element cb_format_info = this.doc.createElement(GSXML.FORMAT_ELEM); 281 boolean format_found = false; 282 283 // look for classifier <browse><format> 284 path = GSPath.appendLink(GSXML.BROWSE_ELEM, GSXML.FORMAT_ELEM); 285 Element browse_format = (Element)GSXML.getNodeByPath(extra_info, path); 286 if (browse_format != null) { 287 cb_format_info.appendChild(GSXML.duplicateWithNewName(this.doc, browse_format, GSXML.DEFAULT_ELEM, true)); 288 format_found = true; 289 } 290 291 // add in to the description a simplified list of classifiers 292 Element browse = (Element)GSXML.getChildByTagName(extra_info, "browse"); // the <browse> 293 NodeList classifiers = browse.getElementsByTagName(GSXML.CLASSIFIER_ELEM); 294 for(int i=0; i<classifiers.getLength(); i++) { 295 Element cl = (Element)classifiers.item(i); 296 Element new_cl = (Element)this.doc.importNode(cl, false); // just import this node, not the children 297 298 // get the format info out, and put inside a classifier element 299 Element format_cl = (Element)new_cl.cloneNode(false); 300 Element format = (Element)GSXML.getChildByTagName(cl, GSXML.FORMAT_ELEM); 301 if (format != null) { 302 303 //copy all the children 304 NodeList elems = format.getChildNodes(); 305 for (int j=0; j<elems.getLength();j++) { 306 format_cl.appendChild(this.doc.importNode(elems.item(j), true)); 307 } 308 cb_format_info.appendChild(format_cl); 309 format_found = true; 310 } 311 312 } 313 314 if (format_found) { 315 this.format_info_map.put("ClassifierBrowse", cb_format_info); 316 } 317 318 319 // set up the macro resolver 320 macro_resolver.setSiteDetails(this.site_http_address, this.cluster_name, this.getLibraryName()); 321 Element replacement_elem = (Element)GSXML.getChildByTagName(extra_info, "replaceList"); 322 if (replacement_elem != null) { 323 macro_resolver.addMacros(replacement_elem); 324 } 325 // look for any refs to global replace lists 326 NodeList replace_refs_elems = extra_info.getElementsByTagName("replaceListRef"); 327 for (int i=0; i<replace_refs_elems.getLength(); i++) { 328 String id = ((Element)replace_refs_elems.item(i)).getAttribute("id"); 329 if (!id.equals("")) { 330 Element replace_list = GSXML.getNamedElement(this.router.config_info, "replaceList", "id", id); 331 if (replace_list != null) { 332 macro_resolver.addMacros(replace_list); 333 } 334 } 335 } 336 337 // configured ok 338 return true; 339 } 340 341 342 /* "DocumentContentRetrieve", "DocumentMetadataRetrieve", "DocumentStructureRetrieve", 343 "TextQuery", "FieldQuery", "ClassifierBrowse", "ClassifierBrowseMetadataRetrieve" */ 344 345 protected Element processDocumentContentRetrieve(Element request) { 346 String[] docIDs = parse(request, GSXML.DOC_NODE_ELEM, GSXML.NODE_ID_ATT); 347 String[] relLinks = parse(request, GSXML.DOC_NODE_ELEM, "externalURL"); 348 349 //logger.error("### request:"); 350 //logger.error(GSXML.elementToString(request, true)); 351 352 if(docIDs == null) { 353 logger.error("DocumentContentRetrieve request specified no doc nodes.\n"); 354 return this.doc.createElement(GSXML.RESPONSE_ELEM); // empty response 355 } else { 356 for(int i = 0; i < docIDs.length; i++) { 357 //logger.error("BEFORE: docIDs[" + i + "]: " + docIDs[i]); 358 if(relLinks[i] != null && docIDs[i].startsWith("http://")) { // need to do a look up 359 docIDs[i] = translateExternalId(docIDs[i]); 360 } else { 361 docIDs[i] = translateId(docIDs[i]); 362 } 363 //logger.error("AFTER: docIDs[" + i + "]: " + docIDs[i]); 364 } 365 } 366 367 String lang = request.getAttribute(GSXML.LANG_ATT); 368 if(!lang.equals(prevLanguage)) { 369 prevLanguage = lang; 370 fedoraServicesAPIA.setLanguage(lang); 371 } 372 373 // first param (the collection) is not used by Fedora 374 Element response = getResponseAsDOM(fedoraServicesAPIA.retrieveDocumentContent(this.cluster_name, docIDs)); 375 376 377 // resolve any collection specific macros 378 NodeList nodeContents = response.getElementsByTagName(GSXML.NODE_CONTENT_ELEM); 379 for(int i = 0; i < nodeContents.getLength(); i++) { 380 Element nodeContent = (Element)nodeContents.item(i); 381 /*if(nodeContent != null) { 382 nodeContent = (Element)nodeContent.getFirstChild(); // textNode 383 }*/ 384 //logger.error("GIRAFFE 1. content retrieve response - nodeContent: " + GSXML.nodeToFormattedString(nodeContent)); 385 String docContent = nodeContent.getFirstChild().getNodeValue(); // getTextNode and get its contents. 386 //logger.error("GIRAFFE 2. content retrieve response - docContent: " + docContent); 387 388 if(docContent != null) { 389 // get document text and resolve and macros. Rel and external links have _httpextlink_ set by HTMLPlugin 390 docContent = macro_resolver.resolve(docContent, lang, MacroResolver.SCOPE_TEXT, ""); // doc_id 391 nodeContent.getFirstChild().setNodeValue(docContent); 392 //logger.error("GIRAFFE 3. content retrieve response. Updated docContent: " + docContent); 393 } 394 } 395 396 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 397 } 398 399 protected Element processDocumentStructureRetrieve(Element request) { 400 String[] docIDs = parse(request, GSXML.DOC_NODE_ELEM, GSXML.NODE_ID_ATT); 401 String[] relLinks = parse(request, GSXML.DOC_NODE_ELEM, "externalURL"); 402 403 if(docIDs == null) { 404 logger.error("DocumentStructureRetrieve request specified no doc nodes.\n"); 405 return this.doc.createElement(GSXML.RESPONSE_ELEM); // empty response 406 } else { 407 for(int i = 0; i < docIDs.length; i++) { 408 //logger.error("BEFORE: docIDs[" + i + "]: " + docIDs[i]); 409 if(relLinks[i] != null && docIDs[i].startsWith("http://")) { // need to do a look up 410 docIDs[i] = translateExternalId(docIDs[i]); 411 } else { 412 docIDs[i] = translateId(docIDs[i]); 413 } 414 } 415 } 416 417 NodeList params = request.getElementsByTagName(GSXML.PARAM_ELEM); 418 String structure=""; 419 String info=""; 420 for(int i = 0; i < params.getLength(); i++) { 421 Element param = (Element)params.item(i); 422 if(param.getAttribute("name").equals("structure")) { 423 structure = structure + param.getAttribute("value") + "|"; 424 } else if(param.getAttribute("name").equals("info")) { 425 info = info + param.getAttribute("value") + "|"; 426 } 427 } 428 429 String lang = request.getAttribute(GSXML.LANG_ATT); 430 if(!lang.equals(prevLanguage)) { 431 prevLanguage = lang; 432 fedoraServicesAPIA.setLanguage(lang); 433 } 434 Element response = getResponseAsDOM(fedoraServicesAPIA.retrieveDocumentStructure( 435 this.cluster_name, docIDs, new String[]{structure}, new String[]{info})); 436 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 437 } 438 439 protected Element processDocumentMetadataRetrieve(Element request) { 440 String[] docIDs = parse(request, GSXML.DOC_NODE_ELEM, GSXML.NODE_ID_ATT); 441 String[] relLinks = parse(request, GSXML.DOC_NODE_ELEM, "externalURL"); 442 443 if(docIDs == null) { 444 logger.error("DocumentMetadataRetrieve request specified no doc nodes.\n"); 445 return this.doc.createElement(GSXML.RESPONSE_ELEM); // empty response 446 } else { 447 for(int i = 0; i < docIDs.length; i++) { 448 //logger.error("**** relLinks[i]: " + relLinks[i]); 449 //logger.error("**** docIDs[i]: " + docIDs[i]); 450 if(relLinks[i] != null && docIDs[i].startsWith("http://")) { // need to do a look up 451 docIDs[i] = translateExternalId(docIDs[i]); 452 } else { 453 docIDs[i] = translateId(docIDs[i]); 454 } 455 //logger.error("AFTER: docIDs[" + i + "]: " + docIDs[i]); 456 } 457 } 458 459 NodeList params = request.getElementsByTagName(GSXML.PARAM_ELEM); 460 String[] metafields = {}; 461 if(params.getLength() > 0) { 462 metafields = new String[params.getLength()]; 463 for(int i = 0; i < metafields.length; i++) { 464 Element param = (Element)params.item(i); 465 //if(param.hasAttribute(GSXML.NAME_ATT) && param.getAttribute(GSXML.NAME_ATT).equals("metadata") && param.hasAttribute(GSXML.VALUE_ATT)) { 466 if(param.hasAttribute(GSXML.VALUE_ATT)){ 467 metafields[i] = param.getAttribute(GSXML.VALUE_ATT); 468 } else { 469 metafields[i] = ""; 470 } 471 } 472 } 473 474 String lang = request.getAttribute(GSXML.LANG_ATT); 475 if(!lang.equals(prevLanguage)) { 476 prevLanguage = lang; 477 fedoraServicesAPIA.setLanguage(lang); 478 } 479 Element response = getResponseAsDOM(fedoraServicesAPIA.retrieveDocumentMetadata( 480 this.cluster_name, docIDs, metafields)); 481 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 482 } 483 484 protected Element processClassifierBrowseMetadataRetrieve(Element request) { 485 String[] classIDs = parse(request, GSXML.CLASS_NODE_ELEM, GSXML.NODE_ID_ATT); 486 //String[] relLinks = parse(request, GSXML.CLASS_NODE_ELEM, "externalURL"); 487 488 if(classIDs == null) { 489 logger.error("ClassifierBrowseMetadataRetrieve request specified no classifier nodes.\n"); 490 return this.doc.createElement(GSXML.RESPONSE_ELEM); // empty response 491 } else { 492 for(int i = 0; i < classIDs.length; i++) { 493 classIDs[i] = translateId(classIDs[i]); 494 } 495 } 496 497 NodeList params = request.getElementsByTagName(GSXML.PARAM_ELEM); 498 String[] metafields = {}; 499 if(params.getLength() > 0) { 500 metafields = new String[params.getLength()]; 501 for(int i = 0; i < metafields.length; i++) { 502 Element param = (Element)params.item(i); 503 if(param.hasAttribute(GSXML.VALUE_ATT)){ 504 metafields[i] = param.getAttribute(GSXML.VALUE_ATT); 505 } else { 506 metafields[i] = ""; 507 } 508 } 509 } 510 511 String lang = request.getAttribute(GSXML.LANG_ATT); 512 if(!lang.equals(prevLanguage)) { 513 prevLanguage = lang; 514 fedoraServicesAPIA.setLanguage(lang); 515 } 516 Element response = getResponseAsDOM(fedoraServicesAPIA.retrieveBrowseMetadata( 517 this.cluster_name, "ClassifierBrowseMetadataRetrieve", classIDs, metafields)); 518 //logger.error("**** Response from retrieveBrowseMeta: " + GSXML.elementToString(response, true)); 519 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 520 } 521 522 protected Element processClassifierBrowse(Element request) { 523 String collection = this.cluster_name; 524 String lang = request.getAttribute(GSXML.LANG_ATT); 525 if(!lang.equals(prevLanguage)) { 526 prevLanguage = lang; 527 fedoraServicesAPIA.setLanguage(lang); 528 } 529 530 NodeList classNodes = request.getElementsByTagName(GSXML.CLASS_NODE_ELEM); 531 if(classNodes == null || classNodes.getLength() <= 0) { 532 logger.error("ClassifierBrowse request specified no classifier IDs.\n"); 533 return this.doc.createElement(GSXML.RESPONSE_ELEM); // empty response 534 } 535 String classifierIDs[] = new String[classNodes.getLength()]; 536 for(int i = 0; i < classifierIDs.length; i++) { 537 Element e = (Element)classNodes.item(i); 538 classifierIDs[i] = e.getAttribute(GSXML.NODE_ID_ATT); 539 classifierIDs[i] = translateId(classifierIDs[i]); 540 } 541 542 NodeList params = request.getElementsByTagName(GSXML.PARAM_ELEM); 543 String structure=""; 544 String info=""; 545 for(int i = 0; i < params.getLength(); i++) { 546 Element param = (Element)params.item(i); 547 if(param.getAttribute("name").equals("structure")) { 548 structure = structure + param.getAttribute("value") + "|"; 549 } else if(param.getAttribute("name").equals("info")) { 550 info = info + param.getAttribute("value") + "|"; 551 } 552 } 553 ///structure = structure + "siblings"; //test for getting with classifier browse structure: siblings 554 555 Element response 556 = getResponseAsDOM(fedoraServicesAPIA.retrieveBrowseStructure(collection, "ClassifierBrowse", classifierIDs, 557 new String[] {structure}, new String[] {info})); 558 //logger.error("**** FedoraServiceProxy - Response from retrieveBrowseStructure: " + GSXML.elementToString(response, true)); 559 560 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 561 } 562 563 protected Element processTextQuery(Element request) { 564 return processQuery(request, "TextQuery"); 565 } 566 567 protected Element processFieldQuery(Element request) { 568 return processQuery(request, "FieldQuery"); 569 } 570 571 protected Element processQuery(Element request, String querytype) { 572 String collection = this.cluster_name; 573 574 String lang = request.getAttribute(GSXML.LANG_ATT); 575 if(!lang.equals(prevLanguage)) { 576 prevLanguage = lang; 577 fedoraServicesAPIA.setLanguage(lang); 578 } 579 580 NodeList paramNodes = request.getElementsByTagName(GSXML.PARAM_ELEM); 581 if(paramNodes.getLength() > 0) { 582 HashMap<String, String> params = new HashMap<String, String>(paramNodes.getLength()); 583 for(int i = 0; i < paramNodes.getLength(); i++) { 584 Element param = (Element)paramNodes.item(i); 585 params.put(param.getAttribute(GSXML.NAME_ATT), param.getAttribute(GSXML.VALUE_ATT)); 586 } 587 588 Element response = getResponseAsDOM(fedoraServicesAPIA.query(collection, querytype, params)); 589 return (Element)response.getElementsByTagName(GSXML.RESPONSE_ELEM).item(0); 590 } else { 591 logger.error("TextQuery request specified no parameters.\n"); 592 return this.doc.createElement(GSXML.RESPONSE_ELEM); // empty response 593 } 594 } 595 596 // get the requested nodeIDs out of a request message 597 protected String[] parse(Element request, String nodeType, String attribute) { 598 String[] nodevalues = null; 599 int count = 0; 600 601 Element docList = (Element) GSXML.getChildByTagName(request, nodeType+GSXML.LIST_MODIFIER); 602 if (docList != null) { 603 NodeList docNodes = docList.getElementsByTagName(nodeType); 604 if(docNodes.getLength() > 0) { 605 nodevalues = new String[docNodes.getLength()]; 606 for(int i = 0; i < nodevalues.length; i++) { 607 Element e = (Element)docNodes.item(i); 608 String id = e.getAttribute(attribute); 609 // Not sure why there are at times requests for hashXXX.dir, which is not a fedora PID 610 // To skip these: if not requesting an externalURL and if requesting a docNode, 611 // then the ID has to contain the : character special to fedora PIDs 612 if(attribute == "externalURL" || (nodeType != GSXML.DOC_NODE_ELEM || id.contains(":"))) { 613 nodevalues[count++] = id; 614 } 615 } 616 } 617 } 618 619 if(count == 0) { 620 return null; 621 } 622 623 String[] tmp = new String[count]; 624 for(int i = 0; i < count; i++) { 625 tmp[i] = nodevalues[i]; 626 } 627 nodevalues = null; 628 nodevalues = tmp; 629 630 return nodevalues; 631 } 632 633 634 /** if id ends in .fc, .pc etc, then translate it to the correct id 635 * For now (for testing things work) the default implementation is to just remove the suffix */ 636 protected String translateId(String id) { 637 if (OID.needsTranslating(id)) { 638 return OID.translateOID(this, id); //return translateOID(id); 639 } 640 return id; 641 } 642 643 /** if an id is not a greenstone id (an external id) then translate 644 * it to a greenstone one 645 * default implementation: return the id. Custom implementation: 646 * the id is a url that maps to a fedorapid whose dc.title contains the required HASHID */ 647 protected String translateExternalId(String id) { 648 //logger.error("*** to translate an external ID: " + id); /////return id; 649 return this.externalId2OID(id); 650 } 651 652 /** converts an external id to greenstone OID. External ID is a URL link 653 * that, if relative, maps to a fedorapid that has an entry in fedora. 654 * The dc:title meta for that fedorapid will contain the required OID. */ 655 public String externalId2OID(String extid) { 656 if(extid.endsWith(".rt") && (extid.indexOf('.') != extid.lastIndexOf('.'))) { 657 // .rt is not file extension, but Greenstone request for root of document 658 // not relevant for external ID 659 extid = extid.substring(0, extid.length()-3); 660 } 661 662 // the following method is unique to FedoraServicesAPIA 663 String response = ((FedoraServicesAPIA)fedoraServicesAPIA).getDocIDforURL(extid, this.cluster_name); 664 if(response.indexOf(GSXML.ERROR_ELEM) != -1) { 665 logger.error("**** The following error occurred when trying to find externalID for ID " + extid); 666 logger.error(response); 667 return extid; 668 } 669 if(response.equals("")) { 670 return extid; 671 } else { 672 return response; 673 } 674 } 675 676 677 /** translates relative oids into proper oids: 678 * .pr (parent), .rt (root) .fc (first child), .lc (last child), 679 * .ns (next sibling), .ps (previous sibling) 680 * .np (next page), .pp (previous page) : links sections in the order that you'd read the document 681 * a suffix is expected to be present so test before using 682 */ 683 public String processOID(String doc_id, String top, String suff, int sibling_num) { 684 685 // send off request to get sibling etc. information from Fedora 686 Element response = null; 687 String[] children = null; 688 if(doc_id.startsWith("CL")) { // classifiernode 689 response = getResponseAsDOM(fedoraServicesAPIA.retrieveBrowseStructure(this.cluster_name, "ClassifierBrowse", new String[]{doc_id}, 690 new String[]{"children"}, new String[]{"siblingPosition"})); 691 NodeList nl = response.getElementsByTagName(GSXML.NODE_STRUCTURE_ELEM); 692 if(nl.getLength() > 0) { 693 Element nodeStructure = (Element)nl.item(0); 694 695 if(nodeStructure != null) { 696 Element root = (Element) GSXML.getChildByTagName(nodeStructure, GSXML.CLASS_NODE_ELEM); 697 if(root != null) { // get children 698 NodeList classNodes = root.getElementsByTagName(GSXML.CLASS_NODE_ELEM); 699 if(classNodes != null) { 700 children = new String[classNodes.getLength()]; 701 for(int i = 0; i < children.length; i++) { 702 Element child = (Element)classNodes.item(i); 703 children[i] = child.getAttribute(GSXML.NODE_ID_ATT); 704 } 705 } 706 } 707 } 708 } 709 } else { // documentnode 710 response = getResponseAsDOM(fedoraServicesAPIA.retrieveDocumentStructure(this.cluster_name, new String[]{doc_id}, 711 new String[]{"children"}, new String[]{"siblingPosition"})); 712 String path = GSPath.createPath(new String[]{GSXML.RESPONSE_ELEM, GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER, 713 GSXML.DOC_NODE_ELEM, GSXML.NODE_STRUCTURE_ELEM, GSXML.DOC_NODE_ELEM}); 714 Element parentDocNode = (Element) GSXML.getNodeByPath(response, path); 715 716 if (parentDocNode == null) { 717 return top; 718 } // else 719 NodeList docNodes = parentDocNode.getElementsByTagName(GSXML.DOC_NODE_ELEM); // only children should remain, since that's what we requested 720 if(docNodes.getLength() > 0) { 721 children = new String[docNodes.getLength()]; 722 723 for(int i = 0; i < children.length; i++) { 724 Element e = (Element)docNodes.item(i); 725 children[i] = e.getAttribute(GSXML.NODE_ID_ATT); 726 } 727 } else { // return root node 728 children = new String[]{doc_id}; 729 } 730 } 731 732 if (suff.equals("fc")) { 733 return children[0]; 734 } else if (suff.equals("lc")) { 735 return children[children.length-1]; 736 } else { 737 if (suff.equals("ss")) { 738 return children[sibling_num-1]; 739 } 740 // find the position that we are at. 741 int i=0; 742 while(i<children.length) { 743 if (children[i].equals(top)) { 744 break; 745 } 746 i++; 747 } 748 749 if (suff.equals("ns")) { 750 if (i==children.length-1) { 751 return children[i]; 752 } 753 return children[i+1]; 754 } else if (suff.equals("ps")) { 755 if (i==0) { 756 return children[i]; 757 } 758 return children[i-1]; 759 } 760 } 761 762 return top; 763 } 764 765 766 protected Element getResponseAsDOM(String response) { 767 if(response == null) { // will not be the case, because an empty 768 return null; // response message will be sent instead 769 } 770 771 Element message = null; 772 try{ 773 // turn the String xml response into a DOM tree: 774 DocumentBuilder builder 775 = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 776 Document doc 777 = builder.parse(new InputSource(new StringReader(response))); 778 message = doc.getDocumentElement(); 779 } catch(Exception e){ 780 if(response == null) { 781 response = ""; 782 } 783 logger.error("An error occurred while trying to parse the response: "); 784 logger.error(response); 785 logger.error(e.getMessage()); 786 } 787 788 // Error elements in message will be processed outside of here, just return the message 789 return message; 790 } 791 792 /* //process method for stylesheet requests 793 protected Element processFormat(Element request) {} */ 794 795 /* returns the service list for the subclass */ 796 /* protected Element getServiceList(String lang) { 797 // for now, it is static and has no language stuff 798 return (Element) this.short_service_info.cloneNode(true); 799 }*/ 800 801 /** returns a specific service description */ 802 protected Element getServiceDescription(String service, String lang, String subset) { 803 if(!lang.equals(prevLanguage)) { 804 prevLanguage = lang; 805 fedoraServicesAPIA.setLanguage(lang); 806 } 807 String serviceResponse = fedoraServicesAPIA.describeService(service); 808 Element response = getResponseAsDOM(serviceResponse); 809 810 // should be no chance of an npe, since FedoraGS3 lists the services, so will have descriptions for each 811 Element e = (Element)response.getElementsByTagName(GSXML.SERVICE_ELEM).item(0); 812 e = (Element)this.doc.importNode(e, true); 813 return e; 814 } 815 816 /** overloaded version for no args case */ 817 protected String getTextString(String key, String lang) { 818 return getTextString(key, lang, null, null); 819 } 820 821 protected String getTextString(String key, String lang, String dictionary) { 822 return getTextString(key, lang, dictionary, null); 823 } 824 protected String getTextString(String key, String lang, String [] args) { 825 return getTextString(key, lang, null, args); 826 } 827 828 /** getTextString - retrieves a language specific text string for the given 829 key and locale, from the specified resource_bundle (dictionary) 830 */ 831 protected String getTextString(String key, String lang, String dictionary, String[] args) { 832 833 // we want to use the collection class loader in case there are coll specific files 834 if (dictionary != null) { 835 // just try the one specified dictionary 836 Dictionary dict = new Dictionary(dictionary, lang, this.class_loader); 837 String result = dict.get(key, args); 838 if (result == null) { // not found 839 return "_"+key+"_"; 840 } 841 return result; 842 } 843 844 // now we try class names for dictionary names 845 String class_name = this.getClass().getName(); 846 class_name = class_name.substring(class_name.lastIndexOf('.')+1); 847 Dictionary dict = new Dictionary(class_name, lang, this.class_loader); 848 String result = dict.get(key, args); 849 if (result != null) { 850 return result; 851 } 852 853 // we have to try super classes 854 Class c = this.getClass().getSuperclass(); 855 while (result == null && c != null) { 856 class_name = c.getName(); 857 class_name = class_name.substring(class_name.lastIndexOf('.')+1); 858 if (class_name.equals("ServiceRack")) { 859 // this is as far as we go 860 break; 861 } 862 dict = new Dictionary(class_name, lang, this.class_loader); 863 result = dict.get(key, args); 864 c = c.getSuperclass(); 865 } 866 if (result == null) { 867 return "_"+key+"_"; 868 } 869 return result; 870 871 } 872 873 protected String getMetadataNameText(String key, String lang) { 874 875 String properties_name = "metadata_names"; 876 Dictionary dict = new Dictionary(properties_name, lang); 877 878 String result = dict.get(key); 879 if (result == null) { // not found 880 return null; 881 } 882 return result; 883 } 883 884 884 } 885 885 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2Browse.java
r26198 r28966 33 33 import org.greenstone.gsdl3.util.OID; 34 34 import org.greenstone.gsdl3.util.SimpleCollectionDatabase; 35 import org.w3c.dom.Document; 35 36 import org.w3c.dom.Element; 36 37 … … 108 109 this.macro_resolver = new GS2MacroResolver(this.coll_db, this.class_loader); 109 110 110 gs_doc_db = new BasicDocumentDatabase( this.doc,database_type, this.site_home, this.cluster_name, index_stem);111 gs_doc_db = new BasicDocumentDatabase(database_type, this.site_home, this.cluster_name, index_stem); 111 112 if (!gs_doc_db.isValid()) 112 113 { … … 171 172 // assumes only one value per metadata 172 173 // does no macro resolving. assumes classifier metadata will not have macros. 173 protected Element getMetadataList(String node_id, boolean all_metadata, ArrayList<String> metadata_names)174 protected Element getMetadataList(Document doc, String node_id, boolean all_metadata, ArrayList<String> metadata_names) 174 175 { 175 176 String lang = "en"; 176 Element metadata_list = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);177 Element metadata_list = doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 177 178 DBInfo info = this.coll_db.getInfo(node_id); 178 179 if (info == null) … … 189 190 String key = it.next(); 190 191 String value = info.getInfo(key); 191 GSXML.addMetadata( this.doc,metadata_list, key, value);192 GSXML.addMetadata(metadata_list, key, value); 192 193 } 193 194 … … 199 200 String meta_name = metadata_names.get(i); 200 201 String value = (String) info.getInfo(meta_name); 201 GSXML.addMetadata( this.doc,metadata_list, meta_name, value);202 GSXML.addMetadata(metadata_list, meta_name, value); 202 203 } 203 204 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2Construct.java
r27717 r28966 36 36 import org.greenstone.gsdl3.util.GSXML; 37 37 import org.greenstone.gsdl3.util.UserContext; 38 import org.greenstone.gsdl3.util.XMLConverter; 39 40 import org.w3c.dom.Document; 38 41 import org.w3c.dom.Element; 39 42 import org.w3c.dom.Node; … … 45 48 * 46 49 * @author Katherine Don 47 * @version $Revision$48 50 */ 49 51 public class GS2Construct extends ServiceRack … … 86 88 87 89 /** returns a specific service description */ 88 protected Element getServiceDescription( String service, String lang, String subset)89 { 90 91 Element description = this.doc.createElement(GSXML.SERVICE_ELEM);90 protected Element getServiceDescription(Document doc, String service, String lang, String subset) 91 { 92 93 Element description = doc.createElement(GSXML.SERVICE_ELEM); 92 94 description.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 93 95 description.setAttribute(GSXML.NAME_ATT, service); 94 96 if (subset == null || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER)) 95 97 { 96 description.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_NAME, getTextString(service + ".name", lang)));97 description.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(service + ".description", lang)));98 description.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(service + ".submit", lang)));98 description.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_NAME, getTextString(service + ".name", lang))); 99 description.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(service + ".description", lang))); 100 description.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(service + ".submit", lang))); 99 101 } 100 102 if (subset == null || subset.equals(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER)) 101 103 { 102 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);104 Element param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 103 105 description.appendChild(param_list); 104 106 … … 106 108 { 107 109 108 Element param = GSXML.createParameterDescription( this.doc, NEW_COL_TITLE_PARAM, getTextString("param." + NEW_COL_TITLE_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null);110 Element param = GSXML.createParameterDescription(doc, NEW_COL_TITLE_PARAM, getTextString("param." + NEW_COL_TITLE_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null); 109 111 param_list.appendChild(param); 110 param = GSXML.createParameterDescription( this.doc, CREATOR_PARAM, getTextString("param." + CREATOR_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null);112 param = GSXML.createParameterDescription(doc, CREATOR_PARAM, getTextString("param." + CREATOR_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null); 111 113 param_list.appendChild(param); 112 param = GSXML.createParameterDescription( this.doc, NEW_COL_ABOUT_PARAM, getTextString("param." + NEW_COL_ABOUT_PARAM, lang), GSXML.PARAM_TYPE_TEXT, null, null, null);114 param = GSXML.createParameterDescription(doc, NEW_COL_ABOUT_PARAM, getTextString("param." + NEW_COL_ABOUT_PARAM, lang), GSXML.PARAM_TYPE_TEXT, null, null, null); 113 115 param_list.appendChild(param); 114 116 String[] types = { BUILDTYPE_MGPP, BUILDTYPE_MG }; 115 117 String[] type_texts = { getTextString("param." + BUILDTYPE_PARAM + "." + BUILDTYPE_MGPP, lang), getTextString("param." + BUILDTYPE_PARAM + "." + BUILDTYPE_MG, lang) }; 116 118 117 param = GSXML.createParameterDescription( this.doc, BUILDTYPE_PARAM, getTextString("param." + BUILDTYPE_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, BUILDTYPE_MGPP, types, type_texts);119 param = GSXML.createParameterDescription(doc, BUILDTYPE_PARAM, getTextString("param." + BUILDTYPE_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, BUILDTYPE_MGPP, types, type_texts); 118 120 param_list.appendChild(param); 119 121 } … … 122 124 123 125 this.collection_list = getCollectionList(); 124 Element param = GSXML.createParameterDescription( this.doc, COL_PARAM, getTextString("param." + COL_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, null, this.collection_list, this.collection_list);126 Element param = GSXML.createParameterDescription(doc, COL_PARAM, getTextString("param." + COL_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, null, this.collection_list, this.collection_list); 125 127 param_list.appendChild(param); 126 128 } … … 144 146 protected Element processAddDocument(Element request) 145 147 { 148 Document result_doc = XMLConverter.newDOM(); 146 149 // decode the file name, add it to the import directory 147 150 String name = GSPath.getFirstLink(request.getAttribute(GSXML.TO_ATT)); 148 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);151 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 149 152 response.setAttribute(GSXML.FROM_ATT, name); 150 Element status = this.doc.createElement(GSXML.STATUS_ELEM);153 Element status = result_doc.createElement(GSXML.STATUS_ELEM); 151 154 response.appendChild(status); 152 155 //String lang = request.getAttribute(GSXML.LANG_ATT); 153 156 //String request_type = request.getAttribute(GSXML.TYPE_ATT); 154 Text t = this.doc.createTextNode("AddDocument: not implemented yet");157 Text t = result_doc.createTextNode("AddDocument: not implemented yet"); 155 158 status.appendChild(t); 156 159 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(GSStatus.ERROR)); … … 160 163 protected Element processBuildAndActivateCollection(Element request) 161 164 { 165 162 166 waitUntilReady(request); 163 167 Element buildResponse = processBuildCollection(request); … … 311 315 312 316 // add the rest of the messages to the status node 313 Text t = this.doc.createTextNode("\n" + listener.getUpdate());317 Text t = status.getOwnerDocument().createTextNode("\n" + listener.getUpdate()); 314 318 status.appendChild(t); 315 319 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(listener.getStatus())); … … 319 323 } 320 324 321 t = this.doc.createTextNode("\n");325 t = status.getOwnerDocument().createTextNode("\n"); 322 326 status.appendChild(t); 323 327 // once have got here, we assume … … 330 334 protected Element processDeleteCollection(Element request) 331 335 { 332 336 Document result_doc = XMLConverter.newDOM(); 333 337 // the response to send back 334 338 String name = GSPath.getFirstLink(request.getAttribute(GSXML.TO_ATT)); 335 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);339 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 336 340 response.setAttribute(GSXML.FROM_ATT, name); 337 Element status = this.doc.createElement(GSXML.STATUS_ELEM);341 Element status = result_doc.createElement(GSXML.STATUS_ELEM); 338 342 response.appendChild(status); 339 343 Text t = null; // the text node for the error/success message … … 353 357 // at the moment, delete is synchronous. but it may take ages so should do the command in another thread maybe? in which case we will want to ask for status 354 358 logger.error("had a status request for delete - this shouldn't happen!!"); 355 //t = this.doc.createTextNode("");359 //t = result_doc.createTextNode(""); 356 360 //status.appendChild(t); 357 361 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(GSStatus.ERROR)); … … 364 368 if (!coll_dir.exists()) 365 369 { 366 t = this.doc.createTextNode(getTextString("delete.exists_error", lang, args));370 t = result_doc.createTextNode(getTextString("delete.exists_error", lang, args)); 367 371 status.appendChild(t); 368 372 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(GSStatus.ERROR)); … … 373 377 if (!GSFile.deleteFile(coll_dir)) 374 378 { 375 t = this.doc.createTextNode(getTextString("delete.delete_error", lang, args));379 t = result_doc.createTextNode(getTextString("delete.delete_error", lang, args)); 376 380 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(GSStatus.ERROR)); 377 381 status.appendChild(t); … … 387 391 protected Element processReloadCollection(Element request) 388 392 { 389 393 Document result_doc = XMLConverter.newDOM(); 390 394 // the response to send back 391 395 String name = GSPath.getFirstLink(request.getAttribute(GSXML.TO_ATT)); 392 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);396 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 393 397 response.setAttribute(GSXML.FROM_ATT, name); 394 Element status = this.doc.createElement(GSXML.STATUS_ELEM);398 Element status = result_doc.createElement(GSXML.STATUS_ELEM); 395 399 response.appendChild(status); 396 400 Text t = null; // the text node for the error/success message … … 411 415 // reload is synchronous - this makes no sense 412 416 logger.error("had a status request for reload - this shouldn't happen!!"); 413 //t = this.doc.createTextNode("");417 //t = result_doc.createTextNode(""); 414 418 //status.appendChild(t); 415 419 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(GSStatus.ERROR)); … … 433 437 { 434 438 // send the request to the MR 435 Element message = this.doc.createElement(GSXML.MESSAGE_ELEM); 436 Element request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_SYSTEM, "", userContext); 439 Document doc = XMLConverter.newDOM(); 440 Element message = doc.createElement(GSXML.MESSAGE_ELEM); 441 Element request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_SYSTEM, "", userContext); 437 442 message.appendChild(request); 438 Element command = this.doc.createElement(GSXML.SYSTEM_ELEM);443 Element command = doc.createElement(GSXML.SYSTEM_ELEM); 439 444 request.appendChild(command); 440 445 command.setAttribute(GSXML.SYSTEM_MODULE_TYPE_ATT, GSXML.COLLECTION_ELEM); … … 463 468 if (response == null) 464 469 { 465 t = this.doc.createTextNode(getTextString(operation + ".configure_error", userContext.getLanguage(), args));470 t = status.getOwnerDocument().createTextNode(getTextString(operation + ".configure_error", userContext.getLanguage(), args)); 466 471 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(GSStatus.ERROR)); 467 472 status.appendChild(t); … … 470 475 471 476 // if we got here, we have succeeded! 472 t = this.doc.createTextNode(getTextString(operation + ".success", userContext.getLanguage(), args));477 t = status.getOwnerDocument().createTextNode(getTextString(operation + ".success", userContext.getLanguage(), args)); 473 478 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(GSStatus.SUCCESS)); 474 479 status.appendChild(t); … … 494 499 // set up short_service_info_ - for now just has name and type 495 500 496 e = this.d oc.createElement(GSXML.SERVICE_ELEM);501 e = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 497 502 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 498 503 e.setAttribute(GSXML.NAME_ATT, NEW_SERVICE); 499 504 this.short_service_info.appendChild(e); 500 505 501 e = this.d oc.createElement(GSXML.SERVICE_ELEM);506 e = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 502 507 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 503 508 e.setAttribute(GSXML.NAME_ATT, IMPORT_SERVICE); 504 509 this.short_service_info.appendChild(e); 505 510 506 e = this.d oc.createElement(GSXML.SERVICE_ELEM);511 e = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 507 512 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 508 513 e.setAttribute(GSXML.NAME_ATT, BUILD_SERVICE); 509 514 this.short_service_info.appendChild(e); 510 515 511 e = this.d oc.createElement(GSXML.SERVICE_ELEM);516 e = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 512 517 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 513 518 e.setAttribute(GSXML.NAME_ATT, ACTIVATE_SERVICE); 514 519 this.short_service_info.appendChild(e); 515 520 516 e = this.d oc.createElement(GSXML.SERVICE_ELEM);521 e = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 517 522 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 518 523 e.setAttribute(GSXML.NAME_ATT, BUILD_AND_ACTIVATE_SERVICE); 519 524 this.short_service_info.appendChild(e); 520 525 521 e = this.d oc.createElement(GSXML.SERVICE_ELEM);526 e = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 522 527 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 523 528 e.setAttribute(GSXML.NAME_ATT, DELETE_SERVICE); 524 529 this.short_service_info.appendChild(e); 525 530 526 e = this.d oc.createElement(GSXML.SERVICE_ELEM);531 e = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 527 532 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 528 533 e.setAttribute(GSXML.NAME_ATT, RELOAD_SERVICE); 529 534 this.short_service_info.appendChild(e); 530 535 531 //e = this.d oc.createElement(GSXML.SERVICE_ELEM);536 //e = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 532 537 //e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 533 538 //e.setAttribute(GSXML.NAME_ATT, ADD_DOC_SERVICE); … … 540 545 protected Element runCommand(Element request, int type) 541 546 { 547 Document result_doc = XMLConverter.newDOM(); 542 548 // the response to send back 543 549 String name = GSPath.getFirstLink(request.getAttribute(GSXML.TO_ATT)); 544 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);550 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 545 551 response.setAttribute(GSXML.FROM_ATT, name); 546 Element status = this.doc.createElement(GSXML.STATUS_ELEM);552 Element status = result_doc.createElement(GSXML.STATUS_ELEM); 547 553 response.appendChild(status); 548 554 … … 567 573 if (listener == null) 568 574 { 569 Text t = this.doc.createTextNode(getTextString("general.process_id_error", lang));575 Text t = result_doc.createTextNode(getTextString("general.process_id_error", lang)); 570 576 status.appendChild(t); 571 577 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(GSStatus.ERROR)); … … 573 579 else 574 580 { 575 Text t = this.doc.createTextNode(listener.getUpdate());581 Text t = result_doc.createTextNode(listener.getUpdate()); 576 582 status.appendChild(t); 577 583 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(listener.getStatus())); … … 605 611 if (!constructor.configure()) 606 612 { 607 Text t = this.doc.createTextNode(getTextString("general.configure_constructor_error", lang));613 Text t = result_doc.createTextNode(getTextString("general.configure_constructor_error", lang)); 608 614 status.appendChild(t); 609 615 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(GSStatus.ERROR)); … … 629 635 status.setAttribute(GSXML.STATUS_PROCESS_ID_ATT, id); 630 636 status.setAttribute(GSXML.STATUS_ERROR_CODE_ATT, Integer.toString(GSStatus.ACCEPTED)); 631 Text t = this.doc.createTextNode(getTextString("general.process_start", lang));637 Text t = result_doc.createTextNode(getTextString("general.process_start", lang)); 632 638 status.appendChild(t); 633 639 return response; … … 727 733 protected Element extractOtherParams(HashMap<String, Serializable> params, int type) 728 734 { 729 730 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);735 Document doc = XMLConverter.newDOM(); 736 Element param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 731 737 if (type == GS2PerlConstructor.NEW) 732 738 { 733 Element param = this.doc.createElement(GSXML.PARAM_ELEM);739 Element param = doc.createElement(GSXML.PARAM_ELEM); 734 740 param.setAttribute(GSXML.NAME_ATT, "creator"); 735 741 param.setAttribute(GSXML.VALUE_ATT, (String) params.get(CREATOR_PARAM)); 736 742 737 743 param_list.appendChild(param); 738 param = this.doc.createElement(GSXML.PARAM_ELEM);744 param = doc.createElement(GSXML.PARAM_ELEM); 739 745 param.setAttribute(GSXML.NAME_ATT, "about"); 740 746 param.setAttribute(GSXML.VALUE_ATT, (String) params.get(NEW_COL_ABOUT_PARAM)); 741 747 param_list.appendChild(param); 742 param = this.doc.createElement(GSXML.PARAM_ELEM);748 param = doc.createElement(GSXML.PARAM_ELEM); 743 749 param.setAttribute(GSXML.NAME_ATT, "title"); 744 750 param.setAttribute(GSXML.VALUE_ATT, (String) params.get(NEW_COL_TITLE_PARAM)); 745 751 param_list.appendChild(param); 746 param = this.doc.createElement(GSXML.PARAM_ELEM);752 param = doc.createElement(GSXML.PARAM_ELEM); 747 753 param.setAttribute(GSXML.NAME_ATT, "buildtype"); 748 754 param.setAttribute(GSXML.VALUE_ATT, (String) params.get(BUILDTYPE_PARAM)); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2LuceneRetrieve.java
r25649 r28966 107 107 * <nodeContent>text content or other elements</nodeContent> 108 108 */ 109 protected Element getNodeContent(String doc_id, String lang) throws GSException109 protected Element getNodeContent(Document doc, String doc_id, String lang) throws GSException 110 110 { 111 111 String[] args = new String[1]; … … 169 169 } 170 170 171 Element content_node = this.doc.createElement(GSXML.NODE_CONTENT_ELEM);172 Text t = this.doc.createTextNode(doc_content);171 Element content_node = doc.createElement(GSXML.NODE_CONTENT_ELEM); 172 Text t = doc.createTextNode(doc_content); 173 173 content_node.appendChild(t); 174 174 return content_node; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2LuceneSearch.java
r28029 r28966 34 34 import org.greenstone.gsdl3.util.GSFile; 35 35 import org.greenstone.gsdl3.util.GSXML; 36 import org.greenstone.gsdl3.util.XMLConverter; 37 38 import org.w3c.dom.Document; 36 39 import org.w3c.dom.Element; 37 40 … … 228 231 protected boolean addTermInfo(Element term_list, HashMap params, Object query_result) 229 232 { 233 Document doc = term_list.getOwnerDocument(); 230 234 String query_level = (String) params.get(LEVEL_PARAM); // the current query level 231 235 … … 235 239 LuceneQueryResult.TermInfo term_info = (LuceneQueryResult.TermInfo) terms.get(t); 236 240 237 Element term_elem = this.doc.createElement(GSXML.TERM_ELEM);241 Element term_elem = doc.createElement(GSXML.TERM_ELEM); 238 242 term_elem.setAttribute(GSXML.NAME_ATT, term_info.term_); 239 243 term_elem.setAttribute(FREQ_ATT, "" + term_info.term_freq_); … … 248 252 String stopword = (String) stopwords.get(t); 249 253 250 Element stopword_elem = this.doc.createElement(GSXML.STOPWORD_ELEM);254 Element stopword_elem = doc.createElement(GSXML.STOPWORD_ELEM); 251 255 stopword_elem.setAttribute(GSXML.NAME_ATT, stopword); 252 256 term_list.appendChild(stopword_elem); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2MGPPRetrieve.java
r21768 r28966 26 26 27 27 // XML classes 28 import org.w3c.dom.Document; 28 29 import org.w3c.dom.Element; 29 30 import org.w3c.dom.Text; … … 91 92 * <nodeContent>text content or other elements</nodeContent> 92 93 */ 93 protected Element getNodeContent( String doc_id, String lang) throws GSException {94 protected Element getNodeContent(Document doc, String doc_id, String lang) throws GSException { 94 95 long doc_num = this.coll_db.OID2DocnumLong(doc_id); 95 96 if (doc_num == -1) { … … 97 98 return null; 98 99 } 99 Element content_node = this.doc.createElement(GSXML.NODE_CONTENT_ELEM);100 Element content_node = doc.createElement(GSXML.NODE_CONTENT_ELEM); 100 101 synchronized (mgpp_src) { 101 102 String doc_content = ""; … … 118 119 119 120 } 120 Text t = this.doc.createTextNode(doc_content);121 Text t = doc.createTextNode(doc_content); 121 122 content_node.appendChild(t); 122 123 return content_node; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2MGPPSearch.java
r28181 r28966 32 32 import org.greenstone.gsdl3.util.GSFile; 33 33 import org.greenstone.gsdl3.util.GSXML; 34 import org.greenstone.gsdl3.util.XMLConverter; 35 34 36 import org.greenstone.mgpp.MGPPDocInfo; 35 37 import org.greenstone.mgpp.MGPPQueryResult; 36 38 import org.greenstone.mgpp.MGPPSearchWrapper; 37 39 import org.greenstone.mgpp.MGPPTermInfo; 40 41 import org.w3c.dom.Document; 38 42 import org.w3c.dom.Element; 39 43 … … 234 238 protected boolean addTermInfo(Element term_list, HashMap<String, Serializable> params, Object query_result) 235 239 { 236 240 Document doc = term_list.getOwnerDocument(); 237 241 String query_level = (String) params.get(LEVEL_PARAM); // the current query level 238 242 … … 242 246 MGPPTermInfo term_info = (MGPPTermInfo) terms.get(t); 243 247 244 Element term_elem = this.doc.createElement(GSXML.TERM_ELEM);248 Element term_elem = doc.createElement(GSXML.TERM_ELEM); 245 249 term_elem.setAttribute(GSXML.NAME_ATT, term_info.term_); 246 250 term_elem.setAttribute(STEM_ATT, "" + term_info.stem_method_); … … 256 260 257 261 Vector equiv_terms = term_info.equiv_terms_; 258 Element equiv_term_list = this.doc.createElement(EQUIV_TERM_ELEM + GSXML.LIST_MODIFIER);262 Element equiv_term_list = doc.createElement(EQUIV_TERM_ELEM + GSXML.LIST_MODIFIER); 259 263 term_elem.appendChild(equiv_term_list); 260 264 … … 263 267 String equiv_term = (String) equiv_terms.get(et); 264 268 265 Element equiv_term_elem = this.doc.createElement(GSXML.TERM_ELEM);269 Element equiv_term_elem = doc.createElement(GSXML.TERM_ELEM); 266 270 equiv_term_elem.setAttribute(GSXML.NAME_ATT, equiv_term); 267 271 equiv_term_elem.setAttribute(NUM_DOCS_MATCH_ATT, ""); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2MGRetrieve.java
r23792 r28966 26 26 27 27 // XML classes 28 import org.w3c.dom.Document; 28 29 import org.w3c.dom.Element; 29 30 import org.w3c.dom.Text; … … 115 116 * <nodeContent>text content or other elements</nodeContent> 116 117 */ 117 protected Element getNodeContent (String doc_id, String lang) throws GSException {118 protected Element getNodeContent (Document doc, String doc_id, String lang) throws GSException { 118 119 long doc_num = this.coll_db.OID2DocnumLong (doc_id); 119 120 if (doc_num == -1) { … … 121 122 return null; 122 123 } 123 Element content_node = this.doc.createElement (GSXML.NODE_CONTENT_ELEM);124 Element content_node = doc.createElement (GSXML.NODE_CONTENT_ELEM); 124 125 125 126 String doc_content = null; … … 140 141 // replace _httpimg_ with the correct address 141 142 doc_content = resolveTextMacros (doc_content, doc_id, lang); 142 //GSXML.addDocText( this.doc,doc, doc_content);143 //GSXML.addDocText(doc, doc_content); 143 144 } else { 144 145 logger.error ("the doc content was null, not getting that section\n"); 145 146 doc_content = "couldn't retrieve content for this section, please check the log file for more detail\n"; 146 147 } 147 Text t = this.doc.createTextNode (doc_content);148 Text t = doc.createTextNode (doc_content); 148 149 content_node.appendChild (t); 149 150 return content_node; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2MGSearch.java
r25727 r28966 81 81 synchronized(this.mg_src){ 82 82 // Create a new (empty) result message ('doc' is in ServiceRack.java) 83 Element result = this.doc.createElement (GSXML.RESPONSE_ELEM); 83 Document result_doc = XMLConverter.newDOM(); 84 Element result = result_doc.createElement (GSXML.RESPONSE_ELEM); 84 85 result.setAttribute (GSXML.FROM_ATT, QUERY_SERVICE); 85 86 result.setAttribute (GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 141 142 if (mqr.isClear ()) { 142 143 // something has gone wrong 143 GSXML.addError ( this.doc,result, "Couldn't query the mg database", GSXML.ERROR_TYPE_SYSTEM);144 GSXML.addError (result, "Couldn't query the mg database", GSXML.ERROR_TYPE_SYSTEM); 144 145 return result; 145 146 } … … 153 154 154 155 // Create a metadata list to store information about the query results 155 Element metadata_list = this.doc.createElement (GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);156 Element metadata_list = result_doc.createElement (GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER); 156 157 result.appendChild (metadata_list); 157 158 158 159 // Add a metadata element specifying the number of matching documents 159 160 // because teh total number is just the number returned, use numDocsReturned, not numDocsMatched 160 GSXML.addMetadata ( this.doc,metadata_list, "numDocsReturned", ""+totalDocs);161 GSXML.addMetadata (metadata_list, "numDocsReturned", ""+totalDocs); 161 162 // add a metadata item to specify what actual query was done - eg if stuff was stripped out etc. and then we can use the query later, cos we don't know which parameter was the query 162 GSXML.addMetadata ( this.doc,metadata_list, "query", query);163 GSXML.addMetadata (metadata_list, "query", query); 163 164 164 165 if (docs.size () > 0) { 165 166 // Create a document list to store the matching documents, and add them 166 Element document_list = this.doc.createElement (GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);167 Element document_list = result_doc.createElement (GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); 167 168 result.appendChild (document_list); 168 169 for (int d = 0; d < docs.size (); d++) { … … 170 171 float rank = ((MGDocInfo) docs.elementAt (d)).rank_; 171 172 String doc_id = internalNum2OID (docnum); 172 Element doc_node = createDocNode ( doc_id, Float.toString (rank));173 Element doc_node = createDocNode (result_doc, doc_id, Float.toString (rank)); 173 174 document_list.appendChild (doc_node); 174 175 } … … 176 177 177 178 // Create a term list to store the term information, and add it 178 Element term_list = this.doc.createElement (GSXML.TERM_ELEM+GSXML.LIST_MODIFIER);179 Element term_list = result_doc.createElement (GSXML.TERM_ELEM+GSXML.LIST_MODIFIER); 179 180 result.appendChild (term_list); 180 181 Vector terms = mqr.getTerms (); … … 186 187 Vector equiv_terms = term_info.equiv_terms_; 187 188 188 Element term_elem = this.doc.createElement (GSXML.TERM_ELEM);189 Element term_elem = result_doc.createElement (GSXML.TERM_ELEM); 189 190 term_elem.setAttribute (GSXML.NAME_ATT, term); 190 191 term_elem.setAttribute (STEM_ATT, "" + stem_method); 191 192 192 Element equiv_term_list = this.doc.createElement (EQUIV_TERM_ELEM+GSXML.LIST_MODIFIER);193 Element equiv_term_list = result_doc.createElement (EQUIV_TERM_ELEM+GSXML.LIST_MODIFIER); 193 194 term_elem.appendChild (equiv_term_list); 194 195 … … 197 198 MGEquivTermInfo equiv_term_info = (MGEquivTermInfo) equiv_terms.get (et); 198 199 199 Element equiv_term_elem = this.doc.createElement (GSXML.TERM_ELEM);200 Element equiv_term_elem = result_doc.createElement (GSXML.TERM_ELEM); 200 201 equiv_term_elem.setAttribute (GSXML.NAME_ATT, equiv_term_info.term_); 201 202 equiv_term_elem.setAttribute (NUM_DOCS_MATCH_ATT, "" + equiv_term_info.match_docs_); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GoogleSearch.java.tmp
r20294 r28966 195 195 196 196 long numdocs_matched = google_result.getEstimatedTotalResultsCount(); 197 GSXML.addMetadata( this.doc,query_metadata_list, "numDocsMatched", ""+numdocs_matched);197 GSXML.addMetadata(query_metadata_list, "numDocsMatched", ""+numdocs_matched); 198 198 199 199 } … … 210 210 String google_snippet = details[i].getSnippet(); 211 211 if (google_url !=null) { 212 GSXML.addMetadata( this.doc,metadata_list, "URL", google_url);212 GSXML.addMetadata(metadata_list, "URL", google_url); 213 213 } 214 214 if (google_title != null) { 215 GSXML.addMetadata( this.doc,metadata_list, "Title", google_title);215 GSXML.addMetadata(metadata_list, "Title", google_title); 216 216 } 217 217 if (google_snippet != null) { 218 GSXML.addMetadata( this.doc,metadata_list, "Snippet", google_snippet);218 GSXML.addMetadata(metadata_list, "Snippet", google_snippet); 219 219 } 220 220 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GutBookRetrieve.java
r5966 r28966 2 2 3 3 import org.greenstone.gsdl3.util.*; 4 4 import org.w3c.dom.Document; 5 5 import org.w3c.dom.Element; 6 6 import org.w3c.dom.Node; … … 11 11 extends XMLRetrieve { 12 12 13 protected Element extractTitleMeta(Element section) {14 Element meta_elem = this.doc.createElement(GSXML.METADATA_ELEM);13 protected Element extractTitleMeta(Document result_doc, Element section) { 14 Element meta_elem = result_doc.createElement(GSXML.METADATA_ELEM); 15 15 meta_elem.setAttribute(GSXML.NAME_ATT, "Title"); 16 16 … … 34 34 Text t = (Text) GSXML.getNodeTextNode(title_elem); 35 35 36 meta_elem.appendChild( this.doc.importNode(t, false));36 meta_elem.appendChild(result_doc.importNode(t, false)); 37 37 return meta_elem; 38 38 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/IViaProxy.java
r25978 r28966 13 13 import org.greenstone.gsdl3.util.GSPath; 14 14 import org.greenstone.gsdl3.util.GSXML; 15 import org.greenstone.gsdl3.util.XMLConverter; 16 15 17 import org.w3c.dom.Document; 16 18 import org.w3c.dom.Element; … … 18 20 19 21 /** 22 * Service class to proxy IVia 20 23 * 21 * @author Katherine Don22 * @version $Revision$23 24 */ 24 25 … … 64 65 return false; 65 66 } 66 Element tq_service = this.d oc.createElement(GSXML.SERVICE_ELEM);67 Element tq_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 67 68 tq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 68 69 tq_service.setAttribute(GSXML.NAME_ATT, TEXT_QUERY_SERVICE); 69 70 this.short_service_info.appendChild(tq_service); 70 71 71 Element dc_service = this.d oc.createElement(GSXML.SERVICE_ELEM);72 Element dc_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 72 73 dc_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 73 74 dc_service.setAttribute(GSXML.NAME_ATT, DOC_CONTENT_SERVICE); 74 75 this.short_service_info.appendChild(dc_service); 75 76 76 Element dm_service = this.d oc.createElement(GSXML.SERVICE_ELEM);77 Element dm_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 77 78 dm_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 78 79 dm_service.setAttribute(GSXML.NAME_ATT, DOC_META_SERVICE); … … 85 86 if (format != null) 86 87 { 87 this.format_info_map.put(TEXT_QUERY_SERVICE, this.d oc.importNode(format, true));88 this.format_info_map.put(TEXT_QUERY_SERVICE, this.desc_doc.importNode(format, true)); 88 89 } 89 90 … … 93 94 if (display_format != null) 94 95 { 95 this.format_info_map.put(DOC_CONTENT_SERVICE, this.d oc.importNode(display_format, true));96 this.format_info_map.put(DOC_CONTENT_SERVICE, this.desc_doc.importNode(display_format, true)); 96 97 // shoudl we make a copy? 97 98 } … … 101 102 } 102 103 103 protected Element getServiceDescription( String service, String lang, String subset)104 protected Element getServiceDescription(Document doc, String service, String lang, String subset) 104 105 { 105 106 106 107 if (service.equals(TEXT_QUERY_SERVICE)) 107 108 { 108 Element tq_service = this.doc.createElement(GSXML.SERVICE_ELEM);109 Element tq_service = doc.createElement(GSXML.SERVICE_ELEM); 109 110 tq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 110 111 tq_service.setAttribute(GSXML.NAME_ATT, TEXT_QUERY_SERVICE); 111 112 if (subset == null || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER)) 112 113 { 113 tq_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_NAME, getTextString(TEXT_QUERY_SERVICE + ".name", lang)));114 tq_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(TEXT_QUERY_SERVICE + ".submit", lang)));115 tq_service.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(TEXT_QUERY_SERVICE + ".description", lang)));114 tq_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_NAME, getTextString(TEXT_QUERY_SERVICE + ".name", lang))); 115 tq_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(TEXT_QUERY_SERVICE + ".submit", lang))); 116 tq_service.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(TEXT_QUERY_SERVICE + ".description", lang))); 116 117 } 117 118 if (subset == null || subset.equals(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER)) 118 119 { 119 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);120 Element param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 120 121 tq_service.appendChild(param_list); 121 Element param = GSXML.createParameterDescription( this.doc, QUERY_PARAM, getTextString("param." + QUERY_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null);122 Element param = GSXML.createParameterDescription(doc, QUERY_PARAM, getTextString("param." + QUERY_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null); 122 123 param_list.appendChild(param); 123 124 String[] field_ids = { "kw", "au", "su", "ti", "de", "fu" }; 124 125 String[] field_names = { getTextString("param." + FIELD_PARAM + ".kw", lang), getTextString("param." + FIELD_PARAM + ".au", lang), getTextString("param." + FIELD_PARAM + ".su", lang), getTextString("param." + FIELD_PARAM + ".ti", lang), getTextString("param." + FIELD_PARAM + ".de", lang), getTextString("param." + FIELD_PARAM + ".fu", lang) }; 125 126 126 param = GSXML.createParameterDescription( this.doc, FIELD_PARAM, getTextString("param." + FIELD_PARAM, lang), GSXML.PARAM_TYPE_ENUM_MULTI, "kw,au,su,ti,de,fu", field_ids, field_names);127 param = GSXML.createParameterDescription(doc, FIELD_PARAM, getTextString("param." + FIELD_PARAM, lang), GSXML.PARAM_TYPE_ENUM_MULTI, "kw,au,su,ti,de,fu", field_ids, field_names); 127 128 param_list.appendChild(param); 128 129 129 130 String[] hits_options = { "10", "30", "50" }; 130 param = GSXML.createParameterDescription( this.doc, GS_HITS_PARAM, getTextString("param." + GS_HITS_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, "10", hits_options, hits_options);131 param = GSXML.createParameterDescription(doc, GS_HITS_PARAM, getTextString("param." + GS_HITS_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, "10", hits_options, hits_options); 131 132 param_list.appendChild(param); 132 133 133 param = GSXML.createParameterDescription( this.doc, GS_START_PAGE_PARAM, "", GSXML.PARAM_TYPE_INVISIBLE, "1", null, null);134 param = GSXML.createParameterDescription(doc, GS_START_PAGE_PARAM, "", GSXML.PARAM_TYPE_INVISIBLE, "1", null, null); 134 135 param_list.appendChild(param); 135 136 } … … 138 139 if (service.equals(DOC_META_SERVICE)) 139 140 { 140 Element dm_service = this.doc.createElement(GSXML.SERVICE_ELEM);141 Element dm_service = doc.createElement(GSXML.SERVICE_ELEM); 141 142 dm_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 142 143 dm_service.setAttribute(GSXML.NAME_ATT, DOC_META_SERVICE); … … 146 147 if (service.equals(DOC_CONTENT_SERVICE)) 147 148 { 148 Element dc_service = this.doc.createElement(GSXML.SERVICE_ELEM);149 Element dc_service = doc.createElement(GSXML.SERVICE_ELEM); 149 150 dc_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 150 151 dc_service.setAttribute(GSXML.NAME_ATT, DOC_CONTENT_SERVICE); … … 158 159 protected Element processTextQuery(Element request) 159 160 { 160 161 Document result_doc = XMLConverter.newDOM(); 161 162 // Create a new (empty) result message 162 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);163 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 163 164 result.setAttribute(GSXML.FROM_ATT, TEXT_QUERY_SERVICE); 164 165 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 165 Element doc_node_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);166 Element doc_node_list = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 166 167 result.appendChild(doc_node_list); 167 168 … … 243 244 244 245 // get the num docs and add to a metadata list 245 Element metadata_list = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);246 Element metadata_list = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 246 247 result.appendChild(metadata_list); 247 248 248 249 // Add a metadata element specifying the number of matching documents 249 250 long numdocs = Long.parseLong(results_num); 250 GSXML.addMetadata( this.doc,metadata_list, "numDocsMatched", "" + numdocs);251 GSXML.addMetadata(metadata_list, "numDocsMatched", "" + numdocs); 251 252 String[] ids = doc_ids.split(" "); 252 253 253 254 for (int d = 0; d < ids.length; d++) 254 255 { 255 Element doc_node = this.doc.createElement(GSXML.DOC_NODE_ELEM);256 Element doc_node = result_doc.createElement(GSXML.DOC_NODE_ELEM); 256 257 doc_node.setAttribute(GSXML.NODE_ID_ATT, ids[d]); 257 258 doc_node_list.appendChild(doc_node); … … 265 266 protected Element processDocumentMetadataRetrieve(Element request) 266 267 { 267 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 268 Document result_doc = XMLConverter.newDOM(); 269 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 268 270 result.setAttribute(GSXML.FROM_ATT, DOC_META_SERVICE); 269 271 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 323 325 String url_string = ivia_server_url + "/cgi-bin/view_record_set?theme=gsdl3&record_id_list=" + record_id_list.toString() + "&field_list=" + field_list.toString(); 324 326 325 Element node_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);327 Element node_list = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 326 328 result.appendChild(node_list); 327 329 try … … 337 339 // the first line is the record 338 340 line = line.substring(8); 339 Element doc_node = this.doc.createElement(GSXML.DOC_NODE_ELEM);341 Element doc_node = result_doc.createElement(GSXML.DOC_NODE_ELEM); 340 342 doc_node.setAttribute(GSXML.NODE_ID_ATT, line); 341 Element meta_list = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);343 Element meta_list = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 342 344 doc_node.appendChild(meta_list); 343 345 while ((line = reader.readLine()) != null) … … 352 354 String name = line.substring(0, col_pos); 353 355 String value = line.substring(col_pos + 2); // includes a space 354 GSXML.addMetadata( this.doc,meta_list, name, value);356 GSXML.addMetadata(meta_list, name, value); 355 357 } 356 358 node_list.appendChild(doc_node); … … 371 373 protected Element processDocumentContentRetrieve(Element request) 372 374 { 373 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 375 Document result_doc = XMLConverter.newDOM(); 376 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 374 377 result.setAttribute(GSXML.FROM_ATT, DOC_CONTENT_SERVICE); 375 378 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 383 386 } 384 387 385 Element doc_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);388 Element doc_list = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 386 389 result.appendChild(doc_list); 387 390 … … 391 394 { 392 395 String doc_id = doc_ids[i]; 393 Element doc_node = getDocument( doc_id);396 Element doc_node = getDocument(result_doc, doc_id); 394 397 doc_list.appendChild(doc_node); 395 398 } … … 402 405 * creates a documentNode around the text 403 406 */ 404 protected Element getDocument(String doc_id)407 protected Element getDocument(Document result_doc, String doc_id) 405 408 { 406 409 … … 447 450 processed_content.append("</nodeContent>"); 448 451 449 Element doc_node = this.doc.createElement(GSXML.DOC_NODE_ELEM);452 Element doc_node = result_doc.createElement(GSXML.DOC_NODE_ELEM); 450 453 doc_node.setAttribute(GSXML.NODE_ID_ATT, doc_id); 451 454 … … 454 457 { 455 458 Element content_element = content_doc.getDocumentElement(); 456 doc_node.appendChild( this.doc.importNode(content_element, true));459 doc_node.appendChild(result_doc.importNode(content_element, true)); 457 460 } 458 461 else -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/IViaRetrieve.java
r26215 r28966 67 67 68 68 /** gets a document by sending a request to iVia, then processes it and creates a documentNode around the text */ 69 protected Element getNodeContent(String doc_id, String lang)69 protected Element getNodeContent(Document doc, String doc_id, String lang) 70 70 throws GSException { 71 71 … … 116 116 Element content_element = content_doc.getDocumentElement(); 117 117 118 return (Element) this.doc.importNode(content_element,true);118 return (Element)doc.importNode(content_element,true); 119 119 } 120 120 … … 213 213 } 214 214 215 protected Element getMetadataList (String doc_id,215 protected Element getMetadataList (Document doc, String doc_id, 216 216 boolean all_metadata, 217 217 ArrayList<String> metadata_names, … … 219 219 throws GSException { 220 220 221 Element meta_list = this.doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);221 Element meta_list = doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER); 222 222 223 223 // do the query to the iVia server … … 249 249 String name = line.substring(0,col_pos); 250 250 String value = line.substring(col_pos+2); // includes a space 251 GSXML.addMetadata( this.doc,meta_list, name, value);251 GSXML.addMetadata(meta_list, name, value); 252 252 } 253 253 } catch (java.net.MalformedURLException e) { -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/IViaSearch.java
r25727 r28966 23 23 * 24 24 * @author Katherine Don 25 * @author <a href="mailto:[email protected]">Chi-Yu Huang</a>25 * @author Chi-Yu Huang 26 26 */ 27 27 … … 76 76 /** Process a text query - implemented by concrete subclasses */ 77 77 protected Element processTextQuery(Element request) { 78 Document result_doc = XMLConverter.newDOM(); 78 79 // Create a new (empty) result message 79 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);80 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 80 81 result.setAttribute(GSXML.FROM_ATT, QUERY_SERVICE); 81 82 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 82 Element doc_node_list = this.doc.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);83 Element doc_node_list = result_doc.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); 83 84 result.appendChild(doc_node_list); 84 85 Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); … … 127 128 doc_ids = reader.readLine(); 128 129 } catch (java.net.MalformedURLException e) { 129 GSXML.addError( this.doc,result, "Malformed URL: "+url_string);130 GSXML.addError(result, "Malformed URL: "+url_string); 130 131 return result; 131 132 } catch (java.io.IOException e) { 132 GSXML.addError( this.doc,result, "IOException during connection to "+url_string+": "+e.toString());133 GSXML.addError(result, "IOException during connection to "+url_string+": "+e.toString()); 133 134 return result; 134 135 } … … 152 153 result_string.append("Exception: "+e); 153 154 } 154 GSXML.addError( this.doc,result, result_string.toString());155 GSXML.addError(result, result_string.toString()); 155 156 156 157 return result; … … 158 159 159 160 // get the num docs and add to a metadata list 160 Element metadata_list = this.doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);161 Element metadata_list = result_doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER); 161 162 result.appendChild(metadata_list); 162 163 163 164 // Add a metadata element specifying the number of matching documents 164 165 long numdocs = Long.parseLong(results_num); 165 GSXML.addMetadata( this.doc,metadata_list, "numDocsMatched", ""+numdocs);166 GSXML.addMetadata(metadata_list, "numDocsMatched", ""+numdocs); 166 167 String [] ids = doc_ids.split(" "); 167 168 168 169 for (int d=0; d<ids.length; d++) { 169 Element doc_node = this.doc.createElement(GSXML.DOC_NODE_ELEM);170 Element doc_node = result_doc.createElement(GSXML.DOC_NODE_ELEM); 170 171 doc_node.setAttribute(GSXML.NODE_ID_ATT, ids[d]); 171 172 doc_node_list.appendChild(doc_node); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/LuceneSearch.java
r25763 r28966 18 18 import org.greenstone.gsdl3.util.GSFile; 19 19 import org.greenstone.gsdl3.util.GSXML; 20 import org.greenstone.gsdl3.util.XMLConverter; 21 22 import org.w3c.dom.Document; 20 23 import org.w3c.dom.Element; 21 24 import org.w3c.dom.NodeList; … … 112 115 { 113 116 logger.error("TextQuery request had no paramList."); 114 GSXML.addMetadata( this.doc,metadata_list, "numDocsMatched", "0");117 GSXML.addMetadata(metadata_list, "numDocsMatched", "0"); 115 118 return false; // signal that an empty result should be return 116 119 } … … 128 131 { 129 132 logger.error("TextQuery request had no query string."); 130 GSXML.addMetadata( this.doc,metadata_list, "numDocsMatched", "0");133 GSXML.addMetadata(metadata_list, "numDocsMatched", "0"); 131 134 return false; // signal that an empty result should be return 132 135 } … … 138 141 protected Element processTextQuery(Element request) 139 142 { 140 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 141 Element doc_node_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 142 Element metadata_list = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 143 Document result_doc = XMLConverter.newDOM(); 144 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 145 Element doc_node_list = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 146 Element metadata_list = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 143 147 initResultElement(result, doc_node_list, metadata_list); 144 148 … … 177 181 TopDocs hits = searcher.search(query, Integer.MAX_VALUE); 178 182 179 GSXML.addMetadata( this.doc,metadata_list, "numDocsMatched", "" + hits.scoreDocs.length);183 GSXML.addMetadata(metadata_list, "numDocsMatched", "" + hits.scoreDocs.length); 180 184 181 185 IndexReader reader = searcher.getIndexReader(); … … 186 190 org.apache.lucene.document.Document luc_doc = reader.document(lucene_doc_num); 187 191 String node_id = luc_doc.get("nodeID"); 188 Element node = this.doc.createElement(GSXML.DOC_NODE_ELEM);192 Element node = result_doc.createElement(GSXML.DOC_NODE_ELEM); 189 193 node.setAttribute(GSXML.NODE_ID_ATT, node_id); 190 194 doc_node_list.appendChild(node); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/MapRetrieve.java
r25981 r28966 22 22 import org.greenstone.gsdl3.util.GSPath; 23 23 import org.greenstone.gsdl3.util.GSXML; 24 import org.greenstone.gsdl3.util.XMLConverter; 25 26 import org.w3c.dom.Document; 24 27 import org.w3c.dom.Element; 25 28 import org.w3c.dom.NodeList; … … 67 70 68 71 // set up short_service_info_ - for now just has name and type 69 Element dmr_service = doc.createElement(GSXML.SERVICE_ELEM);72 Element dmr_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 70 73 dmr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 71 74 dmr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_METADATA_RETRIEVE_SERVICE); 72 75 short_service_info.appendChild(dmr_service); 73 76 74 Element dcr_service = doc.createElement(GSXML.SERVICE_ELEM);77 Element dcr_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 75 78 dcr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 76 79 dcr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_CONTENT_RETRIEVE_SERVICE); 77 80 short_service_info.appendChild(dcr_service); 78 81 79 Element dsr_service = doc.createElement(GSXML.SERVICE_ELEM);82 Element dsr_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 80 83 dsr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 81 84 dsr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_STRUCTURE_RETRIEVE_SERVICE); … … 132 135 if (display_format != null) 133 136 { 134 this.format_info_map.put(DOCUMENT_CONTENT_RETRIEVE_SERVICE, this.d oc.importNode(display_format, true));137 this.format_info_map.put(DOCUMENT_CONTENT_RETRIEVE_SERVICE, this.desc_doc.importNode(display_format, true)); 135 138 // shoudl we make a copy? 136 139 } … … 156 159 157 160 /** */ 158 protected Element getServiceDescription( String service, String lang, String subset)161 protected Element getServiceDescription(Document doc, String service, String lang, String subset) 159 162 { 160 163 if (service.equals(DOCUMENT_STRUCTURE_RETRIEVE_SERVICE)) … … 191 194 { 192 195 // Create a new (empty) result message 193 Element result = doc.createElement(GSXML.RESPONSE_ELEM);196 Element result = XMLConverter.newDOM().createElement(GSXML.RESPONSE_ELEM); 194 197 return result; 195 198 } … … 197 200 protected Element processDocumentMetadataRetrieve(Element request) 198 201 { 202 Document result_doc = XMLConverter.newDOM(); 199 203 // Create a new (empty) result message 200 204 try 201 205 { 202 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);206 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 203 207 204 208 String uid = request.getAttribute(GSXML.USER_ID_ATT); … … 240 244 } 241 245 242 Element node_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);246 Element node_list = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 243 247 result.appendChild(node_list); 244 248 … … 315 319 316 320 // Add the document to the list 317 Element new_node = (Element) this.doc.importNode(request_node, false);321 Element new_node = (Element) result_doc.importNode(request_node, false); 318 322 node_list.appendChild(new_node); 319 323 320 324 // Add the requested metadata information 321 Element node_meta_list = this.doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);325 Element node_meta_list = result_doc.createElement(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 322 326 new_node.appendChild(node_meta_list); 323 327 … … 356 360 if (metadata.equals("Title")) 357 361 if (!(place_data.equals("")) && place_data.indexOf(", , ;") == -1 && node_id.indexOf("```") == -1) 358 GSXML.addMetadata( this.doc,node_meta_list, "Title", value);//metadata, value);362 GSXML.addMetadata(node_meta_list, "Title", value);//metadata, value); 359 363 else 360 GSXML.addMetadata( this.doc,node_meta_list, metadata, "");364 GSXML.addMetadata(node_meta_list, metadata, ""); 361 365 362 366 if (place_data.indexOf(", , ;") == -1) … … 404 408 protected Element processDocumentContentRetrieve(Element request) 405 409 { 410 Document result_doc = XMLConverter.newDOM(); 406 411 // Create a new (empty) result message 407 Element result = doc.createElement(GSXML.RESPONSE_ELEM);412 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 408 413 result.setAttribute(GSXML.FROM_ATT, DOCUMENT_CONTENT_RETRIEVE_SERVICE); 409 414 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 422 427 String legend_file = this.temp_files_dir + "legend_" + uid + ".jpg"; 423 428 String blank_file = this.files_home_dir + "blank.jpg"; 424 Element doc_list = doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);429 Element doc_list = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 425 430 result.appendChild(doc_list); 426 431 … … 796 801 797 802 // put the html in a text node 798 Element text_doc = doc.createElement(GSXML.DOC_NODE_ELEM);803 Element text_doc = result_doc.createElement(GSXML.DOC_NODE_ELEM); 799 804 text_doc.setAttribute(GSXML.NODE_ID_ATT, doc_id); 800 GSXML.addDocText( doc,text_doc, doc_content);805 GSXML.addDocText(text_doc, doc_content); 801 806 doc_list.appendChild(text_doc); 802 807 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/MapSearch.java
r25635 r28966 162 162 protected Element processTextQuery(Element request) 163 163 { 164 Document result_doc = XMLConverter.newDOM(); 164 165 // Create a new (empty) result message 165 Element result = doc.createElement(GSXML.RESPONSE_ELEM);166 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 166 167 result.setAttribute(GSXML.FROM_ATT, QUERY_SERVICE); 167 168 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 337 338 338 339 // Create a metadata list to store information about the query results 339 Element metadata_list = doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);340 Element metadata_list = result_doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER); 340 341 result.appendChild(metadata_list); 341 342 342 343 // Add a metadata element specifying the number of matching documents 343 GSXML.addMetadata( this.doc,metadata_list, "numDocsMatched", "" + totalDocs);344 GSXML.addMetadata( this.doc,metadata_list, "numDocsReturned", ""+totalDocs);344 GSXML.addMetadata(metadata_list, "numDocsMatched", "" + totalDocs); 345 GSXML.addMetadata(metadata_list, "numDocsReturned", ""+totalDocs); 345 346 // Create a document list to store the matching documents, and add them 346 Element document_list = doc.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);347 Element document_list = result_doc.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); 347 348 result.appendChild(document_list); 348 349 for (int d = 0; d < totalDocs; d++) { 349 350 String doc_id = (String)tempList.get(d); 350 351 351 Element doc_node = doc.createElement(GSXML.DOC_NODE_ELEM);352 Element doc_node = result_doc.createElement(GSXML.DOC_NODE_ELEM); 352 353 doc_node.setAttribute(GSXML.NODE_ID_ATT, doc_id); 353 354 doc_node.setAttribute(GSXML.NODE_TYPE_ATT, "thumbnail"); … … 357 358 358 359 // Create a term list to store the term information, and add it 359 Element term_list = doc.createElement(GSXML.TERM_ELEM+GSXML.LIST_MODIFIER);360 Element term_list = result_doc.createElement(GSXML.TERM_ELEM+GSXML.LIST_MODIFIER); 360 361 result.appendChild(term_list); 361 362 … … 364 365 String term = terms[t]; 365 366 366 Element term_elem = doc.createElement(GSXML.TERM_ELEM);367 Element term_elem = result_doc.createElement(GSXML.TERM_ELEM); 367 368 term_elem.setAttribute(GSXML.NAME_ATT, term); 368 369 term_elem.setAttribute(FREQ_ATT, "" + terms_freq[t]); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/OAIPMH.java
r28861 r28966 82 82 } 83 83 84 Document doc = this.converter.newDOM();85 this.short_service_info = doc.createElement(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER);86 84 //get the names from ServiceRack.java 87 85 this.site_name = this.router.getSiteName(); … … 138 136 // set up short_service_info_ - just the name 139 137 140 Element list_records = doc.createElement(GSXML.SERVICE_ELEM);138 Element list_records = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 141 139 list_records.setAttribute(GSXML.NAME_ATT, OAIXML.LIST_RECORDS); 142 140 list_records.setAttribute(GSXML.TYPE_ATT, "oai"); 143 141 this.short_service_info.appendChild(list_records); 144 142 145 Element list_identifiers = doc.createElement(GSXML.SERVICE_ELEM);143 Element list_identifiers = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 146 144 list_identifiers.setAttribute(GSXML.NAME_ATT, OAIXML.LIST_IDENTIFIERS); 147 145 list_identifiers.setAttribute(GSXML.TYPE_ATT, "oai"); 148 146 this.short_service_info.appendChild(list_identifiers); 149 147 150 Element list_sets = doc.createElement(GSXML.SERVICE_ELEM);148 Element list_sets = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 151 149 list_sets.setAttribute(GSXML.NAME_ATT, OAIXML.LIST_SETS); 152 150 list_sets.setAttribute(GSXML.TYPE_ATT, "oai"); 153 151 this.short_service_info.appendChild(list_sets); 154 152 155 Element list_metadata_formats = doc.createElement(GSXML.SERVICE_ELEM);153 Element list_metadata_formats = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 156 154 list_metadata_formats.setAttribute(GSXML.NAME_ATT, OAIXML.LIST_METADATA_FORMATS); 157 155 list_metadata_formats.setAttribute(GSXML.TYPE_ATT, "oai"); 158 156 this.short_service_info.appendChild(list_metadata_formats); 159 157 160 Element get_record = doc.createElement(GSXML.SERVICE_ELEM);158 Element get_record = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 161 159 get_record.setAttribute(GSXML.NAME_ATT, OAIXML.GET_RECORD); 162 160 get_record.setAttribute(GSXML.TYPE_ATT, "oai"); … … 167 165 168 166 /** returns a specific service description */ 169 public Element getServiceDescription(String service_id, String lang, String subset) { 170 171 Document doc = this.converter.newDOM(); 167 public Element getServiceDescription(Document doc, String service_id, String lang, String subset) { 168 172 169 if (service_id.equals(OAIXML.LIST_RECORDS)) { 173 170 Element list_records = doc.createElement(GSXML.SERVICE_ELEM); … … 246 243 } 247 244 248 Document doc = this.converter.newDOM();245 Document doc = XMLConverter.newDOM(); 249 246 ArrayList<String> keys = new ArrayList<String>(info.getKeys()); 250 247 String oailastmodified = ""; … … 321 318 // all validation is done 322 319 323 Document doc = this.converter.newDOM();320 Document doc = XMLConverter.newDOM(); 324 321 Element list_identifiers_response = doc.createElement(GSXML.RESPONSE_ELEM); 325 322 Element list_identifiers = doc.createElement(OAIXML.LIST_IDENTIFIERS); … … 412 409 // all validation is done 413 410 414 Document doc = this.converter.newDOM();411 Document doc = XMLConverter.newDOM(); 415 412 Element list_records_response = doc.createElement(GSXML.RESPONSE_ELEM); 416 413 Element list_records = doc.createElement(OAIXML.LIST_RECORDS); … … 457 454 private boolean configureSetInfo() { 458 455 459 Document doc = this.converter.newDOM();456 Document doc = XMLConverter.newDOM(); 460 457 this.list_sets_response = doc.createElement(GSXML.RESPONSE_ELEM); 461 458 Element list_sets_elem = doc.createElement(OAIXML.LIST_SETS); … … 598 595 } 599 596 600 Document doc = this.converter.newDOM();597 Document doc = XMLConverter.newDOM(); 601 598 Element list_metadata_formats_response = doc.createElement(GSXML.RESPONSE_ELEM); 602 599 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/PhindPhraseBrowse.java
r25727 r28966 88 88 89 89 // set up short_service_info_ - for now just has name and type 90 Element e = this.d oc.createElement(GSXML.SERVICE_ELEM);90 Element e = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 91 91 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_APPLET); 92 92 e.setAttribute(GSXML.NAME_ATT, PHIND_SERVICE); … … 95 95 // set up the static applet description 96 96 97 applet_description = this.d oc.createElement(GSXML.SERVICE_ELEM);97 applet_description = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 98 98 applet_description.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_APPLET); 99 99 applet_description.setAttribute(GSXML.NAME_ATT, PHIND_SERVICE); … … 116 116 } 117 117 Element app_elem = dom.getDocumentElement(); 118 applet_description.appendChild(this.d oc.importNode(app_elem, true));118 applet_description.appendChild(this.desc_doc.importNode(app_elem, true)); 119 119 120 120 return true; 121 121 } 122 122 123 protected Element getServiceDescription( String service, String lang, String subset) {123 protected Element getServiceDescription(Document doc, String service, String lang, String subset) { 124 124 if (!service.equals(PHIND_SERVICE)) { 125 125 return null; 126 126 } 127 127 Element describe = (Element) applet_description.cloneNode(true); 128 describe.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_NAME, getTextString(PHIND_SERVICE+".name", lang)));129 describe.appendChild(GSXML.createDisplayTextElement( this.doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(PHIND_SERVICE+".description", lang)));128 describe.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_NAME, getTextString(PHIND_SERVICE+".name", lang))); 129 describe.appendChild(GSXML.createDisplayTextElement(doc, GSXML.DISPLAY_TEXT_DESCRIPTION, getTextString(PHIND_SERVICE+".description", lang))); 130 130 return describe; 131 131 } 132 132 133 133 protected Element processPhindApplet(Element request) { 134 134 Document result_doc = XMLConverter.newDOM(); 135 135 Element param_elem = (Element)GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 136 136 HashMap<String, Serializable> params = GSXML.extractParams(param_elem, false); … … 156 156 157 157 // the result element 158 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);158 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 159 159 result.setAttribute(GSXML.FROM_ATT, PHIND_SERVICE); 160 160 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 161 161 162 162 // applet result info must be in appletInfo element 163 Element applet_data = this.doc.createElement(GSXML.APPLET_DATA_ELEM);163 Element applet_data = result_doc.createElement(GSXML.APPLET_DATA_ELEM); 164 164 result.appendChild(applet_data); 165 Element phind_data = this.doc.createElement("phindData");165 Element phind_data = result_doc.createElement("phindData"); 166 166 applet_data.appendChild(phind_data); 167 167 … … 170 170 if (phrase == 0) { 171 171 if (word==null || word.equals("")) { 172 Element error = phindError( "no word or phrase");172 Element error = phindError(result_doc, "no word or phrase"); 173 173 phind_data.appendChild(error); 174 174 return result; … … 179 179 // the word is not in the collection 180 180 // return a phind error string 181 Element error = phindError( "the term "+word+" is not in the collection");181 Element error = phindError(result_doc, "the term "+word+" is not in the collection"); 182 182 phind_data.appendChild(error); 183 183 return result; … … 215 215 long last_d) { 216 216 217 217 synchronized (mgpp_retrieve_src) { 218 218 String record = this.mgpp_retrieve_src.getDocument(this.basepath+File.separatorChar+"pdata", "Document", 219 219 phrase); 220 220 if (record.equals("")) { 221 Element error = phindError( "somethings gone wrong - we haven't got a record for phrase number "+phrase);221 Element error = phindError(phind_data.getOwnerDocument(), "somethings gone wrong - we haven't got a record for phrase number "+phrase); 222 222 phind_data.appendChild(error); 223 223 return false; … … 258 258 phind_data.setAttribute("lf", lf); 259 259 phind_data.setAttribute("tf", tf); 260 GSXML.createTextElement(this.doc, "phrase", word);260 // GSXML.createTextElement(result_doc, "phrase", word); ??? - this needs to be appended somewhere???? 261 261 262 262 addExpansionList(phind_data, expansions, word, ef, first_e, last_e); … … 266 266 } 267 267 return true; 268 } 268 } // end of synchronized (mgpp_retrieve_src) 269 269 } 270 270 … … 273 273 String freq, 274 274 long first, long last) { 275 276 Element expansion_list = this.doc.createElement("expansionList");275 Document phind_doc = phind_data.getOwnerDocument(); 276 Element expansion_list = phind_doc.createElement("expansionList"); 277 277 phind_data.appendChild(expansion_list); 278 278 expansion_list.setAttribute("length", freq); … … 286 286 for (long i = first; i < last; i++) { 287 287 long num = Long.parseLong(expansions[(int)i]); 288 Element expansion = getExpansion( num, word);288 Element expansion = getExpansion(phind_doc, num, word); 289 289 expansion.setAttribute("num", Long.toString(i)); 290 290 expansion_list.appendChild(expansion); … … 293 293 } 294 294 295 protected Element getExpansion( long phrase_num,295 protected Element getExpansion(Document phind_doc, long phrase_num, 296 296 String orig_phrase) { 297 297 … … 311 311 String df = fields[3]; 312 312 313 Element expansion = this.doc.createElement("expansion");313 Element expansion = phind_doc.createElement("expansion"); 314 314 expansion.setAttribute("tf", tf); 315 315 expansion.setAttribute("df", df); … … 319 319 String [] ends = splitPhraseOnWord(phrase, orig_phrase); 320 320 if (!ends[0].equals("")) { 321 expansion.appendChild(GSXML.createTextElement( this.doc, "prefix", ends[0]));321 expansion.appendChild(GSXML.createTextElement(phind_doc, "prefix", ends[0])); 322 322 } 323 323 if (!ends[1].equals("")) { 324 expansion.appendChild(GSXML.createTextElement( this.doc, "suffix", ends[1]));324 expansion.appendChild(GSXML.createTextElement(phind_doc, "suffix", ends[1])); 325 325 } 326 326 … … 333 333 String freq, 334 334 long first, long last) { 335 336 Element document_list = this.doc.createElement("documentList");335 Document phind_doc = phind_data.getOwnerDocument(); 336 Element document_list = phind_doc.createElement("documentList"); 337 337 phind_data.appendChild(document_list); 338 338 document_list.setAttribute("length", freq); … … 357 357 doc_freq = doc_elem.substring(p+1); 358 358 } 359 Element document = getDocument( doc_num);359 Element document = getDocument(phind_doc, doc_num); 360 360 document.setAttribute("freq", doc_freq); 361 361 document.setAttribute("num", Long.toString(i)); … … 368 368 369 369 370 protected Element getDocument( long doc_num) {370 protected Element getDocument(Document phind_doc, long doc_num) { 371 371 372 372 // look up the phrase in the docs thingy … … 383 383 String title = fields[1]; 384 384 385 Element d = this.doc.createElement("document");385 Element d = phind_doc.createElement("document"); 386 386 d.setAttribute("hash", hash); 387 d.appendChild(GSXML.createTextElement( this.doc, "title", title));387 d.appendChild(GSXML.createTextElement(phind_doc, "title", title)); 388 388 389 389 return d; … … 395 395 long first, long last) { 396 396 397 398 Element thesaurus_list = this.doc.createElement("thesaurusList");397 Document phind_doc = phind_data.getOwnerDocument(); 398 Element thesaurus_list = phind_doc.createElement("thesaurusList"); 399 399 phind_data.appendChild(thesaurus_list); 400 400 thesaurus_list.setAttribute("length", freq); … … 414 414 if (index >= first && index < last) { // only output the ones we want 415 415 long phrase = Long.parseLong(items[j]); 416 Element t = getThesaurus(ph rase);416 Element t = getThesaurus(phind_doc, phrase); 417 417 t.setAttribute("type", type); 418 418 thesaurus_list.appendChild(t); … … 424 424 } 425 425 426 protected Element getThesaurus( long phrase_num) {426 protected Element getThesaurus(Document phind_doc, long phrase_num) { 427 427 428 428 // look up the phrase in the pdata thingy … … 441 441 String df = fields[3]; 442 442 443 Element thesaurus = this.doc.createElement("thesaurus");443 Element thesaurus = phind_doc.createElement("thesaurus"); 444 444 thesaurus.setAttribute("tf", tf); 445 445 thesaurus.setAttribute("df", df); 446 446 thesaurus.setAttribute("id", Long.toString(phrase_num)); 447 thesaurus.appendChild(GSXML.createTextElement( this.doc, "phrase", phrase));447 thesaurus.appendChild(GSXML.createTextElement(phind_doc, "phrase", phrase)); 448 448 return thesaurus; 449 449 … … 464 464 } 465 465 466 protected Element phindError( String message) {467 Element e = this.doc.createElement("phindError");468 Text t = this.doc.createTextNode(message);466 protected Element phindError(Document phind_doc, String message) { 467 Element e = phind_doc.createElement("phindError"); 468 Text t = phind_doc.createTextNode(message); 469 469 e.appendChild(t); 470 470 return e; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/RSSRetrieve.java
r27087 r28966 40 40 41 41 // set up short_service_info_ - for now just has name and type 42 Element rss_service = this.d oc.createElement(GSXML.SERVICE_ELEM);42 Element rss_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 43 43 rss_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 44 44 rss_service.setAttribute(GSXML.NAME_ATT, RSS_SERVICE); … … 49 49 50 50 // this may get called but is not useful in the case of retrieve services 51 protected Element getServiceDescription( String service_id, String lang, String subset) {52 53 Element rss_service = this.doc.createElement(GSXML.SERVICE_ELEM);51 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) { 52 53 Element rss_service = doc.createElement(GSXML.SERVICE_ELEM); 54 54 rss_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 55 55 rss_service.setAttribute(GSXML.NAME_ATT, service_id); … … 60 60 // This contains the collection meta from collectionConfig.xml. Used to construct header of RSS feed 61 61 protected Element getCollMetadata(UserContext userContext) { 62 Element mr_request_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 62 63 Document msg_doc = XMLConverter.newDOM(); 64 Element mr_request_message = msg_doc.createElement(GSXML.MESSAGE_ELEM); 63 65 String to = this.cluster_name; 64 Element meta_request = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_DESCRIBE, to, userContext);66 Element meta_request = GSXML.createBasicRequest(msg_doc, GSXML.REQUEST_TYPE_DESCRIBE, to, userContext); 65 67 mr_request_message.appendChild(meta_request); 66 68 Element meta_response = (Element) this.router.process(mr_request_message); … … 100 102 101 103 // generate the header and footer 102 Document rssDoc = this.doc;104 Document rssDoc = XMLConverter.newDOM(); 103 105 104 106 Element rssNode = rssDoc.createElement("rss"); // rootnode … … 228 230 229 231 // generate the GS3 response message containing the RSS xml 230 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);232 Element result = rssDoc.createElement(GSXML.RESPONSE_ELEM); 231 233 result.setAttribute(GSXML.FROM_ATT, RSS_SERVICE); 232 234 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/ServiceRack.java
r28860 r28966 77 77 protected Element config_info = null; 78 78 79 /** XML element for describe requests - the container doc*/80 protected Documentdoc = null;79 /** XML element for stored description XML */ 80 protected Document desc_doc = null; 81 81 82 82 /** … … 123 123 public void setGlobalFormat(Element globalFormat) 124 124 { 125 _globalFormat = globalFormat;125 _globalFormat = GSXML.duplicateWithNewName(this.desc_doc, globalFormat, GSXML.GLOBAL_FORMAT_ELEM, false); 126 126 } 127 127 … … 159 159 { 160 160 this.converter = new XMLConverter(); 161 this.d oc = this.converter.newDOM();162 this.short_service_info = this.d oc.createElement(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER);161 this.desc_doc = XMLConverter.newDOM(); 162 this.short_service_info = this.desc_doc.createElement(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER); 163 163 this.format_info_map = new HashMap<String, Node>(); 164 164 } … … 220 220 public Node process(Node message_node) 221 221 { 222 Element message = this.converter.nodeToElement(message_node);222 Element message = GSXML.nodeToElement(message_node); 223 223 224 224 NodeList requests = message.getElementsByTagName(GSXML.REQUEST_ELEM); 225 Document doc = this.converter.newDOM();226 Element mainResult = doc.createElement(GSXML.MESSAGE_ELEM);225 Document result_doc = XMLConverter.newDOM(); 226 Element mainResult = result_doc.createElement(GSXML.MESSAGE_ELEM); 227 227 if (requests.getLength() == 0) 228 228 { … … 238 238 if (type.equals(GSXML.REQUEST_TYPE_DESCRIBE)) 239 239 { 240 240 Element response = processDescribe(request); 241 241 if (response != null) 242 242 { 243 mainResult.appendChild(doc.importNode(response, true));243 mainResult.appendChild(result_doc.importNode(response, true)); 244 244 } 245 245 … … 247 247 else if (type.equals(GSXML.REQUEST_TYPE_FORMAT)) 248 248 { 249 250 mainResult.appendChild(doc.importNode(response, true));249 Element response = processFormat(request); 250 mainResult.appendChild(result_doc.importNode(response, true)); 251 251 } 252 252 else … … 312 312 if (response != null) 313 313 { 314 mainResult.appendChild( doc.importNode(response, true));314 mainResult.appendChild(result_doc.importNode(response, true)); 315 315 } 316 316 else … … 318 318 // add in a dummy response 319 319 logger.error("adding in an error element\n"); 320 response = doc.createElement(GSXML.RESPONSE_ELEM);321 GSXML.addError( doc,response, error_string.toString());320 response = result_doc.createElement(GSXML.RESPONSE_ELEM); 321 GSXML.addError(response, error_string.toString()); 322 322 mainResult.appendChild(response); 323 323 … … 336 336 protected Element processDescribe(Element request) 337 337 { 338 Document doc = this.converter.newDOM();339 Element response = doc.createElement(GSXML.RESPONSE_ELEM);338 Document result_doc = XMLConverter.newDOM(); 339 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 340 340 response.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_DESCRIBE); 341 341 … … 344 344 if (to.equals("")) 345 345 { // return the service list 346 response.appendChild( doc.importNode(getServiceList(lang), true));346 response.appendChild(result_doc.importNode(getServiceList(result_doc, lang), true)); 347 347 return response; 348 348 } … … 352 352 if (param_list == null) 353 353 { 354 description = getServiceDescription(to, lang, null);354 description = getServiceDescription(result_doc, to, lang, null); 355 355 } 356 356 else … … 367 367 if (description == null) 368 368 { 369 description = getServiceDescription(to, lang, info);369 description = getServiceDescription(result_doc, to, lang, info); 370 370 } 371 371 else 372 372 { 373 Element temp = getServiceDescription(to, lang, info);373 Element temp = getServiceDescription(result_doc, to, lang, info); 374 374 GSXML.mergeElements(description, temp); 375 375 } … … 379 379 if (description != null) 380 380 { // may be null if non-existant service 381 response.appendChild(d oc.importNode(description, true));381 response.appendChild(description); 382 382 } 383 383 return response; … … 390 390 protected Element processFormat(Element request) 391 391 { 392 Document doc = this.converter.newDOM();393 Element response = doc.createElement(GSXML.RESPONSE_ELEM);392 Document result_doc = XMLConverter.newDOM(); 393 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 394 394 response.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_FORMAT); 395 395 … … 404 404 if (this.format_info_map.containsKey(to)) 405 405 { 406 response.appendChild(doc.importNode(getServiceFormat(to), true));407 406 response.appendChild(getServiceFormat(result_doc, to)); 407 if (_globalFormat != null) 408 408 { 409 response.appendChild(GSXML.duplicateWithNewName(doc, _globalFormat, GSXML.GLOBAL_FORMAT_ELEM, false));409 response.appendChild(result_doc.importNode(this._globalFormat, true)); 410 410 } 411 411 response.setAttribute(GSXML.FROM_ATT, to); … … 419 419 420 420 /** returns the service list for the subclass */ 421 protected Element getServiceList(String lang)421 protected Element getServiceList(Document doc, String lang) 422 422 { 423 423 // for now, it is static and has no language stuff 424 return (Element) this.short_service_info.cloneNode(true);424 return (Element)doc.importNode(this.short_service_info, true); 425 425 } 426 426 427 427 /** returns a specific service description */ 428 abstract protected Element getServiceDescription(String service, String lang, String subset); 429 430 protected Element getServiceFormat(String service) 431 { 432 Element format = (Element) ((Element) this.format_info_map.get(service)).cloneNode(true); 433 return format; 428 abstract protected Element getServiceDescription(Document doc, String service, String lang, String subset); 429 430 protected Element getServiceFormat(Document doc, String service) 431 { 432 Element format = (Element) this.format_info_map.get(service); 433 if (format != null) { 434 return (Element)doc.importNode(format, true); 435 } 436 return null; 434 437 } 435 438 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/ServiceUtil.java
r25635 r28966 8 8 import org.apache.log4j.Logger; 9 9 import org.greenstone.gsdl3.util.GSXML; 10 import org.greenstone.gsdl3.util.XMLConverter; 11 12 import org.w3c.dom.Document; 10 13 import org.w3c.dom.Element; 11 14 … … 34 37 for (int i = 0; i < services.length; i++) 35 38 { 36 Element service = this.d oc.createElement(GSXML.SERVICE_ELEM);39 Element service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 37 40 service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 38 41 service.setAttribute(GSXML.NAME_ATT, services[i]); … … 43 46 } 44 47 45 protected Element getServiceDescription( String service_id, String lang, String subset)48 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 46 49 { 47 50 for (int i = 0; i < services.length; i++) … … 49 52 if (service_id.equals(services[i])) 50 53 { 51 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);54 Element service_elem = doc.createElement(GSXML.SERVICE_ELEM); 52 55 service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 53 56 service_elem.setAttribute(GSXML.NAME_ATT, services[i]); … … 61 64 protected Element processGetAllImagesInCollection(Element request) 62 65 { 63 Element result = GSXML.createBasicResponse(this.doc, GET_ALL_IMAGES_IN_COLLECTION); 66 Document result_doc = XMLConverter.newDOM(); 67 Element result = GSXML.createBasicResponse(result_doc, GET_ALL_IMAGES_IN_COLLECTION); 64 68 65 69 if (request == null) 66 70 { 67 GSXML.addError( this.doc,result, GET_ALL_IMAGES_IN_COLLECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX);71 GSXML.addError(result, GET_ALL_IMAGES_IN_COLLECTION + ": Request is null", GSXML.ERROR_TYPE_SYNTAX); 68 72 return result; 69 73 } … … 76 80 77 81 if (param_list == null) { 78 GSXML.addError( this.doc,result, GET_ALL_IMAGES_IN_COLLECTION + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX);82 GSXML.addError(result, GET_ALL_IMAGES_IN_COLLECTION + ": No param list specified", GSXML.ERROR_TYPE_SYNTAX); 79 83 return result; // Return the empty result 80 84 } … … 85 89 if(regex == null) 86 90 { 87 GSXML.addError( this.doc,result, GET_ALL_IMAGES_IN_COLLECTION + ": No file name extensions specified", GSXML.ERROR_TYPE_SYNTAX);91 GSXML.addError(result, GET_ALL_IMAGES_IN_COLLECTION + ": No file name extensions specified", GSXML.ERROR_TYPE_SYNTAX); 88 92 return result; 89 93 } … … 93 97 if(collection == null) 94 98 { 95 GSXML.addError( this.doc,result, GET_ALL_IMAGES_IN_COLLECTION + ": No collection specified", GSXML.ERROR_TYPE_SYNTAX);99 GSXML.addError(result, GET_ALL_IMAGES_IN_COLLECTION + ": No collection specified", GSXML.ERROR_TYPE_SYNTAX); 96 100 return result; 97 101 } … … 101 105 getImagesRecursive(indexDir, regex, images); 102 106 103 Element imageListElem = this.doc.createElement("imageList");107 Element imageListElem = result_doc.createElement("imageList"); 104 108 result.appendChild(imageListElem); 105 109 for(String i : images) 106 110 { 107 Element imageElem = this.doc.createElement("image");108 imageElem.appendChild( this.doc.createTextNode(i));111 Element imageElem = result_doc.createElement("image"); 112 imageElem.appendChild(result_doc.createTextNode(i)); 109 113 imageListElem.appendChild(imageElem); 110 114 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/SharedSoleneGS2FieldSearch.java
r28181 r28966 25 25 import org.greenstone.LuceneWrapper3.SharedSoleneQuery; 26 26 import org.greenstone.gsdl3.util.GSXML; 27 import org.greenstone.gsdl3.util.XMLConverter; 28 27 29 import org.w3c.dom.Document; 28 30 import org.w3c.dom.Element; … … 115 117 /** create a param and add to the list */ 116 118 /** we override this to do a special rank param */ 117 protected void createParameter(String name, Element param_list, String lang) 118 { 119 protected void createParameter(String name, Element param_list, String lang) 120 { 121 Document doc = param_list.getOwnerDocument(); 119 122 Element param = null; 120 123 String param_default = paramDefaults.get(name); … … 131 134 } 132 135 133 param = GSXML.createParameterDescription2( this.doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, fields.get(0), fields, field_names);136 param = GSXML.createParameterDescription2(doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, fields.get(0), fields, field_names); 134 137 135 138 } else if (name.equals(SORT_ORDER_PARAM)) { … … 137 140 String[] vals_texts = { getTextString("param." + SORT_ORDER_PARAM + "." + SORT_ORDER_ASCENDING, lang), getTextString("param." + SORT_ORDER_PARAM + "." + SORT_ORDER_DESCENDING, lang) }; 138 141 139 param = GSXML.createParameterDescription( this.doc, SORT_ORDER_PARAM, getTextString("param." + SORT_ORDER_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, SORT_ORDER_DESCENDING, vals, vals_texts);142 param = GSXML.createParameterDescription(doc, SORT_ORDER_PARAM, getTextString("param." + SORT_ORDER_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, SORT_ORDER_DESCENDING, vals, vals_texts); 140 143 } 141 144 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/TEIRetrieve.java
r5262 r28966 6 6 7 7 // XML classes 8 import org.w3c.dom.Document; 8 9 import org.w3c.dom.Element; 9 10 import org.w3c.dom.Node; … … 15 16 public class TEIRetrieve extends XMLRetrieve { 16 17 17 protected Element extractTitleMeta(Element section) {18 protected Element extractTitleMeta(Document doc, Element section) { 18 19 19 Element meta_elem = this.doc.createElement(GSXML.METADATA_ELEM);20 Element meta_elem = doc.createElement(GSXML.METADATA_ELEM); 20 21 meta_elem.setAttribute(GSXML.NAME_ATT, "Title"); 21 22 … … 24 25 // there is no head element, so take the type attribute and make that the title 25 26 String title = "("+section.getAttribute("type")+")"; 26 Text t = this.doc.createTextNode(title);27 Text t = doc.createTextNode(title); 27 28 meta_elem.appendChild(t); 28 29 } else { 29 30 // add the head element as the metadata content 30 meta_elem.appendChild( this.doc.importNode(section_head, true));31 meta_elem.appendChild(doc.importNode(section_head, true)); 31 32 } 32 33 return meta_elem; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/UserTracker.java
r28210 r28966 9 9 import org.greenstone.gsdl3.util.DerbyWrapper; 10 10 import org.greenstone.gsdl3.util.GSXML; 11 import org.greenstone.gsdl3.util.XMLConverter; 11 12 import org.greenstone.util.GlobalProperties; 13 import org.w3c.dom.Document; 12 14 import org.w3c.dom.Element; 13 15 … … 38 40 for (int i = 0; i < services.length; i++) 39 41 { 40 Element service = this.d oc.createElement(GSXML.SERVICE_ELEM);42 Element service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 41 43 service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 42 44 service.setAttribute(GSXML.NAME_ATT, services[i]); … … 47 49 } 48 50 49 protected Element getServiceDescription( String service_id, String lang, String subset)51 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) 50 52 { 51 53 for (int i = 0; i < services.length; i++) … … 53 55 if (service_id.equals(services[i])) 54 56 { 55 Element service_elem = this.doc.createElement(GSXML.SERVICE_ELEM);57 Element service_elem = doc.createElement(GSXML.SERVICE_ELEM); 56 58 service_elem.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 57 59 service_elem.setAttribute(GSXML.NAME_ATT, services[i]); … … 65 67 protected synchronized Element processRecordUserAction(Element request) 66 68 { 67 Element result = GSXML.createBasicResponse(this.doc, RECORD_USER_ACTION); 69 Document result_doc = XMLConverter.newDOM(); 70 Element result = GSXML.createBasicResponse(result_doc, RECORD_USER_ACTION); 68 71 69 72 Element paramList = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 70 73 if (paramList == null) 71 74 { 72 GSXML.addError( this.doc,result, "Request has no parameter list");75 GSXML.addError(result, "Request has no parameter list"); 73 76 return result; 74 77 } … … 90 93 protected synchronized Element processGetActivityOnPage(Element request) 91 94 { 92 Element result = GSXML.createBasicResponse(this.doc, GET_ACTIVITY_ON_PAGE); 95 Document result_doc = XMLConverter.newDOM(); 96 Element result = GSXML.createBasicResponse(result_doc, GET_ACTIVITY_ON_PAGE); 93 97 try 94 98 { … … 97 101 if (paramList == null) 98 102 { 99 GSXML.addError( this.doc,result, "Request has no parameter list");103 GSXML.addError(result, "Request has no parameter list"); 100 104 return result; 101 105 } … … 109 113 ArrayList<HashMap<String, String>> userActions = database.getMostRecentUserActions(site, collection, oid); 110 114 111 Element userList = this.doc.createElement("userList");115 Element userList = result_doc.createElement("userList"); 112 116 for (HashMap<String, String> userAction : userActions) 113 117 { 114 Element user = this.doc.createElement("user");118 Element user = result_doc.createElement("user"); 115 119 user.setAttribute("username", userAction.get("username")); 116 120 user.setAttribute("action", userAction.get("action")); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/XMLRetrieve.java
r25635 r28966 1 /* 2 * ServiceRack.java 3 * Copyright (C) 2014 New Zealand Digital Library, http://www.nzdl.org 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 */ 19 1 20 package org.greenstone.gsdl3.service; 2 21 … … 39 58 protected boolean provide_metadata = true; 40 59 60 protected GSEntityResolver entity_resolver = null; 41 61 42 62 public boolean configure(Element info, Element extra_info) { … … 81 101 Element retrieve_service; 82 102 if (provide_content) { 83 retrieve_service = this.d oc.createElement(GSXML.SERVICE_ELEM);103 retrieve_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 84 104 retrieve_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 85 105 retrieve_service.setAttribute(GSXML.NAME_ATT, CONTENT_SERVICE); … … 87 107 } 88 108 if (provide_metadata) { 89 retrieve_service = this.d oc.createElement(GSXML.SERVICE_ELEM);109 retrieve_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 90 110 retrieve_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 91 111 retrieve_service.setAttribute(GSXML.NAME_ATT, METADATA_SERVICE); … … 93 113 } 94 114 if (provide_structure) { 95 retrieve_service = this.d oc.createElement(GSXML.SERVICE_ELEM);115 retrieve_service = this.desc_doc.createElement(GSXML.SERVICE_ELEM); 96 116 retrieve_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 97 117 retrieve_service.setAttribute(GSXML.NAME_ATT, STRUCTURE_SERVICE); … … 101 121 collection_doc_list = (Element)GSXML.getChildByTagName(extra_info, GSXML.DOCUMENT_ELEM+GSXML.LIST_MODIFIER); 102 122 103 GSEntityResolverresolver = new GSEntityResolver();104 resolver.setClassLoader(this.class_loader);105 this.converter.setEntityResolver(resolver);123 entity_resolver = new GSEntityResolver(); 124 entity_resolver.setClassLoader(this.class_loader); 125 //this.converter.setEntityResolver(resolver); 106 126 return true; 107 127 } 108 128 109 129 // this may get called but is not useful in the case of retrieve services 110 protected Element getServiceDescription( String service_id, String lang, String subset) {111 112 Element retrieve_service = this.doc.createElement(GSXML.SERVICE_ELEM);130 protected Element getServiceDescription(Document doc, String service_id, String lang, String subset) { 131 132 Element retrieve_service = doc.createElement(GSXML.SERVICE_ELEM); 113 133 retrieve_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 114 134 retrieve_service.setAttribute(GSXML.NAME_ATT, service_id); … … 117 137 118 138 protected Element processDocumentContentRetrieve(Element request) { 119 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 139 Document result_doc = XMLConverter.newDOM(); 140 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 120 141 result.setAttribute(GSXML.FROM_ATT, CONTENT_SERVICE); 121 142 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 125 146 return result; 126 147 } 127 Element result_doc_list = (Element) this.doc.importNode(doc_list, true);148 Element result_doc_list = (Element)result_doc.importNode(doc_list, true); 128 149 result.appendChild(result_doc_list); 129 150 … … 132 153 133 154 Element doc = (Element)docs.item(i); 134 Element content = this.doc.createElement(GSXML.NODE_CONTENT_ELEM);155 Element content = result_doc.createElement(GSXML.NODE_CONTENT_ELEM); 135 156 doc.appendChild(content); 136 157 … … 146 167 // if we have asked for the whole doc, just append it 147 168 if (doc_name.equals(node_id)) { 148 content.appendChild( this.doc.importNode(doc_elem, true));169 content.appendChild(result_doc.importNode(doc_elem, true)); 149 170 continue; 150 171 } … … 154 175 Element section = getSection(doc_elem, node_id); 155 176 if (section != null) { 156 content.appendChild( this.doc.importNode(section, true));177 content.appendChild(result_doc.importNode(section, true)); 157 178 } 158 179 … … 164 185 165 186 protected Element processDocumentStructureRetrieve(Element request) { 166 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 187 Document result_doc = XMLConverter.newDOM(); 188 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 167 189 result.setAttribute(GSXML.FROM_ATT, STRUCTURE_SERVICE); 168 190 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 174 196 } 175 197 176 Element result_doc_list = (Element) this.doc.importNode(doc_list, true);198 Element result_doc_list = (Element)result_doc.importNode(doc_list, true); 177 199 result.appendChild(result_doc_list); 178 200 // first look for the stylesheet in the collection … … 196 218 Element doc = (Element)docs.item(i); 197 219 198 Element structure = this.doc.createElement(GSXML.NODE_STRUCTURE_ELEM);220 Element structure = result_doc.createElement(GSXML.NODE_STRUCTURE_ELEM); 199 221 doc.appendChild(structure); 200 222 String doc_name = doc.getAttribute(GSXML.NODE_ID_ATT); … … 209 231 try { 210 232 Node toc = transformer.transform(stylesheet, doc_file); 211 structure.appendChild( this.doc.importNode(toc, true));233 structure.appendChild(result_doc.importNode(toc, true)); 212 234 } catch (Exception e) { 213 235 logger.error("couldn't transform the document to get the toc"); … … 224 246 // this should be overwritten for any format that has something more suitable 225 247 protected Element processDocumentMetadataRetrieve(Element request) { 226 Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 248 Document result_doc = XMLConverter.newDOM(); 249 Element result = result_doc.createElement(GSXML.RESPONSE_ELEM); 227 250 result.setAttribute(GSXML.FROM_ATT, METADATA_SERVICE); 228 251 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); … … 234 257 } 235 258 236 Element result_doc_list = (Element) this.doc.importNode(doc_list, true);259 Element result_doc_list = (Element)result_doc.importNode(doc_list, true); 237 260 result.appendChild(result_doc_list); 238 261 … … 266 289 String doc_name = getWorkName(node_id); 267 290 268 Element metadata_list = getMetadata( node_id, all_metadata, meta_name_list);291 Element metadata_list = getMetadata(result_doc, node_id, all_metadata, meta_name_list); 269 292 doc.appendChild(metadata_list); 270 293 } … … 284 307 Document the_doc = null; 285 308 try { 286 the_doc = this.converter.getDOM(doc_file, this.document_encoding);309 the_doc = this.converter.getDOM(doc_file, this.document_encoding, this.entity_resolver); 287 310 } catch (Exception e) { 288 311 logger.error("couldn't create a DOM from file "+doc_file.getPath()); … … 346 369 } 347 370 348 protected Element getMetadata(String node_id, boolean all, Vector<String> meta_name_list) {371 protected Element getMetadata(Document result_doc, String node_id, boolean all, Vector<String> meta_name_list) { 349 372 350 373 // our default strategy here is to only return Title and root:Title … … 352 375 // the title of a section is just a little bit of the text inside it. 353 376 // the root_Title is the title from the doc info in the config file 354 Element metadata_list = this.doc.createElement(GSXML.METADATA_ELEM+ GSXML.LIST_MODIFIER);377 Element metadata_list = result_doc.createElement(GSXML.METADATA_ELEM+ GSXML.LIST_MODIFIER); 355 378 String doc_name = getWorkName(node_id); 356 379 boolean node_is_root = false; … … 366 389 if (all) { 367 390 if (node_is_root) { 368 return (Element) this.doc.importNode(doc_meta_list, true);391 return (Element)result_doc.importNode(doc_meta_list, true); 369 392 } else { 370 393 get_section_title = true; … … 391 414 Element meta_item = GSXML.getNamedElement(doc_meta_list, GSXML.METADATA_ELEM, GSXML.NAME_ATT, actual_meta_name); 392 415 if (meta_item != null) { 393 meta_item = (Element) this.doc.importNode(meta_item, true);416 meta_item = (Element)result_doc.importNode(meta_item, true); 394 417 meta_item.setAttribute(GSXML.NAME_ATT, meta_name); 395 418 metadata_list.appendChild(meta_item); … … 405 428 Element section = getSection(doc_elem, node_id); 406 429 if (section != null) { 407 Element title_meta = extractTitleMeta(section);430 Element title_meta = extractTitleMeta(result_doc, section); 408 431 if (title_meta != null) { 409 432 metadata_list.appendChild(title_meta); … … 416 439 } 417 440 418 protected Element extractTitleMeta(Element section) {419 Element meta_elem = this.doc.createElement(GSXML.METADATA_ELEM);441 protected Element extractTitleMeta(Document result_doc, Element section) { 442 Element meta_elem = result_doc.createElement(GSXML.METADATA_ELEM); 420 443 meta_elem.setAttribute(GSXML.NAME_ATT, "Title"); 421 444 422 445 String title = "dummy title"; 423 Text t = this.doc.createTextNode(title);446 Text t = result_doc.createTextNode(title); 424 447 meta_elem.appendChild(t); 425 448 return meta_elem; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/XSLTServices.java
r25727 r28966 53 53 * Document ids are formed by encoding the document using standard URLEncoding 54 54 * 55 * @author Katherine Don 56 * @author <a href="mailto:[email protected]">Stuart Yeates</a> 57 * @version $Revision$ 55 * @author Stuart Yeates 58 56 * @see ServiceRack 59 57 * @see java.net.URLEncoder … … 126 124 } 127 125 128 protected Element getServiceDescription( String service, String lang, String subset) {126 protected Element getServiceDescription(Document doc, String service, String lang, String subset) { 129 127 130 128 return null; … … 144 142 } 145 143 // create the response so we can report the error 146 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM); 144 Document result_doc = XMLConverter.newDOM(); 145 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 147 146 String from = GSPath.appendLink(this.cluster_name, RESOURCE_RETRIEVE_SERVICE); 148 147 response.setAttribute(GSXML.FROM_ATT, from); … … 150 149 151 150 logger.error("should never get here. service type wrong:"+service); 152 GSXML.addError( this.doc,response,"XSLTServices:should never get here. service type wrong:"+service);151 GSXML.addError(response,"XSLTServices:should never get here. service type wrong:"+service); 153 152 return response; 154 153 } … … 156 155 /** process a document resquest query */ 157 156 protected Element processResourceRetrieve(Element request) { 158 157 Document result_doc = XMLConverter.newDOM(); 159 158 // create the result and set the path so we know where we are 160 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);159 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 161 160 String from = GSPath.appendLink(this.cluster_name, RESOURCE_RETRIEVE_SERVICE); 162 161 response.setAttribute(GSXML.FROM_ATT, from); … … 177 176 if (param_elem==null) { 178 177 logger.error("bad query request"); 179 GSXML.addError( this.doc,response,"bad query request in XSLTServices");178 GSXML.addError(response,"bad query request in XSLTServices"); 180 179 return response; 181 180 } … … 193 192 } 194 193 // something funny with the doc - 195 Element new_doc = this.doc.createElement(GSXML.DOCUMENT_ELEM);194 Element new_doc = result_doc.createElement(GSXML.DOCUMENT_ELEM); 196 195 new_doc.setAttribute(GSXML.NAME_ATT, ids[j]); //GSXML.createDocumentElement(this.doc, ids[j]); 197 GSXML.addDocText( this.doc,new_doc, document);196 GSXML.addDocText(new_doc, document); 198 197 response.appendChild(new_doc); 199 198 } … … 204 203 /** process a XSLT query */ 205 204 protected Element processXSLTQuery(Element request) { 206 205 Document result_doc = XMLConverter.newDOM(); 207 206 // create the result and set the path so we know where we are 208 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM);207 Element response = result_doc.createElement(GSXML.RESPONSE_ELEM); 209 208 String from = GSPath.appendLink(this.cluster_name, XSLT_QUERY_SERVICE); 210 209 response.setAttribute(GSXML.FROM_ATT, from); … … 233 232 } else { 234 233 logger.error("bad alphabet name : "+ alphabet); 235 GSXML.addError( this.doc,response,"XSLTServices: bad alphabet name : "+ alphabet);234 GSXML.addError(response,"XSLTServices: bad alphabet name : "+ alphabet); 236 235 stream = new GeneratedDocumentStream(); 237 236 } 238 237 239 Element resource_list = this.doc.createElement(GSXML.RESOURCE_ELEM+GSXML.LIST_MODIFIER);238 Element resource_list = result_doc.createElement(GSXML.RESOURCE_ELEM+GSXML.LIST_MODIFIER); 240 239 response.appendChild(resource_list); 241 240 … … 254 253 transformer.transform(source,result); 255 254 String id = writer.toString(); 256 Element e = this.doc.createElement(GSXML.DOCUMENT_ELEM);255 Element e = result_doc.createElement(GSXML.DOCUMENT_ELEM); 257 256 e.setAttribute(GSXML.NAME_ATT, id); 258 257 //Node no = GSXML.createDocumentElement(this.doc, id); 259 258 resource_list.appendChild(e); 260 259 } catch (Throwable t) { 261 GSXML.addError( this.doc,response, "Error in XSLTServices finding results:" + t.toString());260 GSXML.addError(response, "Error in XSLTServices finding results:" + t.toString()); 262 261 } 263 262 }
Note:
See TracChangeset
for help on using the changeset viewer.