Resolved bug where the web charts do not have any gaps when more than one sensor is printed.
Former-commit-id: bd4570203b8b0bfd9333ef23b9110654a8977ccc
This commit is contained in:
parent
42064e5209
commit
9ee2a788ce
2 changed files with 73 additions and 47 deletions
|
|
@ -3,6 +3,8 @@ package se.hal.page;
|
|||
import se.hal.HalContext;
|
||||
import se.hal.intf.HalHttpPage;
|
||||
import se.hal.util.TimeUtility;
|
||||
import se.hal.struct.Sensor;
|
||||
import se.hal.struct.User;
|
||||
import zutil.db.DBConnection;
|
||||
import zutil.db.SQLResultHandler;
|
||||
import zutil.io.file.FileUtil;
|
||||
|
|
@ -13,6 +15,7 @@ import java.sql.ResultSet;
|
|||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class PCOverviewHttpPage extends HalHttpPage {
|
||||
|
|
@ -32,6 +35,15 @@ public class PCOverviewHttpPage extends HalHttpPage {
|
|||
|
||||
DBConnection db = HalContext.getDB();
|
||||
|
||||
List<User> users = User.getAllUsers(db);
|
||||
|
||||
ArrayList<PowerData> minDataList = new ArrayList<PowerData>();
|
||||
ArrayList<PowerData> hourDataList = new ArrayList<PowerData>();
|
||||
ArrayList<PowerData> dayDataList = new ArrayList<PowerData>();
|
||||
|
||||
for(User user : users){
|
||||
List<Sensor> userSensors = Sensor.getSensors(db, user);
|
||||
for(Sensor sensor : userSensors){
|
||||
PreparedStatement stmt = db.getPreparedStatement(
|
||||
"SELECT user.username as username,"
|
||||
+ " sensor_data_aggr.timestamp_start as timestamp_start,"
|
||||
|
|
@ -41,13 +53,16 @@ public class PCOverviewHttpPage extends HalHttpPage {
|
|||
+ TimeUtility.FIVE_MINUTES_IN_MS + " as period_length"
|
||||
+ " FROM sensor_data_aggr, user, sensor"
|
||||
+ " WHERE sensor.id = sensor_data_aggr.sensor_id"
|
||||
+ " AND sensor.id = " + sensor.getId()
|
||||
+ " AND user.id = sensor.user_id"
|
||||
+ " AND user.id = " + user.getId()
|
||||
+ " AND timestamp_end-timestamp_start == ?"
|
||||
+ " AND timestamp_start > ?"
|
||||
+ " ORDER BY timestamp_start ASC");
|
||||
stmt.setLong(1, TimeUtility.FIVE_MINUTES_IN_MS-1);
|
||||
stmt.setLong(2, (System.currentTimeMillis() - TimeUtility.DAY_IN_MS) );
|
||||
ArrayList<PowerData> minDataList = DBConnection.exec(stmt , new SQLPowerDataBuilder());
|
||||
ArrayList<PowerData> userPowerData = DBConnection.exec(stmt , new SQLPowerDataBuilder());
|
||||
minDataList.addAll(userPowerData);
|
||||
|
||||
stmt = db.getPreparedStatement(
|
||||
"SELECT user.username as username,"
|
||||
|
|
@ -58,13 +73,16 @@ public class PCOverviewHttpPage extends HalHttpPage {
|
|||
+ TimeUtility.HOUR_IN_MS + " as period_length"
|
||||
+ " FROM sensor_data_aggr, user, sensor"
|
||||
+ " WHERE sensor.id = sensor_data_aggr.sensor_id"
|
||||
+ " AND sensor.id = " + sensor.getId()
|
||||
+ " AND user.id = sensor.user_id"
|
||||
+ " AND user.id = " + user.getId()
|
||||
+ " AND timestamp_end-timestamp_start == ?"
|
||||
+ " AND timestamp_start > ?"
|
||||
+ " ORDER BY timestamp_start ASC");
|
||||
stmt.setLong(1, TimeUtility.HOUR_IN_MS-1);
|
||||
stmt.setLong(2, (System.currentTimeMillis() - TimeUtility.WEEK_IN_MS) );
|
||||
ArrayList<PowerData> hourDataList = DBConnection.exec(stmt, new SQLPowerDataBuilder());
|
||||
userPowerData = DBConnection.exec(stmt, new SQLPowerDataBuilder());
|
||||
hourDataList.addAll(userPowerData);
|
||||
|
||||
stmt = db.getPreparedStatement(
|
||||
"SELECT user.username as username,"
|
||||
|
|
@ -75,11 +93,16 @@ public class PCOverviewHttpPage extends HalHttpPage {
|
|||
+ TimeUtility.DAY_IN_MS + " as period_length"
|
||||
+ " FROM sensor_data_aggr, user, sensor"
|
||||
+ " WHERE sensor.id = sensor_data_aggr.sensor_id"
|
||||
+ " AND sensor.id = " + sensor.getId()
|
||||
+ " AND user.id = sensor.user_id"
|
||||
+ " AND user.id = " + user.getId()
|
||||
+ " AND timestamp_end-timestamp_start == ?"
|
||||
+ " ORDER BY timestamp_start ASC");
|
||||
stmt.setLong(1, TimeUtility.DAY_IN_MS-1);
|
||||
ArrayList<PowerData> dayDataList = DBConnection.exec(stmt, new SQLPowerDataBuilder());
|
||||
userPowerData = DBConnection.exec(stmt, new SQLPowerDataBuilder());
|
||||
dayDataList.addAll(userPowerData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
|
||||
|
|
|
|||
|
|
@ -37,7 +37,10 @@ public class User extends DBBean{
|
|||
return DBBean.load(db, User.class, id);
|
||||
}
|
||||
|
||||
|
||||
public static List<User> getAllUsers(DBConnection db) throws SQLException{
|
||||
PreparedStatement stmt = db.getPreparedStatement( "SELECT * FROM user" );
|
||||
return DBConnection.exec(stmt, DBBeanSQLResultHandler.createList(User.class, db) );
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue