Changeset 5113
- Timestamp:
- 2003-08-07T16:56:42+12:00 (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl3/src/java/org/greenstone/gsdl3/core/DefaultReceptionist.java
r4990 r5113 29 29 Element param_list = (Element)GSXML.getChildByTagName(page_request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 30 30 if (param_list==null) { // must be the original home page 31 System.out.println("DefaultReceptionist: no param list, assuming home page"); 31 32 return; 32 33 } 33 34 Element coll_param = GSXML.getNamedElement(param_list, GSXML.PARAM_ELEM, GSXML.NAME_ATT, GSParams.COLLECTION); 34 35 if (coll_param == null) { 36 System.out.println("DefaultReceptionist: coll param is null, returning"); 35 37 return; 36 38 } 37 39 String action = page_request.getAttribute(GSXML.ACTION_ATT); 38 40 if (action.equals("p")) { 41 System.out.println("DefaultReceptionist: page action, so returning"); 39 42 return; 40 43 } … … 53 56 coll_description = (Element)GSXML.getChildByTagName(coll_about_response, GSXML.CLUSTER_ELEM); 54 57 } 55 if (coll_description != null) {56 Element page_response = (Element)GSXML.getChildByTagName(page, GSXML.PAGE_RESPONSE_ELEM);57 page_response.appendChild(this.doc.importNode(coll_description, true));58 if (coll_description == null) { 59 System.out.println("DefaultReceptionist: no collection description, returning"); 60 return; 58 61 } 62 63 Element page_response = (Element)GSXML.getChildByTagName(page, GSXML.PAGE_RESPONSE_ELEM); 64 Element new_coll_description = (Element)this.doc.importNode(coll_description, true); 65 page_response.appendChild(new_coll_description); 66 67 // now get the dispay info for the services 68 Element service_list = (Element)GSXML.getChildByTagName(new_coll_description, GSXML.SERVICE_ELEM+GSXML.LIST_MODIFIER); 69 if (service_list == null) { 70 System.out.println("DefaultReceptionist: no service list, returning"); 71 // something weird has gone wrong 72 return; 73 } 74 75 NodeList services = service_list.getElementsByTagName(GSXML.SERVICE_ELEM); 76 // we will send all the requests in a single message 77 Element info_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 78 for (int i=0; i<services.getLength(); i++) { 79 Element c = (Element)services.item(i); 80 String name = c.getAttribute(GSXML.NAME_ATT); 81 String address = GSPath.appendLink(collection, name); 82 Element info_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_DESCRIBE, address, lang); 83 info_message.appendChild(info_request); 84 } 85 86 Element info_response = (Element)this.mr.process(info_message); 87 88 NodeList service_responses = info_response.getElementsByTagName(GSXML.RESPONSE_ELEM); 89 // check that have same number of responses as collections 90 if (services.getLength() != service_responses.getLength()) { 91 System.err.println("DefaultReceptionist Error: didn't get a response for each service - somethings gone wrong!"); 92 // for now, dont use the metadata 93 } else { 94 for (int i=0; i<services.getLength(); i++) { 95 Element c1 = (Element)services.item(i); 96 Element c2 = (Element)GSXML.getChildByTagName((Element)service_responses.item(i), GSXML.SERVICE_ELEM); 97 if (c1.getAttribute(GSXML.NAME_ATT).equals(c2.getAttribute(GSXML.NAME_ATT))) { 98 //add the service data into the original response 99 GSXML.mergeElements(c1, c2); 100 } else { 101 System.err.println("DefaultReceptionist Error: response does not correspond to request!"); 102 } 103 104 } 105 } 106 59 107 } 60 108 }
Note:
See TracChangeset
for help on using the changeset viewer.