- Timestamp:
- 2019-02-28T22:00:57+13:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/OAIReceptionist.java
r31915 r32830 297 297 logger.info("*** configure response = "+XMLConverter.getPrettyString(response)); 298 298 } 299 300 protected boolean activateOrDeactivateCollection(String collName, int activationState) { 301 // Send a request like: a=s&sa=<a|d>&st=collection&sn=<collName> 302 Document doc = XMLConverter.newDOM(); 303 Element mr_request_message = doc.createElement(GSXML.MESSAGE_ELEM); 304 Element mr_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_SYSTEM, "", null); 305 mr_request_message.appendChild(mr_request); 306 307 Element system = doc.createElement(GSXML.SYSTEM_ELEM); 308 mr_request.appendChild(system); 309 if(activationState == OAIXML.ACTIVATION) { 310 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_ACTIVATE); 311 } else { 312 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_DEACTIVATE); 313 } 314 system.setAttribute(GSXML.SYSTEM_MODULE_TYPE_ATT, GSXML.COLLECTION_ELEM); 315 system.setAttribute(GSXML.SYSTEM_MODULE_NAME_ATT, collName); 316 317 Element response = (Element) this.mr.process(mr_request_message); 318 logger.info("*** (de)activate response = "+XMLConverter.getPrettyString(response)); 319 320 boolean success = false; 321 NodeList elements = response.getElementsByTagName(GSXML.STATUS_ELEM); 322 if(elements.getLength() <= 0) { 323 logger.error("***** No result status"); 324 return false; 325 } 326 327 String result = GSXML.getNodeText((Element)elements.item(0)); 328 if(result.contains("could not be")) { // could not be (de)activated 329 return false; 330 } else { 331 return true; 332 } 333 } 334 299 335 /** process using strings - just calls process using Elements */ 300 336 public String process(String xml_in) { … … 337 373 } 338 374 375 // Special cases: certain non-OAI commands/non-verbs are recognised 339 376 // special case, reset=true for reloading the MR and recept data 340 377 String reset = request.getAttribute("reset"); … … 344 381 return OAIXML.createResetResponse(true); 345 382 } 346 383 384 // special case 2: activate=<collname> or deactivate=<collname> can be passed to oaiserver servlet too 385 if (request.hasAttribute(GSXML.SYSTEM_TYPE_ACTIVATE)) { 386 String collname = request.getAttribute(GSXML.SYSTEM_TYPE_ACTIVATE); 387 // don't bother activating if it's not an OAI collection 388 if (!this.set_set.contains(collname)) { 389 return OAIXML.createDeActivationOfNonOAICollResponse(OAIXML.ACTIVATION, collname); 390 } 391 boolean success = activateOrDeactivateCollection(collname, OAIXML.ACTIVATION); 392 return OAIXML.createActivationStateResponse(success, OAIXML.ACTIVATION, collname); 393 } else if (request.hasAttribute(GSXML.SYSTEM_TYPE_DEACTIVATE)) { 394 String collname = request.getAttribute(GSXML.SYSTEM_TYPE_DEACTIVATE); 395 // don't bother deactivating if it's not an OAI collection 396 if (!this.set_set.contains(collname)) { 397 return OAIXML.createDeActivationOfNonOAICollResponse(OAIXML.DEACTIVATION, collname); 398 } 399 boolean success = activateOrDeactivateCollection(collname, OAIXML.DEACTIVATION); 400 return OAIXML.createActivationStateResponse(success, OAIXML.DEACTIVATION, collname); 401 } 347 402 348 403 //At this stage, the value of 'to' attribute of the request must be the 'verb'
Note:
See TracChangeset
for help on using the changeset viewer.