00001 package clientswing.comunicationsystem;
00002
00003 import java.io.*;
00004 import clientswing.model.*;
00005 import javax.xml.parsers.*;
00006 import javax.xml.transform.*;
00007 import javax.xml.transform.dom.DOMSource;
00008 import javax.xml.transform.stream.StreamResult;
00009 import org.w3c.dom.*;
00010 import org.w3c.dom.Element;
00011 import org.xml.sax.*;
00012 import java.util.Iterator;
00013
00015 public class XMLBuilder
00016 {
00018 private Document doc;
00019
00020 private DocumentBuilderFactory factory;
00021 private DocumentBuilder builder;
00022 private InputSource source;
00023
00024 public XMLBuilder()
00025 {
00026
00027 }
00028
00029 void init() throws ParserConfigurationException {
00030 factory = DocumentBuilderFactory.newInstance();
00031 factory.setNamespaceAware(true);
00032 factory.setValidating(true);
00033 builder = factory.newDocumentBuilder();
00034 doc = builder.newDocument();
00035
00036 }
00037
00038 public String xmlToString(Document doc) throws
00039 TransformerConfigurationException, TransformerException {
00040 TransformerFactory tFactory = TransformerFactory.newInstance();
00041
00042 Transformer t = tFactory.newTransformer();
00043
00044 StringWriter sw = new StringWriter();
00045
00046 t.transform(new DOMSource(doc), new StreamResult(sw));
00047
00048 return sw.toString();
00049 }
00054 public Element xmlColumn(Iterator colIt)
00055 {
00056 Element columns = doc.createElement("columns");
00057 Element column;
00058 Element columnName;
00059 Element columnValue;
00060 Column col;
00061
00062 while (colIt.hasNext()){
00063 column = doc.createElement("column");
00064 columnName = doc.createElement("name");
00065
00066 col = (Column) colIt.next();
00067
00068 columnName.appendChild(doc.createTextNode(col.getName()));
00069 column.appendChild(columnName);
00070
00071 if (col.getValue()!=null){
00072 columnValue = doc.createElement("value");
00073 columnValue.appendChild(doc.createTextNode(col.getValue()));
00074 column.appendChild(columnValue);
00075
00076 }
00077 columns.appendChild(column);
00078 }
00079 return columns;
00080 }
00081
00083 public synchronized String build (XRequestQuery query) throws
00084 ParserConfigurationException, TransformerConfigurationException,
00085 TransformerException {
00086
00087 init();
00088 Iterator colIt = query.getColumns().iterator();
00089 Iterator colItWhere = query.getWhere().iterator();
00090 Element root = doc.createElement("xrequest");
00091
00092 Element queryNameTable = doc.createElement("table");
00093 queryNameTable.appendChild(doc.createTextNode(query.getTableName()));
00094 root.appendChild(queryNameTable);
00095 if (!query.getColumns().isEmpty()){
00096 Element columns = xmlColumn(colIt);
00097
00098 root.appendChild(columns);
00099 }
00100
00101 if (!query.getWhere().isEmpty()){
00102 Element queryWhereClause = doc.createElement("where");
00103 Element columnsWhere = xmlColumn(colItWhere);
00104 System.out.println("\n*** ");
00105
00106 queryWhereClause.appendChild(columnsWhere);
00107 root.appendChild(queryWhereClause);
00108
00109 }
00110
00111 root.setAttribute("xmlns","http://xml.netbeans.org/examples/targetNS");
00112 root.setAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
00113 root.setAttribute("xsi:schemaLocation","http://xml.netbeans.org/examples/targetNS xrequest.xsd");
00114 root.setAttribute("type",query.getService());
00115
00116 doc.appendChild(root);
00117
00118 root.normalize();
00119
00120 return xmlToString(doc);
00121
00122
00123 }
00124
00125 public static void main(String[] argv){
00126
00127 XRequestQuery req = new XRequestQuery();
00128
00129 req.setTableName("PippoTable");
00130
00131 req.setService("select");
00132
00133 req.addColumn(new Column("nome","aldo"));
00134 req.addColumn(new Column("cognome"));
00135 try{
00136 System.out.print(new XMLBuilder().build(req));
00137 }catch(Exception e){
00138 e.printStackTrace();
00139 }
00140
00141 }
00142
00143
00144
00145 }