added null points in charts

Former-commit-id: 5d9a57b107ed55133634aa7549b57efe30ba5e2e
This commit is contained in:
Daniel Collin 2015-12-07 17:55:18 +01:00
parent 5f28b017f7
commit 46728b4768
5 changed files with 54 additions and 19 deletions

View file

@ -23,25 +23,45 @@ public class PCOverviewHttpPage implements HttpPage {
try {
ArrayList<PowerData> 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<PowerData> 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<PowerData> 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<PowerData> handleQueryResult(Statement stmt, ResultSet result) throws SQLException {
ArrayList<PowerData> 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;
}