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();}
}