/Users/detro/workspace-nb/JAEBI-SwingClient/src/clientswing/comunicationsystem/XMLParser.java

Vai alla documentazione di questo file.
00001 package clientswing.comunicationsystem;
00002 
00003 
00004 
00005 import java.io.*;
00006 
00007 import clientswing.model.*;
00008 import javax.xml.parsers.*;
00009 import org.w3c.dom.*;
00010 import org.w3c.dom.Element;
00011 import org.xml.sax.*;
00012 
00013 
00017 public class XMLParser {
00018 
00019   XResponseRowSet xresponse;
00020   private Document doc;
00021   private DocumentBuilderFactory factory;
00022   private DocumentBuilder builder;
00023   private InputSource source;
00024 
00025 
00026   public XMLParser() {
00027   }
00028 
00029   private void init() throws ParserConfigurationException {
00030     factory = DocumentBuilderFactory.newInstance();
00031     factory.setNamespaceAware(true);
00032     factory.setValidating(false);
00033     builder = factory.newDocumentBuilder();
00034 
00035 
00036   }
00037 
00040   public XResponse parse(String xml)
00041      throws ParserConfigurationException, IOException, SAXException {
00042     xresponse = new XResponseRowSet();
00043     Document doc;
00044     System.out.print("XML Ricevuto:" + xml);
00045     init();
00046     doc = builder.parse( new InputSource( new StringReader(xml)));
00047 
00048     System.out.print("Parsed.. doc:" + doc);
00049 
00050     if (doc.getDocumentElement().getFirstChild().getNodeName()!="message" ){
00051       //controller fa visualizzare ResponseForm con il risultato della query
00052       return buildRowSet(doc);
00053     }
00054     else
00055       //controller fa visualizzare un messaggio
00056       return buildMessage(doc);
00057 
00058 
00059   }
00066   private XResponseRowSet buildRowSet(Document doc){
00067     XResponseRowSet  rowSet = new XResponseRowSet();
00068 
00069     Element root = doc.getDocumentElement();
00070     int i,j,k;
00071 
00072     System.out.println("Doc:" + doc);
00073     System.out.println("root: " + root);
00074 
00075 
00076     Node rowSetNode = findRowsetNode( root);
00077 
00078     System.out.println("RowSet: " + rowSetNode);
00079 
00080     if (rowSetNode == null) return null;
00081 
00082     NodeList rows = rowSetNode.getChildNodes();
00083 
00084     System.out.print("Number of rows: " + rows.getLength());
00085 
00086     for (i=0;i< rows.getLength();i++){
00087       if (!rows.item(i).getNodeName().equals("#text"))
00088         rowSet.addRow(readRow(rows.item(i) ) );
00089     }
00090 
00091     return rowSet;
00092   }
00093 
00095   private Node findRowsetNode(Node n){
00096     Node child;
00097     for (int i=0;i<n.getChildNodes().getLength();i++){
00098       child = n.getChildNodes().item(i);
00099       if (child.getNodeName().equals("rowset")) return child;
00100     }
00101 
00102     return null;
00103   }
00107   private Row readRow(Node row){
00108     Row r = new Row();
00109     int i;
00110 
00111     System.out.println("Reading row:" + row);
00112     NodeList columns = row.getChildNodes();
00113 
00114     for (i = 0; i < columns.getLength(); i++) {
00115       if (!columns.item(i).getNodeName().equals("#text"))
00116         r.addColumn(readColumn(row.getChildNodes().item(i)));
00117     }
00118 
00119     return r;
00120   }
00124   private Column readColumn(Node column){
00125     Column c = new Column("noName");
00126     int i;
00127 
00128     System.out.println("Reading column" + column);
00129 
00130     for (i = 0; i < column.getChildNodes().getLength(); i++) {
00131       Node curr = column.getChildNodes().item(i);
00132       System.out.println("Found: " + curr.getNodeName() + " Value: " + curr.getNodeValue());
00133       if (curr.getNodeName().equalsIgnoreCase("name")) {
00134         c.setName(curr.getFirstChild().getNodeValue());
00135         System.out.println("Setting name to " + curr.getFirstChild().getNodeValue());
00136       }
00137       else {
00138         if (curr.getNodeName().equalsIgnoreCase("value")) {
00139           c.setValue(curr.getFirstChild().getNodeValue());
00140           System.out.println("Setting value to " + curr.getFirstChild().getNodeValue());
00141         }
00142 
00143       }
00144     }
00145 
00146     return c;
00147   }
00148 
00149 
00151   private XResponseMessage buildMessage(Document doc){
00152 
00153     Element root = doc.getDocumentElement();
00154     System.out.println("Doc:" + doc);
00155     System.out.println("root: " + root);
00156     String typeMessage = root.getFirstChild().getAttributes().getNamedItem("result").getNodeValue();
00157     String message = root.getFirstChild().getFirstChild().getNodeValue();
00158     System.out.println("Message: " + message);
00159     System.out.println("TypeMessage: " + typeMessage);
00160 
00161     XResponseMessage mesText = new XResponseMessage(typeMessage,message);
00162 
00163     return mesText;
00164 
00165   }
00166 
00167 }

Generato il Wed Jun 22 16:42:57 2005 per JAEBI - Swing Client da  doxygen 1.4.3