diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index 76aaeb65..8f4e5866 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ +/hal.db /build/ /lib/Zutil.jar diff --git a/hal-default.db b/hal-default.db new file mode 100755 index 00000000..5386f2cb Binary files /dev/null and b/hal-default.db differ diff --git a/hal.db b/hal.db index c0dbc7cd..1ef1a54d 100755 Binary files a/hal.db and b/hal.db differ diff --git a/src/se/koc/hal/HalContext.java b/src/se/koc/hal/HalContext.java index ae9aa799..6259d59b 100755 --- a/src/se/koc/hal/HalContext.java +++ b/src/se/koc/hal/HalContext.java @@ -10,8 +10,8 @@ public class HalContext { private static final String CONF_FILE = "hal.conf"; // Variables - public static DBConnection db; - + private static DBConnection db; + public static Properties conf; private static Properties defaultConf; @@ -39,4 +39,9 @@ public class HalContext { throw new RuntimeException(e); } } + + + public static DBConnection getDB(){ + return db; + } } diff --git a/src/se/koc/hal/deamon/DataAggregatorDaemon.java b/src/se/koc/hal/deamon/DataAggregatorDaemon.java index f5b1bac3..db18b9f7 100755 --- a/src/se/koc/hal/deamon/DataAggregatorDaemon.java +++ b/src/se/koc/hal/deamon/DataAggregatorDaemon.java @@ -37,7 +37,7 @@ public class DataAggregatorDaemon extends TimerTask implements HalDaemon { @Override public void run(){ try { - List sensorList = Sensor.getLocalSensors(HalContext.db); + List sensorList = Sensor.getLocalSensors(HalContext.getDB()); for(Sensor sensor : sensorList){ logger.fine("Aggregating sensor_id: " + sensor.getId()); aggregateSensor(sensor.getId()); @@ -48,7 +48,7 @@ public class DataAggregatorDaemon extends TimerTask implements HalDaemon { } public void aggregateSensor(long sensorId) { - DBConnection db = HalContext.db; + DBConnection db = HalContext.getDB(); try { Long maxDBTimestamp = db.exec("SELECT MAX(timestamp_end) FROM sensor_data_aggr WHERE sensor_id == "+sensorId, new SimpleSQLHandler()); if(maxDBTimestamp == null) @@ -124,7 +124,7 @@ public class DataAggregatorDaemon extends TimerTask implements HalDaemon { if(currentPeriodTimestamp != 0 && periodTimestamp != currentPeriodTimestamp){ float confidence = Math.min(count / 5f, 1.0f); logger.finer("Calculated minute period: "+ currentPeriodTimestamp +" sum: "+ sum +" confidence: "+ confidence); - HalContext.db.exec(String.format(Locale.US, "INSERT INTO sensor_data_aggr(sensor_id, sequence_id, timestamp_start, timestamp_end, data, confidence) VALUES(%d, %d, %d, %d, %d, %f)", + HalContext.getDB().exec(String.format(Locale.US, "INSERT INTO sensor_data_aggr(sensor_id, sequence_id, timestamp_start, timestamp_end, data, confidence) VALUES(%d, %d, %d, %d, %d, %f)", result.getInt("sensor_id"), Sensor.getHighestSequenceId(result.getInt("sensor_id")) + 1, currentPeriodTimestamp, @@ -156,7 +156,7 @@ public class DataAggregatorDaemon extends TimerTask implements HalDaemon { if(currentPeriodTimestamp != 0 && periodTimestamp != currentPeriodTimestamp){ float aggrConfidence = confidenceSum / 12f; logger.finer("Calculated hour period: "+ currentPeriodTimestamp +" sum: "+ sum +" confidence: "+ aggrConfidence); - HalContext.db.exec(String.format(Locale.US, "INSERT INTO sensor_data_aggr(sensor_id, sequence_id, timestamp_start, timestamp_end, data, confidence) VALUES(%d, %d, %d, %d, %d, %f)", + HalContext.getDB().exec(String.format(Locale.US, "INSERT INTO sensor_data_aggr(sensor_id, sequence_id, timestamp_start, timestamp_end, data, confidence) VALUES(%d, %d, %d, %d, %d, %f)", result.getInt("sensor_id"), Sensor.getHighestSequenceId(result.getInt("sensor_id")) + 1, currentPeriodTimestamp, @@ -173,7 +173,7 @@ public class DataAggregatorDaemon extends TimerTask implements HalDaemon { confidenceSum += result.getFloat("confidence"); //TODO: SHould not be here! - HalContext.db.exec("DELETE FROM sensor_data_aggr " + HalContext.getDB().exec("DELETE FROM sensor_data_aggr " + "WHERE sensor_id == "+ result.getInt("sensor_id") +" AND sequence_id == "+ result.getInt("sequence_id")); } return null; @@ -193,7 +193,7 @@ public class DataAggregatorDaemon extends TimerTask implements HalDaemon { if(currentPeriodTimestamp != 0 && periodTimestamp != currentPeriodTimestamp){ float aggrConfidence = confidenceSum / 24f; logger.finer("Calculated day period: "+ currentPeriodTimestamp +" sum: "+ sum +" confidence: "+ aggrConfidence+ " samples: " + samples); - HalContext.db.exec(String.format(Locale.US, "INSERT INTO sensor_data_aggr(sensor_id, sequence_id, timestamp_start, timestamp_end, data, confidence) VALUES(%d, %d, %d, %d, %d, %f)", + HalContext.getDB().exec(String.format(Locale.US, "INSERT INTO sensor_data_aggr(sensor_id, sequence_id, timestamp_start, timestamp_end, data, confidence) VALUES(%d, %d, %d, %d, %d, %f)", result.getInt("sensor_id"), Sensor.getHighestSequenceId(result.getInt("sensor_id")) + 1, currentPeriodTimestamp, @@ -212,7 +212,7 @@ public class DataAggregatorDaemon extends TimerTask implements HalDaemon { samples++; //TODO: SHould not be here! - HalContext.db.exec("DELETE FROM sensor_data_aggr " + HalContext.getDB().exec("DELETE FROM sensor_data_aggr " + "WHERE sensor_id == "+ result.getInt("sensor_id") +" AND sequence_id == "+ result.getInt("sequence_id")); } return null; diff --git a/src/se/koc/hal/deamon/DataSynchronizationClient.java b/src/se/koc/hal/deamon/DataSynchronizationClient.java index 0bc60907..13db31d2 100755 --- a/src/se/koc/hal/deamon/DataSynchronizationClient.java +++ b/src/se/koc/hal/deamon/DataSynchronizationClient.java @@ -34,7 +34,7 @@ public class DataSynchronizationClient extends TimerTask implements HalDaemon{ @Override public void run() { try { - DBConnection db = HalContext.db; + DBConnection db = HalContext.getDB(); List users = User.getExternalUsers(db); for(User user : users){ if(user.getHostname() == null){ diff --git a/src/se/koc/hal/deamon/DataSynchronizationDaemon.java b/src/se/koc/hal/deamon/DataSynchronizationDaemon.java index 538d70b2..1cadd510 100755 --- a/src/se/koc/hal/deamon/DataSynchronizationDaemon.java +++ b/src/se/koc/hal/deamon/DataSynchronizationDaemon.java @@ -67,7 +67,7 @@ public class DataSynchronizationDaemon extends ThreadedTCPNetworkServer implemen if(obj instanceof PeerDataReqDTO){ PeerDataReqDTO req = (PeerDataReqDTO) obj; - SensorDataListDTO list = HalContext.db.exec("SELECT * FROM sensor_data_aggr WHERE sensor_id == "+ req.sensorId +" AND sequence_id > "+ req.offsetSequenceId, + SensorDataListDTO list = HalContext.getDB().exec("SELECT * FROM sensor_data_aggr WHERE sensor_id == "+ req.sensorId +" AND sequence_id > "+ req.offsetSequenceId, new SQLResultHandler() { @Override public SensorDataListDTO handleQueryResult(Statement stmt, ResultSet result) throws SQLException { diff --git a/src/se/koc/hal/page/PCConfigureHttpPage.java b/src/se/koc/hal/page/PCConfigureHttpPage.java index 95cc150a..4342d558 100755 --- a/src/se/koc/hal/page/PCConfigureHttpPage.java +++ b/src/se/koc/hal/page/PCConfigureHttpPage.java @@ -22,7 +22,7 @@ public class PCConfigureHttpPage implements HttpPage { Map request) throws IOException { try { - DBConnection db = HalContext.db; + DBConnection db = HalContext.getDB(); Templator tmpl = new Templator(FileUtil.find("web-resource/configure.html")); tmpl.set("user", User.getLocalUser(db)); diff --git a/src/se/koc/hal/page/PCOverviewHttpPage.java b/src/se/koc/hal/page/PCOverviewHttpPage.java old mode 100644 new mode 100755 index cdce1caa..aa49814a --- a/src/se/koc/hal/page/PCOverviewHttpPage.java +++ b/src/se/koc/hal/page/PCOverviewHttpPage.java @@ -9,6 +9,7 @@ import java.util.Map; import se.koc.hal.HalContext; import se.koc.hal.deamon.DataAggregatorDaemon; +import zutil.db.DBConnection; import zutil.db.SQLResultHandler; import zutil.io.file.FileUtil; import zutil.net.http.HttpHeaderParser; @@ -22,7 +23,8 @@ public class PCOverviewHttpPage implements HttpPage { public void respond(HttpPrintStream out, HttpHeaderParser client_info, Map session, Map cookie, Map request) throws IOException { try { - ArrayList minDataList = HalContext.db.exec( + DBConnection db = HalContext.getDB(); + ArrayList minDataList = db.exec( "SELECT user.username as username, " + "sensor_data_aggr.timestamp_start as timestamp_start, " + "sensor_data_aggr.timestamp_end as timestamp_end , " @@ -36,7 +38,7 @@ public class PCOverviewHttpPage implements HttpPage { + "AND timestamp_start > " + (System.currentTimeMillis() - DataAggregatorDaemon.DAY_IN_MS) + "ORDER BY timestamp_start ASC", new SQLPowerDataBuilder()); - ArrayList hourDataList = HalContext.db.exec( + ArrayList hourDataList = db.exec( "SELECT user.username as username, " + "sensor_data_aggr.timestamp_start as timestamp_start, " + "sensor_data_aggr.timestamp_end as timestamp_end , " @@ -48,9 +50,9 @@ public class PCOverviewHttpPage implements HttpPage { + "AND user.id = sensor.user_id " + "AND timestamp_end-timestamp_start == " + (DataAggregatorDaemon.HOUR_IN_MS-1) + "AND timestamp_start > " + (System.currentTimeMillis() - 3*DataAggregatorDaemon.DAY_IN_MS) - + "ORDER BY timestamp_start ASC", + + "ORDER BY timestamp_start ASC", new SQLPowerDataBuilder()); - ArrayList dayDataList = HalContext.db.exec( + ArrayList dayDataList = db.exec( "SELECT user.username as username, " + "sensor_data_aggr.timestamp_start as timestamp_start, " + "sensor_data_aggr.timestamp_end as timestamp_end , " diff --git a/src/se/koc/hal/struct/Sensor.java b/src/se/koc/hal/struct/Sensor.java index c7d52c75..3fda7f9c 100755 --- a/src/se/koc/hal/struct/Sensor.java +++ b/src/se/koc/hal/struct/Sensor.java @@ -39,7 +39,7 @@ public class Sensor extends DBBean{ public static long getHighestSequenceId(long sensorId) throws SQLException{ - Integer id = HalContext.db.exec("SELECT MAX(sequence_id) FROM sensor_data_aggr WHERE sensor_id == "+ sensorId, new SimpleSQLHandler()); + Integer id = HalContext.getDB().exec("SELECT MAX(sequence_id) FROM sensor_data_aggr WHERE sensor_id == "+ sensorId, new SimpleSQLHandler()); return (id != null ? id+1 : 1); }