Changeset 23489 for main/trunk/greenstone3/src/java/org/greenstone/gsdl3
- Timestamp:
- 2010-12-14T17:15:30+13:00 (14 years ago)
- Location:
- main/trunk/greenstone3/src/java/org/greenstone/gsdl3
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/FormatAction.java
r23405 r23489 55 55 56 56 String coll = (String)params.get(GSParams.COLLECTION); //SYSTEM_CLUSTER); 57 //String subaction = (String)params.get(GSParams.SUBACTION); 57 58 String service = (String)params.get(GSParams.SERVICE); 58 59 String classifier = (String)params.get("cl"); … … 60 61 61 62 logger.error("Collection="+coll); 63 logger.error("Subaction="+subaction); 62 64 logger.error("Service="+service); 63 65 logger.error("Classifier="+classifier); … … 72 74 Element mr_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_FORMAT_STRING, to, lang, uid); 73 75 74 request.setAttribute("service", service); 75 if(classifier != null) 76 request.setAttribute("classifier", classifier); 76 mr_request.setAttribute("service", service); 77 mr_request.setAttribute("subaction", subaction); 78 //if(classifier != null) 79 mr_request.setAttribute("classifier", classifier); 77 80 78 81 mr_request_message.appendChild(mr_request); … … 98 101 InputSource is = new InputSource( new StringReader( input ) ); 99 102 Document d = (Document) builder.parse( is ); 100 // Element e = d.getDocumentElement();101 // Node d2 = this.doc.importNode(e,true);103 //Node n1 = d.getFirstChild(); 104 //Document d2 = (Document) this.doc.importNode(e, true); 102 105 103 //Document format_doc = this.converter.newDOM(); 104 //doc.appendChild(d2); 105 106 //File interface_config_file = new File(GSFile.interfaceConfigFile(GSFile.interfaceHome(GlobalProperties.getGSDL3Home(), (String)this.config_params.get(GSConstants.INTERFACE_NAME)))); 107 //if (!interface_config_file.exists()) { 108 // logger.error(" interface config file: "+interface_config_file.getPath()+" not found!"); 109 //} 110 //Document config_doc = this.converter.getDOM(interface_config_file, "utf-8"); 111 //if (config_doc == null) { 112 // logger.error(" could not parse interface config file: "+interface_config_file.getPath()); 113 //} 114 115 //Element config_elem = config_doc.getDocumentElement(); 116 //String base_interface = config_elem.getAttribute("baseInterface"); 117 106 //Element format_statement = this.doc.importNode(d, true); 118 107 119 108 // Call XSLT to transform document to xml format string 120 109 XMLTransformer transformer = new XMLTransformer(); 121 //String stylesheet = GSFile.stylesheetFile(GlobalProperties.getGSDL3Home(), (String)this.config_params.get(GSConstants.SITE_NAME), coll, (String)this.config_params.get(GSConstants.INTERFACE_NAME), "oran", "FormatAction"); 122 //logger.error(stylesheet); 110 // HOW DO I DO THIS PROPERLY? 123 111 Document style_doc = this.converter.getDOM(new File("/home/sam/greenstone3/web/interfaces/oran/transform/formatString.xsl"), "UTF-8"); 124 112 … … 127 115 128 116 // not sure what to do here - some code from Transforming Receptionist 129 String transformed = transformer.transformToString(style_doc, d); 130 //Node transformed = transformer.transform(style_doc, d); 131 117 //String transformed = transformer.transformToString(style_doc, d); 118 logger.error("About to transform"); 119 Node transformed = (Node) transformer.transform(style_doc, d); // Failing org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted. ; SystemID: file:///home/sam/greenstone3/packages/tomcat/bin/dummy.xsl 120 121 logger.error("Transform successful?"); 122 123 if(transformed==null) // not null 124 logger.error("TRANSFORMED IS NULL"); 125 126 logger.error("begin import"); 127 Node imported = this.doc.importNode(transformed, true); // There was an exception org.w3c.dom.DOMException: NOT_SUPPORTED_ERR: The implementation does not support the requested type of object or operation. 128 logger.error("finished import"); 129 130 String format_string2 = GSXML.xmlNodeToString(imported); // null pointer exception occuring here 131 logger.error("format string="+format_string2); 132 132 133 Element format = this.doc.createElement(GSXML.FORMAT_STRING_ELEM); 133 GSXML.setNodeText(format, transformed);134 //format.appendChild(this.doc.createTextNode(transformed));134 //GSXML.setNodeText(format, transformed); 135 format.appendChild(transformed); 135 136 //format.setNodeValue(transformed); 136 137 mr_request.appendChild(format); -
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 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/collection/ServiceCluster.java
r23417 r23489 34 34 import java.io.*; 35 35 import java.io.File; 36 import java.io.RandomAccessFile; 36 37 import java.util.HashMap; 37 38 import java.util.Iterator; … … 510 511 return response; 511 512 } 512 513 /* 513 514 if (type.equals(GSXML.REQUEST_TYPE_FORMAT_STRING)) { 514 515 logger.error("Received format string request"); … … 528 529 // check for version file 529 530 530 String directory = new File(GSFile.collectionConfigFile(this.site_home, this.cluster_name)).getParent() + "/";531 String directory = new File(GSFile.collectionConfigFile(this.site_home, this.cluster_name)).getParent() + File.pathSeparator; 531 532 logger.error("Directory is " + directory); 532 533 … … 540 541 File version_file = new File(version_filename); 541 542 logger.error("Version filename is " + version_filename); 543 542 544 String version_number = "1"; 545 BufferedWriter writer; // = new BufferedWriter(new FileWriter(version_filename)); 546 //RandomAccessFile version_file_random_access; 543 547 544 548 try{ … … 548 552 // Read version 549 553 BufferedReader reader = new BufferedReader(new FileReader(version_filename)); 554 //version_file_random_access = new RandomAccessFile(version_file, "r"); 555 //logger.error(" 556 //version_number = version_file_random_access.readInt(); 550 557 version_number = reader.readLine(); 551 558 int aInt = Integer.parseInt(version_number) + 1; 552 559 version_number = Integer.toString(aInt); 553 560 reader.close(); 561 //version_file_random_access.close(); 554 562 } 555 563 else{ … … 557 565 version_file.createNewFile(); 558 566 // write 1 to file 559 BufferedWriter writer = new BufferedWriter(new FileWriter(version_filename)); 567 writer = new BufferedWriter(new FileWriter(version_filename)); 568 //version_file_random_access = new RandomAccessFile(version_file, "w"); 569 //version_file_random_access.writeInt(version_number); 560 570 writer.write(version_number); 561 571 writer.close(); 572 //version_file_random_access.close(); 562 573 } 563 574 … … 572 583 logger.error("Format statement filename is " + format_statement_filename); 573 584 574 BufferedWriterwriter = new BufferedWriter(new FileWriter(format_statement_filename));585 writer = new BufferedWriter(new FileWriter(format_statement_filename)); 575 586 writer.write(format_string); 576 587 writer.close(); 577 588 578 589 // Update version number 590 //version_file_random_access = new RandomAccessFile(version_file, "w"); 591 //version_file_random_access.writeInt(version_number); 592 //version_file_random_access.close(); 593 594 writer = new BufferedWriter(new FileWriter(version_filename)); 595 //version_file_random_access = new RandomAccessFile(version_file, "w"); 596 //version_file_random_access.writeInt(version_number); 597 writer.write(version_number); 598 writer.close(); 599 600 579 601 580 602 } catch (IOException e) { … … 584 606 585 607 586 } 608 }*/ 587 609 if (type.equals(GSXML.REQUEST_TYPE_SYSTEM)) { 588 610 response = processSystemRequest(request); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/GSXML.java
r23360 r23489 921 921 sb.append(e.getNodeName()); 922 922 NamedNodeMap attrs = e.getAttributes(); 923 for (int i = 0; i < attrs.getLength(); i++) { 924 Node attr = attrs.item(i); 925 sb.append(' '); 926 sb.append(attr.getNodeName()); 927 sb.append("=\""); 928 sb.append(attr.getNodeValue()); 929 sb.append('"'); 923 if(attrs != null) 924 { 925 for (int i = 0; i < attrs.getLength(); i++) { 926 Node attr = attrs.item(i); 927 sb.append(' '); 928 sb.append(attr.getNodeName()); 929 sb.append("=\""); 930 sb.append(attr.getNodeValue()); 931 sb.append('"'); 932 } 930 933 } 931 934 -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/XMLTransformer.java
r23405 r23489 177 177 // Use the TransformerFactory to process the stylesheet Source and generate a Transformer. 178 178 Transformer transformer = this.t_factory.newTransformer(new DOMSource(stylesheet)); 179 logger.error("XMLTransformer transformer is " + transformer); 179 180 transformer.setErrorListener(new TransformErrorListener()); 180 181 if (parameters != null) {
Note:
See TracChangeset
for help on using the changeset viewer.