mev-4.0.01/source/org/tigr/microarray/mev/script/util/ScriptParser.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2004, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * ScriptParser.java
2 26 Feb 07 jari 7  *
2 26 Feb 07 jari 8  * Created on December 15, 2003, 10:59 PM
2 26 Feb 07 jari 9  */
2 26 Feb 07 jari 10
2 26 Feb 07 jari 11 package org.tigr.microarray.mev.script.util;
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 import java.io.File;
2 26 Feb 07 jari 14 import java.io.IOException;
2 26 Feb 07 jari 15 import java.io.Writer;
2 26 Feb 07 jari 16
2 26 Feb 07 jari 17 import org.apache.xerces.parsers.DOMParser;
2 26 Feb 07 jari 18 import org.w3c.dom.Document;
2 26 Feb 07 jari 19 import org.w3c.dom.Element;
2 26 Feb 07 jari 20 import org.w3c.dom.Node;
2 26 Feb 07 jari 21 import org.w3c.dom.NodeList;
2 26 Feb 07 jari 22 import org.w3c.dom.traversal.DocumentTraversal;
2 26 Feb 07 jari 23 import org.w3c.dom.traversal.NodeFilter;
2 26 Feb 07 jari 24 import org.w3c.dom.traversal.NodeIterator;
2 26 Feb 07 jari 25
2 26 Feb 07 jari 26 /**
2 26 Feb 07 jari 27  *
2 26 Feb 07 jari 28  * @author  braisted
2 26 Feb 07 jari 29  */
2 26 Feb 07 jari 30 public class ScriptParser {
2 26 Feb 07 jari 31     
2 26 Feb 07 jari 32     Document doc;
2 26 Feb 07 jari 33     String lineSeparator = "\n\n";
2 26 Feb 07 jari 34     String indent = "   ";
2 26 Feb 07 jari 35     
2 26 Feb 07 jari 36     /** Creates a new instance of ScriptParser */
2 26 Feb 07 jari 37     public ScriptParser() {
2 26 Feb 07 jari 38         
2 26 Feb 07 jari 39     }
2 26 Feb 07 jari 40     
2 26 Feb 07 jari 41     public void printValues(String fileName) throws Exception {
2 26 Feb 07 jari 42         //File specification
2 26 Feb 07 jari 43         File file = new File(fileName);
2 26 Feb 07 jari 44         //Intantiate parser
2 26 Feb 07 jari 45         DOMParser parser = new DOMParser();
2 26 Feb 07 jari 46         //Parse file
2 26 Feb 07 jari 47         parser.parse(file.toURL().toString());
2 26 Feb 07 jari 48         //get document
2 26 Feb 07 jari 49         doc = parser.getDocument();
2 26 Feb 07 jari 50         //get document root
2 26 Feb 07 jari 51         Element analysis = doc.getDocumentElement();
2 26 Feb 07 jari 52         
2 26 Feb 07 jari 53         NodeList algSets = analysis.getElementsByTagNameNS("","alg_set");
2 26 Feb 07 jari 54         NodeIterator algorithmIterator;
2 26 Feb 07 jari 55         Element algSet;
2 26 Feb 07 jari 56         
2 26 Feb 07 jari 57         Element algorithm;
2 26 Feb 07 jari 58       
2 26 Feb 07 jari 59         
2 26 Feb 07 jari 60         for(int i = 0; i < algSets.getLength(); i++){
2 26 Feb 07 jari 61             
2 26 Feb 07 jari 62             algSet = (Element)algSets.item(i);
2 26 Feb 07 jari 63             
2 26 Feb 07 jari 64             algorithmIterator = ((DocumentTraversal)doc).createNodeIterator(algSet, NodeFilter.SHOW_ALL, null, true);
2 26 Feb 07 jari 65         
2 26 Feb 07 jari 66             Node node;
2 26 Feb 07 jari 67             while((node = algorithmIterator.nextNode()) != null) {
2 26 Feb 07 jari 68                 if(node.getNodeType() == Node.ELEMENT_NODE){
2 26 Feb 07 jari 69                     System.out.println("Node name = "+node.getNodeName());
2 26 Feb 07 jari 70                 } else if(node.getNodeType() == Node.TEXT_NODE){
2 26 Feb 07 jari 71                     System.out.println("Value = "+node.getNodeValue());
2 26 Feb 07 jari 72                 }
2 26 Feb 07 jari 73                 System.out.println("=========================");
2 26 Feb 07 jari 74                 
2 26 Feb 07 jari 75             }
2 26 Feb 07 jari 76             
2 26 Feb 07 jari 77         
2 26 Feb 07 jari 78         }   
2 26 Feb 07 jari 79         
2 26 Feb 07 jari 80     }
2 26 Feb 07 jari 81      
2 26 Feb 07 jari 82     public void writeDocument(String fileName) throws IOException {
2 26 Feb 07 jari 83         java.io.FileWriter writer = new java.io.FileWriter(fileName);
2 26 Feb 07 jari 84         serialize(doc, writer);        
2 26 Feb 07 jari 85         writer.flush();
2 26 Feb 07 jari 86         writer.close();
2 26 Feb 07 jari 87     }
2 26 Feb 07 jari 88     
2 26 Feb 07 jari 89     private void serialize(Document doc, Writer writer) throws IOException {
2 26 Feb 07 jari 90         serializeNode(doc, writer, "");
2 26 Feb 07 jari 91     }
2 26 Feb 07 jari 92     
2 26 Feb 07 jari 93     private void serializeNode(Node node, Writer writer, String indentLevel) throws IOException {
2 26 Feb 07 jari 94         String name;
2 26 Feb 07 jari 95         
2 26 Feb 07 jari 96         switch(node.getNodeType()) {
2 26 Feb 07 jari 97             case Node.DOCUMENT_NODE:
2 26 Feb 07 jari 98                 writer.write("<?xml version=\"1.0\"?>");
2 26 Feb 07 jari 99                 writer.write(lineSeparator);
2 26 Feb 07 jari 100                 
2 26 Feb 07 jari 101                 Document doc = (Document)node;
2 26 Feb 07 jari 102                 serializeNode(doc.getDocumentElement(), writer, " ");
2 26 Feb 07 jari 103                 break;
2 26 Feb 07 jari 104             case Node.ELEMENT_NODE:
2 26 Feb 07 jari 105                 name = node.getNodeName();
2 26 Feb 07 jari 106                 writer.write(indentLevel + "<" + name);
2 26 Feb 07 jari 107                 //posible attributes
2 26 Feb 07 jari 108                 
2 26 Feb 07 jari 109                 writer.write(">");
2 26 Feb 07 jari 110                 
2 26 Feb 07 jari 111                 NodeList children = node.getChildNodes();
2 26 Feb 07 jari 112                 if(children != null) {
2 26 Feb 07 jari 113                  if((children.item(0) != null) && 
2 26 Feb 07 jari 114                     (children.item(0).getNodeType() == Node.ELEMENT_NODE )){
2 26 Feb 07 jari 115                     writer.write(lineSeparator); 
2 26 Feb 07 jari 116                  }
2 26 Feb 07 jari 117                  for(int i = 0; i < children.getLength(); i++){
2 26 Feb 07 jari 118                     serializeNode(children.item(i), writer, indentLevel + indent);
2 26 Feb 07 jari 119                  }
2 26 Feb 07 jari 120                  if((children.item(0) != null) && 
2 26 Feb 07 jari 121                     (children.item(children.getLength()-1).getNodeType() == Node.ELEMENT_NODE)) {
2 26 Feb 07 jari 122                     writer.write(indentLevel);
2 26 Feb 07 jari 123                  }
2 26 Feb 07 jari 124                     
2 26 Feb 07 jari 125                     
2 26 Feb 07 jari 126                 }
2 26 Feb 07 jari 127                 writer.write("</" + name + ">");
2 26 Feb 07 jari 128                 writer.write(lineSeparator);
2 26 Feb 07 jari 129                 break;
2 26 Feb 07 jari 130             case Node.TEXT_NODE:
2 26 Feb 07 jari 131                 writer.write(node.getNodeValue());
2 26 Feb 07 jari 132                 break;
2 26 Feb 07 jari 133             case Node.COMMENT_NODE:
2 26 Feb 07 jari 134                 break;
2 26 Feb 07 jari 135         }
2 26 Feb 07 jari 136     }
2 26 Feb 07 jari 137     
2 26 Feb 07 jari 138     public static void main(String [] args){
2 26 Feb 07 jari 139         ScriptParser sp = new ScriptParser();
2 26 Feb 07 jari 140         try{
2 26 Feb 07 jari 141         sp.printValues("c:/Temp/script.xml");
2 26 Feb 07 jari 142
2 26 Feb 07 jari 143         sp.writeDocument("c:/Temp/result_script.xml");
2 26 Feb 07 jari 144         
2 26 Feb 07 jari 145         } catch (Exception e) {e.printStackTrace();}
2 26 Feb 07 jari 146     }
2 26 Feb 07 jari 147 }