diff --git a/src/org/hwo/pulscounter/PulsCounterApplication.java b/src/org/hwo/pulscounter/PulsCounterApplication.java index 58ae005..db702ba 100644 --- a/src/org/hwo/pulscounter/PulsCounterApplication.java +++ b/src/org/hwo/pulscounter/PulsCounterApplication.java @@ -31,6 +31,7 @@ import org.hwo.io.NewSerialPort.NewSerialPort; import org.hwo.platform.Platform; import org.hwo.servicelink.ServiceLink; import org.hwo.servicelink.ServiceLinkListener; +import org.hwo.pulscounter.db.PulsCounterDatabase; import org.hwo.pulscounter.device.IDeviceConnector; import org.hwo.pulscounter.device.ServiceLinkDeviceConnector; import org.hwo.pulscounter.device.SimulatedCounter; @@ -66,6 +67,7 @@ public class PulsCounterApplication implements ServiceLinkListener{ interfaceClasses; private List interfaces; + private PulsCounterDatabase database; @@ -267,6 +269,10 @@ public class PulsCounterApplication implements ServiceLinkListener{ Class clazz = getInterfaceClass(applicationConfiguration.getProperty(String.format("interfaces.%d.class",n))); addInterface(clazz, applicationConfiguration.getProperty(String.format("interfaces.%d.settings",n))); } + + database = new PulsCounterDatabase(); + log(INFO,"Database Schema Version: %s", database.getSchemaVersion()); + } @@ -280,6 +286,9 @@ public class PulsCounterApplication implements ServiceLinkListener{ frame.dispose(); } + database.close(); + + if (shouldSaveConfiguration){ applicationConfiguration.setProperty("interfaces.n", Integer.toString(interfaces.size())); @@ -389,7 +398,9 @@ public class PulsCounterApplication implements ServiceLinkListener{ } } - + public PulsCounterDatabase getDatabase() { + return database; + } /* ToDO: Upgrade the old stuff ... */ diff --git a/src/org/hwo/pulscounter/db/PulsCounterDatabase.java b/src/org/hwo/pulscounter/db/PulsCounterDatabase.java new file mode 100644 index 0000000..0cde638 --- /dev/null +++ b/src/org/hwo/pulscounter/db/PulsCounterDatabase.java @@ -0,0 +1,101 @@ +package org.hwo.pulscounter.db; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.hwo.pulscounter.SnapShot; + +import static org.hwo.logging.Logging.*; +import static org.hwo.logging.LogLevel.*; + +public class PulsCounterDatabase { + + private Connection dbConnection; + + public PulsCounterDatabase(){ + + try { + getClass().getClassLoader().loadClass("org.hsqldb.jdbcDriver"); + dbConnection = DriverManager.getConnection("jdbc:hsqldb:file:synololog-hsql", "SA", ""); + + + + } catch (SQLException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + log(ERROR,"HyperSQL Driver could not be loaded. [%s]",e.toString()); + } + + } + + public void close(){ + try { + dbConnection.close(); + } catch (SQLException e) { + log(ERROR,"Exception while closing database: %s",e.toString()); + } + } + + private ResultSet executeSimpleSQL(String query,Object... args){ + + try { + PreparedStatement stmt = dbConnection.prepareStatement(query); + + for (int i=0;i