package net.sf.lab3f.sql; import java.lang.reflect.Method; import java.io.File; import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; import java.util.Map; import java.util.HashMap; public class HSQLDB implements Connectionable { private Map <String, Connection> connections = new HashMap <String, Connection> (); private Thread mainThread; private boolean hasHsqldb = false; public void start () throws Exception{ final Properties props = new Properties(); System.out.println("[INFO] Srarting hsqldb service..."); Class.forName("org.hsqldb.jdbc.JDBCDriver"); if(!(new File("conf/jdbc.properties").exists()))return; props.load(new FileInputStream("conf/jdbc.properties")); // final StringBuffer sb = new StringBuffer(); // sb.append("--address "); sb.append(props.getProperty("hsqldb.address", "localhost") + ' '); // sb.append("--port "); sb.append(props.getProperty("hsqsdb.port", "9001") + ' '); // sb.append("--tls "); sb.append(props.getProperty("hsqldb.tls", "false") + ' '); for(int i = 0; props.getProperty("dbname." + i) != null; i++){ if(!props.getProperty("dbtype." + i).equals("hsqldb"))continue; // hasHsqldb = true; // String dBase = props.getProperty("database." + i, "db/hsqldb/" + dbName); // sb.append("--database." + i + " " + dBase + ' ');// sb.append("file:db/hsqldb/" + props.getProperty("database." + i, "test" + i) + ' '); // sb.append("--dbname." + i + " " + dbName + ' ');// sb.append(props.getProperty("dbname." + i, "test" + i) + ' '); // String url = "jdbc:hsqldb:file:" + dBase + ";default_schema=true"; String dbName = props.getProperty("dbname." + i); String url = props.getProperty("dburl." + i); String usr = props.getProperty("dbuser." + i); String pwd = props.getProperty("dbpasswd." + i); Connection conn = DriverManager.getConnection(url, usr, pwd); System.out.println("\tConnection with " + dbName + " is established."); setConnection(dbName, conn); } // mainThread = new Thread( // new Runnable(){ // public void run(){ // if(new Boolean(props.getProperty("hsqldb.autostart", "false")) && hasHsqldb)org.hsqldb.server.WebServer.main(sb.toString().split("\\s+")); // } // } // ); // mainThread.start(); } public void setConnection(String s, Connection c){connections.put(s, c);} public Connection getConnection(String s){return connections.get(s);} public void stop() throws Exception {if(mainThread != null)mainThread.interrupt();} }