- Timestamp:
- 2010-12-14T17:15:30+13:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/collection/Collection.java
r21771 r23489 30 30 import org.w3c.dom.NodeList; 31 31 32 import java.io.*; 32 33 import java.io.File; 33 34 import java.util.HashMap; … … 299 300 } 300 301 302 /** handles requests made to the ServiceCluster itself 303 * 304 * @param req - the request Element- <request> 305 * @return the result Element - should be <response> 306 */ 307 protected Element processMessage(Element request) { 308 309 Element response = this.doc.createElement(GSXML.RESPONSE_ELEM); 310 response.setAttribute(GSXML.FROM_ATT, this.cluster_name); 311 String type = request.getAttribute(GSXML.TYPE_ATT); 312 String lang = request.getAttribute(GSXML.LANG_ATT); 313 response.setAttribute(GSXML.TYPE_ATT, type); 314 315 if (type.equals(GSXML.REQUEST_TYPE_FORMAT_STRING)) { 316 logger.error("Received format string request"); 317 318 String subaction = request.getAttribute("subaction"); 319 logger.error("Subaction is " + subaction); 320 321 String service = request.getAttribute("service"); 322 logger.error("Service is " + service); 323 324 String classifier = null; 325 if(service.equals("ClassifierBrowse")) 326 { 327 classifier = request.getAttribute("classifier"); 328 logger.error("Classifier is " + classifier); 329 } 330 331 Element format_element = (Element) GSXML.getChildByTagName(request, GSXML.FORMAT_STRING_ELEM); 332 //String format_string = GSXML.getNodeText(format_element); 333 Element format_statement = (Element) format_element.getFirstChild(); 334 335 //logger.error("Format string: " + format_string); 336 logger.error("Config file location = " + GSFile.collectionConfigFile(this.site_home, this.cluster_name)); 337 338 // check for version file 339 340 String directory = new File(GSFile.collectionConfigFile(this.site_home, this.cluster_name)).getParent() + File.separator; 341 logger.error("Directory is " + directory); 342 343 String version_filename = ""; 344 if(service.equals("ClassifierBrowse")) 345 version_filename = directory + "browse_"+classifier+"_format_statement_version.txt"; 346 else 347 version_filename = directory + "query_format_statement_version.txt"; 348 349 File version_file = new File(version_filename); 350 logger.error("Version filename is " + version_filename); 351 352 353 if(subaction.equals("update")) 354 { 355 String version_number = "1"; 356 BufferedWriter writer; 357 358 try{ 359 360 if(version_file.exists()) 361 { 362 // Read version 363 BufferedReader reader = new BufferedReader(new FileReader(version_filename)); 364 version_number = reader.readLine(); 365 int aInt = Integer.parseInt(version_number) + 1; 366 version_number = Integer.toString(aInt); 367 reader.close(); 368 } 369 else{ 370 // Create 371 version_file.createNewFile(); 372 writer = new BufferedWriter(new FileWriter(version_filename)); 373 writer.write(version_number); 374 writer.close(); 375 } 376 377 // Write version file 378 String format_statement_filename = ""; 379 380 if(service.equals("ClassifierBrowse")) 381 format_statement_filename = directory + "browse_"+classifier+"_format_statement_v" + version_number + ".txt"; 382 else 383 format_statement_filename = directory + "query_format_statement_v" + version_number + ".txt"; 384 385 logger.error("Format statement filename is " + format_statement_filename); 386 387 // Write format statement 388 String format_string = GSXML.xmlNodeToString(format_statement); 389 writer = new BufferedWriter(new FileWriter(format_statement_filename)); 390 writer.write(format_string); 391 writer.close(); 392 393 // Update version number 394 writer = new BufferedWriter(new FileWriter(version_filename)); 395 writer.write(version_number); 396 writer.close(); 397 398 } catch (IOException e) { 399 logger.error("IO Exception "+e); 400 } 401 } 402 403 if(subaction.equals("save")) 404 { 405 logger.error("SAVE format statement"); 406 407 // open collectionConfig.xml and read in to w3 Document 408 String collection_config = directory + "collectionConfig.xml"; 409 Document config = this.converter.getDOM(new File(collection_config), "UTF-8"); 410 411 //String tag_name = ""; 412 int k; 413 int index; 414 Element elem; 415 Node current_node = GSXML.getChildByTagName(config, "CollectionConfig"); 416 NodeList current_node_list; 417 418 if(service.equals("ClassifierBrowse")) 419 { 420 //tag_name = "browse"; 421 // if CLX then need to look in <classifier> X then <format> 422 // default is <browse><format> 423 424 current_node = GSXML.getChildByTagName(current_node, "browse"); 425 426 // find CLX 427 if(classifier != null) 428 { 429 current_node_list = GSXML.getChildrenByTagName(current_node, "classifier"); 430 index = Integer.parseInt(classifier.substring(2)) - 1; 431 // index should be given by X-1 432 current_node = current_node_list.item(index); 433 current_node = GSXML.getChildByTagName(current_node, "format"); 434 } 435 else{ 436 current_node = GSXML.getChildByTagName(current_node, "format"); 437 } 438 } 439 else 440 { 441 // look in <format> with no attributes 442 443 current_node_list = GSXML.getChildrenByTagName(current_node, "search"); 444 for(k=0; k<current_node_list.getLength(); k++) 445 { 446 current_node = current_node_list.item(k); 447 // if current_node has no attributes then break 448 elem = (Element) current_node; 449 if(elem.hasAttribute("name")==false) 450 break; 451 } 452 } 453 454 // Current_node should be a format tag 455 elem = (Element) current_node; 456 457 logger.error("Current_node = " + elem.getNodeName()); 458 459 // seems we want to remove current child/ren and replace with format_statement's child/ren? 460 461 // remove existing 462 current_node_list = elem.getChildNodes(); 463 for(k=0; k<current_node_list.getLength(); k++) 464 { 465 current_node = elem.removeChild(current_node_list.item(k)); 466 } 467 468 // append new 469 current_node_list = format_statement.getChildNodes(); 470 for(k=0; k<current_node_list.getLength(); k++) 471 { 472 current_node = elem.appendChild(current_node_list.item(k)); 473 } 474 475 //String text = GSXML.getNodeText(elem); 476 //logger.error(text); 477 //text = text.replaceAll("_httpsite_", http_site); 478 //text = text.replaceAll("_httpcollection_", http_collection); 479 //GSXML.setNodeText(d, text); 480 481 // Now convert config document to string for writing to file 482 String new_config = GSXML.xmlNodeToString(config); 483 484 // Write to file (not original! for now) 485 try{ 486 BufferedWriter writer = new BufferedWriter(new FileWriter(collection_config+".new")); 487 writer.write(new_config); 488 writer.close(); 489 } catch (IOException e) { 490 logger.error("IO Exception "+e); 491 } 492 } 493 } 494 else { // unknown type 495 super.processMessage(request); 496 497 } 498 return response; 499 } 500 301 501 } 302 502
Note:
See TracChangeset
for help on using the changeset viewer.