diff --git a/.classpath b/.classpath
index d213a787..0a070b52 100644
--- a/.classpath
+++ b/.classpath
@@ -18,7 +18,6 @@
-
diff --git a/.gitignore b/.gitignore
index 84c048a7..76aaeb65 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/build/
+/lib/Zutil.jar
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 983eddac..00000000
--- a/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-eclipse.preferences.version=1
-encoding//lib/sphinx4-5prealpha-src/sphinx4-core/src/main/java=UTF-8
-encoding//lib/sphinx4-5prealpha-src/sphinx4-core/src/main/java/edu/cmu/sphinx/alignment/SimpleTokenizer.java=UTF-8
diff --git a/src/se/koc/hal/page/PCOverviewHttpPage.java b/src/se/koc/hal/page/PCOverviewHttpPage.java
index 7b231c78..cdce1caa 100644
--- a/src/se/koc/hal/page/PCOverviewHttpPage.java
+++ b/src/se/koc/hal/page/PCOverviewHttpPage.java
@@ -23,25 +23,45 @@ public class PCOverviewHttpPage implements HttpPage {
try {
ArrayList minDataList = HalContext.db.exec(
- "SELECT user.username as username, sensor_data_aggr.timestamp_start as timestamp, sensor_data_aggr.data as data "
+ "SELECT user.username as username, "
+ + "sensor_data_aggr.timestamp_start as timestamp_start, "
+ + "sensor_data_aggr.timestamp_end as timestamp_end , "
+ + "sensor_data_aggr.data as data, "
+ + "sensor_data_aggr.confidence as confidence, "
+ + DataAggregatorDaemon.FIVE_MINUTES_IN_MS + " as period_length"
+ "FROM sensor_data_aggr, user, sensor "
+ "WHERE sensor.id = sensor_data_aggr.sensor_id "
- + "AND user.id = sensor.user_id "
- + "AND timestamp_end-timestamp_start == " + (DataAggregatorDaemon.FIVE_MINUTES_IN_MS-1),
+ + "AND user.id = sensor.user_id "
+ + "AND timestamp_end-timestamp_start == " + (DataAggregatorDaemon.FIVE_MINUTES_IN_MS-1)
+ + "AND timestamp_start > " + (System.currentTimeMillis() - DataAggregatorDaemon.DAY_IN_MS)
+ + "ORDER BY timestamp_start ASC",
new SQLPowerDataBuilder());
ArrayList hourDataList = HalContext.db.exec(
- "SELECT user.username as username, sensor_data_aggr.timestamp_start as timestamp, sensor_data_aggr.data as data "
+ "SELECT user.username as username, "
+ + "sensor_data_aggr.timestamp_start as timestamp_start, "
+ + "sensor_data_aggr.timestamp_end as timestamp_end , "
+ + "sensor_data_aggr.data as data, "
+ + "sensor_data_aggr.confidence as confidence, "
+ + DataAggregatorDaemon.HOUR_IN_MS + " as period_length"
+ "FROM sensor_data_aggr, user, sensor "
+ "WHERE sensor.id = sensor_data_aggr.sensor_id "
- + "AND user.id = sensor.user_id "
- + "AND timestamp_end-timestamp_start == " + (DataAggregatorDaemon.HOUR_IN_MS-1),
+ + "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",
new SQLPowerDataBuilder());
ArrayList dayDataList = HalContext.db.exec(
- "SELECT user.username as username, sensor_data_aggr.timestamp_start as timestamp, sensor_data_aggr.data as data "
+ "SELECT user.username as username, "
+ + "sensor_data_aggr.timestamp_start as timestamp_start, "
+ + "sensor_data_aggr.timestamp_end as timestamp_end , "
+ + "sensor_data_aggr.data as data, "
+ + "sensor_data_aggr.confidence as confidence, "
+ + DataAggregatorDaemon.DAY_IN_MS + " as period_length"
+ "FROM sensor_data_aggr, user, sensor "
+ "WHERE sensor.id = sensor_data_aggr.sensor_id "
- + "AND user.id = sensor.user_id "
- + "AND timestamp_end-timestamp_start == " + (DataAggregatorDaemon.DAY_IN_MS-1),
+ + "AND user.id = sensor.user_id "
+ + "AND timestamp_end-timestamp_start == " + (DataAggregatorDaemon.DAY_IN_MS-1)
+ + "ORDER BY timestamp_start ASC",
new SQLPowerDataBuilder());
@@ -60,9 +80,9 @@ public class PCOverviewHttpPage implements HttpPage {
public static class PowerData{
long timestamp;
- int data;
+ String data;
String username;
- public PowerData(long time, int data, String uname) {
+ public PowerData(long time, String data, String uname) {
this.timestamp = time;
this.data = data;
this.username = uname;
@@ -73,8 +93,26 @@ public class PCOverviewHttpPage implements HttpPage {
@Override
public ArrayList handleQueryResult(Statement stmt, ResultSet result) throws SQLException {
ArrayList list = new ArrayList<>();
+ long previousTimestampEnd = -1;
while(result.next()){
- list.add(new PowerData(result.getLong("timestamp"), result.getInt("data"), result.getString("username")));
+
+ long timestampStart = result.getLong("timestamp_start");
+ long timestampEnd = result.getLong("timestamp_end");
+ long periodLength = result.getLong("period_length");
+ int data = result.getInt("data");
+ String username = result.getString("username");
+ float confidence = result.getFloat("confidence");
+
+ //add null data point to list if one or more periods of data is missing before this
+ if(previousTimestampEnd != -1 && timestampStart-previousTimestampEnd > periodLength){
+ list.add(new PowerData(previousTimestampEnd+1, "undefined", username));
+ }
+
+ //add this data point to list
+ list.add(new PowerData(timestampStart, data/1000+"", username));
+
+ //update previous end timestamp
+ previousTimestampEnd = timestampEnd;
}
return list;
}
diff --git a/web-resource/index.html b/web-resource/index.html
index 5abbc6f9..a4393e0b 100644
--- a/web-resource/index.html
+++ b/web-resource/index.html
@@ -22,19 +22,19 @@
chartData("min-power-chart",
[
{{#minData}}
- { y: {{.timestamp}}, {{.username}}: {{.data}}/1000 },
+ { y: {{.timestamp}}, {{.username}}: {{.data}} },
{{/minData}}
{ y: Date.now() },
]
);
chartData("hour-power-chart",
[{{#hourData}}
- { y: {{.timestamp}}, {{.username}}: {{.data}}/1000 },
+ { y: {{.timestamp}}, {{.username}}: {{.data}} },
{{/hourData}}]
);
chartData("day-power-chart",
[{{#dayData}}
- { y: {{.timestamp}}, {{.username}}: {{.data}}/1000 },
+ { y: {{.timestamp}}, {{.username}}: {{.data}} },
{{/dayData}}]
);
});