From 46728b47682402c5ec797e99ae0e2559a9410032 Mon Sep 17 00:00:00 2001 From: Daniel Collin Date: Mon, 7 Dec 2015 17:55:18 +0100 Subject: [PATCH] added null points in charts Former-commit-id: 5d9a57b107ed55133634aa7549b57efe30ba5e2e --- .classpath | 1 - .gitignore | 1 + .settings/org.eclipse.core.resources.prefs | 3 - src/se/koc/hal/page/PCOverviewHttpPage.java | 62 +++++++++++++++++---- web-resource/index.html | 6 +- 5 files changed, 54 insertions(+), 19 deletions(-) delete mode 100644 .settings/org.eclipse.core.resources.prefs 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}}] ); });