- Timestamp:
- 2017-01-13T03:46:43+13:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/QueryAction.java
r30476 r31285 11 11 import org.greenstone.gsdl3.util.GSXSLT; 12 12 import org.greenstone.gsdl3.util.UserContext; 13 import org.greenstone.gsdl3.util.XMLConverter; 13 14 import org.w3c.dom.Document; 14 15 import org.w3c.dom.Element; … … 100 101 if (request_type.indexOf("d") != -1) { 101 102 page_response.appendChild(service_description); 103 addCollectionsHierarchy(page_response,userContext); 102 104 } 103 105 //} … … 284 286 addInterfaceOptions(page_response); 285 287 return page_response; 288 } 289 290 private void addCollectionsHierarchy(Element page_response, UserContext userContext) { 291 Document doc = page_response.getOwnerDocument(); 292 String collectionsHierarchy = "CollectionsHierarchy"; 293 if (checkServiceAvailable(userContext, collectionsHierarchy)){ 294 Element groupQueryMessage = doc.createElement(GSXML.MESSAGE_ELEM); 295 Element groupQueryRequest = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_PROCESS, collectionsHierarchy, userContext); 296 groupQueryMessage.appendChild(groupQueryRequest); 297 Element groupQueryResult = (Element) this.mr.process(groupQueryMessage); 298 if (groupQueryResult == null){ 299 return; 300 } 301 Element groupQueryResponse = (Element) GSXML.getChildByTagName(groupQueryResult, GSXML.RESPONSE_ELEM); 302 if (groupQueryResponse == null){ 303 return; 304 } 305 Element hierarchy = (Element) GSXML.getChildByTagName(groupQueryResponse, GSXML.HIERARCHY_ELEM); 306 page_response.appendChild(doc.importNode(hierarchy, true)); 307 } 308 309 310 } 311 312 private boolean checkServiceAvailable(UserContext userContext, String collectionsHierarchy) { 313 314 Document doc = XMLConverter.newDOM(); 315 Element infoMessage = doc.createElement(GSXML.MESSAGE_ELEM); 316 Element infoRequest = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_DESCRIBE, "", userContext); 317 Element paramList = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 318 infoRequest.appendChild(paramList); 319 GSXML.addParameterToList(paramList, GSXML.SUBSET_PARAM, GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER); 320 infoMessage.appendChild(infoRequest); 321 Element responseMessage = (Element) this.mr.process(infoMessage); 322 if (responseMessage == null) 323 { 324 logger.error("couldn't query the message router!"); 325 return false; 326 } 327 NodeList serviceLists = responseMessage.getElementsByTagName(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER); 328 if (serviceLists == null || serviceLists.getLength() == 0){ 329 logger.error("No service List in response message from message router!"); 330 return false; 331 } 332 Element serviceList = (Element) serviceLists.item(0); 333 Element groupInfoService = GSXML.getNamedElement(serviceList, GSXML.SERVICE_ELEM, GSXML.NAME_ATT, collectionsHierarchy); 334 if (groupInfoService == null){ 335 logger.error("service " + collectionsHierarchy + " unavailable"); 336 return false; 337 } 338 return true; 286 339 } 287 340 … … 375 428 return true; 376 429 } 430 377 431 }
Note:
See TracChangeset
for help on using the changeset viewer.