| 1 19 package org.lucane.server.database.xml; 20 21 import org.lucane.common.Logging; 22 import org.lucane.server.database.DatabaseAbstractionLayer; 23 24 import javax.xml.parsers.*; 25 import org.w3c.dom.*; 26 27 import java.sql.*; 28 29 public abstract class TableCreator 30 { 31 private DatabaseAbstractionLayer dbLayer; 32 33 36 public void setDbLayer(DatabaseAbstractionLayer dbLayer) 37 { 38 this.dbLayer = dbLayer; 39 } 40 41 44 public DatabaseAbstractionLayer getDbLayer() 45 { 46 return this.dbLayer; 47 } 48 49 54 public void createFromXml(String xmlfile) 55 throws Exception  56 { 57 DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 58 Document document = builder.parse(xmlfile); 59 60 Node node = document.getFirstChild(); 62 while(node != null && node.getNodeType() != Node.ELEMENT_NODE) 63 node = node.getNextSibling(); 64 65 if(node == null || !node.getNodeName().equals("database")) 66 throw new Exception ("root element is different from 'database'"); 67 68 69 Connection c = getDbLayer().getConnection(); 71 node = node.getFirstChild(); 72 while(node != null) 73 { 74 if(node.getNodeName().equals("table")) 75 createTableFromXmlNode(c, node); 76 77 node = node.getNextSibling(); 78 } 79 c.close(); 80 81 Logging.getLogger().info("Created tables from '" +xmlfile + "'."); 82 } 83 84 90 public void createFromXml(String xmlfile, String table) 91 throws Exception  92 { 93 DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 94 Document document = builder.parse(xmlfile); 95 96 Node node = document.getFirstChild(); 98 while(node != null && node.getNodeType() != Node.ELEMENT_NODE) 99 node = node.getNextSibling(); 100 101 if(node == null || !node.getNodeName().equals("database")) 102 throw new Exception ("root element is different from 'database'"); 103 104 105 Connection c = getDbLayer().getConnection(); 107 node = node.getFirstChild(); 108 while(node != null) 109 { 110 if(node.getNodeName().equals("table")) 111 { 112 String tableName = node.getAttributes().getNamedItem("name").getNodeValue(); 113 if(tableName.equals(table)) 114 createTableFromXmlNode(c, node); 115 } 116 node = node.getNextSibling(); 117 } 118 c.close(); 119 120 Logging.getLogger().info("Created tables from '" +xmlfile + "'."); 121 } 122 123 129 public abstract void createTableFromXmlNode(Connection connection, Node node) throws Exception ; 130 } 131 | Popular Tags |