package net.sf.lab3f.hsqldb; 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 net.sf.lab3f.jdbc.Multiconnectionable; public class Main { private Multiconnectionable multiConn; 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 dbName = props.getProperty("dbname." + i); 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 usr = props.getProperty("user." + i); String pwd = props.getProperty("password." + i); Connection conn = DriverManager.getConnection(url, usr, pwd); multiConn.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 stop() throws Exception {if(mainThread != null)mainThread.interrupt();} }