Changeset 28382 for main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/GS2BrowseAction.java
- Timestamp:
- 2013-10-10T17:21:30+13:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/GS2BrowseAction.java
r26508 r28382 12 12 import org.greenstone.gsdl3.util.OID; 13 13 import org.greenstone.gsdl3.util.UserContext; 14 import org.w3c.dom.Document; 14 15 import org.w3c.dom.Element; 15 16 import org.w3c.dom.Node; … … 29 30 public Node process(Node message_node) 30 31 { 31 32 32 Element message = this.converter.nodeToElement(message_node); 33 33 Document doc = message.getOwnerDocument(); 34 34 35 // get the request - assume only one 35 36 Element request = (Element) GSXML.getChildByTagName(message, GSXML.REQUEST_ELEM); 36 37 37 38 // the result 38 Element result = this.doc.createElement(GSXML.MESSAGE_ELEM);39 Element result = doc.createElement(GSXML.MESSAGE_ELEM); 39 40 Element response = classifierBrowse(request); 40 41 result.appendChild(response); … … 44 45 protected Element classifierBrowse(Element request) 45 46 { 46 Element page_response = this.doc.createElement(GSXML.RESPONSE_ELEM); 47 Document doc = request.getOwnerDocument(); 48 Element page_response = doc.createElement(GSXML.RESPONSE_ELEM); 47 49 48 50 // extract the params from the cgi-request, and check that we have a coll specified … … 72 74 // this should be cached somehow later on. 73 75 74 Element info_message = this.doc.createElement(GSXML.MESSAGE_ELEM);75 Element info_request = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_DESCRIBE, to, userContext);76 Element info_message = doc.createElement(GSXML.MESSAGE_ELEM); 77 Element info_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_DESCRIBE, to, userContext); 76 78 info_message.appendChild(info_request); 77 79 78 80 // also get the format stuff now if there is some 79 Element format_request = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_FORMAT, to, userContext);81 Element format_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_FORMAT, to, userContext); 80 82 info_message.appendChild(format_request); 81 83 // process the requests … … 89 91 90 92 Element service_description = (Element) GSXML.getChildByTagName(service_response, GSXML.SERVICE_ELEM); 91 page_response.appendChild( this.doc.importNode(service_description, true));93 page_response.appendChild(doc.importNode(service_description, true)); 92 94 93 95 //append site metadata … … 139 141 } 140 142 141 Element new_format = GSXML.duplicateWithNewName( this.doc, this_format, GSXML.FORMAT_ELEM, false);143 Element new_format = GSXML.duplicateWithNewName(doc, this_format, GSXML.FORMAT_ELEM, false); 142 144 extractMetadataNames(new_format, doc_meta_names, class_meta_names); 143 145 … … 164 166 165 167 // get the browse structure for the selected node 166 Element classify_message = this.doc.createElement(GSXML.MESSAGE_ELEM);167 Element classify_request = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext);168 Element classify_message = doc.createElement(GSXML.MESSAGE_ELEM); 169 Element classify_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext); 168 170 classify_message.appendChild(classify_request); 169 171 170 172 //Create a parameter list to specify the required structure information 171 173 // for now, always get ancestors and children 172 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);174 Element param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 173 175 classify_request.appendChild(param_list); 174 Element param = this.doc.createElement(GSXML.PARAM_ELEM);176 Element param = doc.createElement(GSXML.PARAM_ELEM); 175 177 param_list.appendChild(param); 176 178 param.setAttribute(GSXML.NAME_ATT, "structure"); 177 179 param.setAttribute(GSXML.VALUE_ATT, "ancestors"); 178 param = this.doc.createElement(GSXML.PARAM_ELEM);180 param = doc.createElement(GSXML.PARAM_ELEM); 179 181 param_list.appendChild(param); 180 182 param.setAttribute(GSXML.NAME_ATT, "structure"); … … 183 185 if (get_descendants) 184 186 { 185 param = this.doc.createElement(GSXML.PARAM_ELEM);187 param = doc.createElement(GSXML.PARAM_ELEM); 186 188 param_list.appendChild(param); 187 189 param.setAttribute(GSXML.NAME_ATT, "structure"); … … 191 193 192 194 // put the classifier node into a classifier node list 193 Element classifier_list = this.doc.createElement(GSXML.CLASS_NODE_ELEM + GSXML.LIST_MODIFIER);194 Element classifier = this.doc.createElement(GSXML.CLASS_NODE_ELEM);195 Element classifier_list = doc.createElement(GSXML.CLASS_NODE_ELEM + GSXML.LIST_MODIFIER); 196 Element classifier = doc.createElement(GSXML.CLASS_NODE_ELEM); 195 197 classifier.setAttribute(GSXML.NODE_ID_ATT, classifier_node); 196 198 classifier_list.appendChild(classifier); … … 233 235 if (firstChildIsClassifierNode) 234 236 { 235 Element childStructure = getClassifierStructureFromID( classifier_node + ".1", request, collection, service_name);237 Element childStructure = getClassifierStructureFromID(doc, classifier_node + ".1", request, collection, service_name); 236 238 237 239 Element replacementElem = null; … … 266 268 else 267 269 { 268 Element childStructure = getClassifierStructureFromID( OID.getTop(classifier_node), request, collection, service_name);270 Element childStructure = getClassifierStructureFromID(doc, OID.getTop(classifier_node), request, collection, service_name); 269 271 270 272 String[] idParts = classifier_node.split("\\."); … … 305 307 Element page_classifier = null; 306 308 // add the single classifier node as the page classifier 307 page_classifier = GSXML.duplicateWithNewName( this.doc, cl_structure, GSXML.CLASSIFIER_ELEM, true);309 page_classifier = GSXML.duplicateWithNewName(doc, cl_structure, GSXML.CLASSIFIER_ELEM, true); 308 310 page_response.appendChild(page_classifier); 309 311 page_classifier.setAttribute(GSXML.NAME_ATT, top_id); … … 312 314 // then for each document node 313 315 314 Element metadata_message = this.doc.createElement(GSXML.MESSAGE_ELEM);316 Element metadata_message = doc.createElement(GSXML.MESSAGE_ELEM); 315 317 316 318 boolean did_classifier = false; … … 325 327 { 326 328 did_classifier = true; 327 Element cl_meta_request = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_PROCESS, to + "MetadataRetrieve", userContext);329 Element cl_meta_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_PROCESS, to + "MetadataRetrieve", userContext); 328 330 metadata_message.appendChild(cl_meta_request); 329 331 330 Element new_cl_nodes_list = this.doc.createElement(GSXML.CLASS_NODE_ELEM + GSXML.LIST_MODIFIER);332 Element new_cl_nodes_list = doc.createElement(GSXML.CLASS_NODE_ELEM + GSXML.LIST_MODIFIER); 331 333 cl_meta_request.appendChild(new_cl_nodes_list); 332 334 … … 334 336 { 335 337 336 Element cl = this.doc.createElement(GSXML.CLASS_NODE_ELEM);338 Element cl = doc.createElement(GSXML.CLASS_NODE_ELEM); 337 339 cl.setAttribute(GSXML.NODE_ID_ATT, ((Element) cl_nodes.item(c)).getAttribute(GSXML.NODE_ID_ATT)); 338 340 new_cl_nodes_list.appendChild(cl); … … 342 344 // should be based on info sent in from the recept, and the 343 345 // format stuff 344 Element cl_param_list = createMetadataParamList( class_meta_names);346 Element cl_param_list = createMetadataParamList(doc,class_meta_names); 345 347 cl_meta_request.appendChild(cl_param_list); 346 348 … … 354 356 { 355 357 did_documents = true; 356 Element doc_meta_request = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_PROCESS, GSPath.appendLink(collection, "DocumentMetadataRetrieve"), userContext);358 Element doc_meta_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_PROCESS, GSPath.appendLink(collection, "DocumentMetadataRetrieve"), userContext); 357 359 metadata_message.appendChild(doc_meta_request); 358 360 359 Element doc_list = this.doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER);361 Element doc_list = doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 360 362 doc_meta_request.appendChild(doc_list); 361 363 … … 363 365 { 364 366 365 Element d = this.doc.createElement(GSXML.DOC_NODE_ELEM);367 Element d = doc.createElement(GSXML.DOC_NODE_ELEM); 366 368 d.setAttribute(GSXML.NODE_ID_ATT, ((Element) doc_nodes.item(c)).getAttribute(GSXML.NODE_ID_ATT)); 367 369 doc_list.appendChild(d); … … 369 371 370 372 // create and add in the param list - add all for now 371 Element doc_param_list = createMetadataParamList(doc _meta_names);373 Element doc_param_list = createMetadataParamList(doc,doc_meta_names); 372 374 doc_meta_request.appendChild(doc_param_list); 373 375 … … 431 433 } 432 434 433 private Element getClassifierStructureFromID( String id, Element request, String collection, String service_name)435 private Element getClassifierStructureFromID(Document doc, String id, Element request, String collection, String service_name) 434 436 { 435 437 UserContext userContext = new UserContext(request); 436 438 String to = GSPath.appendLink(collection, service_name); 437 439 438 Element firstClassifierNodeChildrenMessage = this.doc.createElement(GSXML.MESSAGE_ELEM);439 Element firstClassifierNodeChildrenRequest = GSXML.createBasicRequest( this.doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext);440 Element firstClassifierNodeChildrenMessage = doc.createElement(GSXML.MESSAGE_ELEM); 441 Element firstClassifierNodeChildrenRequest = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext); 440 442 firstClassifierNodeChildrenMessage.appendChild(firstClassifierNodeChildrenRequest); 441 443 442 Element paramList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);444 Element paramList = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 443 445 firstClassifierNodeChildrenRequest.appendChild(paramList); 444 446 445 Element ancestorParam = this.doc.createElement(GSXML.PARAM_ELEM);447 Element ancestorParam = doc.createElement(GSXML.PARAM_ELEM); 446 448 paramList.appendChild(ancestorParam); 447 449 ancestorParam.setAttribute(GSXML.NAME_ATT, "structure"); 448 450 ancestorParam.setAttribute(GSXML.VALUE_ATT, "ancestors"); 449 451 450 Element childrenParam = this.doc.createElement(GSXML.PARAM_ELEM);452 Element childrenParam = doc.createElement(GSXML.PARAM_ELEM); 451 453 paramList.appendChild(childrenParam); 452 454 childrenParam.setAttribute(GSXML.NAME_ATT, "structure"); 453 455 childrenParam.setAttribute(GSXML.VALUE_ATT, "children"); 454 456 455 Element classifierToGetList = this.doc.createElement(GSXML.CLASS_NODE_ELEM + GSXML.LIST_MODIFIER);456 Element classifierToGet = this.doc.createElement(GSXML.CLASS_NODE_ELEM);457 Element classifierToGetList = doc.createElement(GSXML.CLASS_NODE_ELEM + GSXML.LIST_MODIFIER); 458 Element classifierToGet = doc.createElement(GSXML.CLASS_NODE_ELEM); 457 459 classifierToGet.setAttribute(GSXML.NODE_ID_ATT, id); 458 460 classifierToGetList.appendChild(classifierToGet);
Note:
See TracChangeset
for help on using the changeset viewer.