diff --git a/src/org/hwo/pulscounter/PulsCounterApplication.java b/src/org/hwo/pulscounter/PulsCounterApplication.java index 1c23101..4625930 100644 --- a/src/org/hwo/pulscounter/PulsCounterApplication.java +++ b/src/org/hwo/pulscounter/PulsCounterApplication.java @@ -30,6 +30,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; @@ -64,6 +65,7 @@ public class PulsCounterApplication implements ServiceLinkListener{ interfaceClasses; private List interfaces; + private PulsCounterDatabase database; @@ -248,6 +250,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()); + } @@ -261,6 +267,9 @@ public class PulsCounterApplication implements ServiceLinkListener{ frame.dispose(); } + database.close(); + + if (shouldSaveConfiguration){ applicationConfiguration.setProperty("interfaces.n", Integer.toString(interfaces.size())); @@ -370,7 +379,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