From bbb9996d56a437cb8a868e2dd52eeda6d70825a8 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Thu, 4 Feb 2016 13:55:21 +0100 Subject: [PATCH] Added deletion of owned sensors when deleting a user and updated some traces. issue 17 Former-commit-id: 460f4058c97f2e48a16b7cb25fe8164d4a089061 --- .../deamon/PCDataSynchronizationClient.java | 5 ++- src/se/hal/struct/Sensor.java | 33 ++++++++++++------- src/se/hal/struct/User.java | 14 +++++++- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/se/hal/deamon/PCDataSynchronizationClient.java b/src/se/hal/deamon/PCDataSynchronizationClient.java index cc0468eb..6f86135e 100755 --- a/src/se/hal/deamon/PCDataSynchronizationClient.java +++ b/src/se/hal/deamon/PCDataSynchronizationClient.java @@ -95,10 +95,9 @@ public class PCDataSynchronizationClient implements HalDaemon { SensorDataListDTO dataList = (SensorDataListDTO) in.readObject(); if(dataList.aggregationVersion != sensor.getAggregationVersion()){ - logger.fine("The peer has modified its aggregated data in such a way that we need to reset the sync and start over on this side. oldAggregationVersion:"+sensor.getAggregationVersion()+" , newAggregationVersion:"+dataList.aggregationVersion); + logger.fine("The peer has modified its aggregated data, clearing aggregate data. oldAggregationVersion:"+sensor.getAggregationVersion()+" , newAggregationVersion:"+dataList.aggregationVersion); //clear old aggregated data for sensor - logger.finer("Deleting all aggregated data for sensor"); sensor.clearAggregatedData(db); //save new aggregationVersion @@ -118,7 +117,7 @@ public class PCDataSynchronizationClient implements HalDaemon { logger.fine("Stored " + dataList.size() + " entries for sensor " + sensor.getId() + " with offset "+ req.offsetSequenceId +" from " + user.getUsername()); } else - logger.fine("Skipped sensor " + sensor.getId()); + logger.fine("Sensor not marked for syncing, skipping sensor id: " + sensor.getId()); } out.writeObject(null); // Tell server we are disconnecting diff --git a/src/se/hal/struct/Sensor.java b/src/se/hal/struct/Sensor.java index 4f634bb8..b63d4d8a 100755 --- a/src/se/hal/struct/Sensor.java +++ b/src/se/hal/struct/Sensor.java @@ -63,7 +63,28 @@ public class Sensor extends AbstractDevice{ return (id != null ? id : 0); } - + + /** + * Will delete this Sensor and its aggregate data + * (raw data will never be deleted as a safety precaution!) + */ + @Override + public void delete(DBConnection db) throws SQLException { + clearAggregatedData(db); + super.delete(db); + } + + /** + * Will clear all aggregated data for this Sensor and increment the AggregationVersion + */ + public void clearAggregatedData(DBConnection db) throws SQLException{ + logger.fine("Clearing all aggregate data for sensor id: "+this.getId()); + PreparedStatement stmt = db.getPreparedStatement( "DELETE FROM sensor_data_aggr WHERE sensor_id == ?" ); + stmt.setLong(1, getId()); + DBConnection.exec(stmt); + aggr_version++; + } + public long getExternalId() { return external_id; @@ -85,16 +106,6 @@ public class Sensor extends AbstractDevice{ } - /** - * Will clear all aggregated data for this Sensor and increment the AggregationVersion - */ - public void clearAggregatedData(DBConnection db) throws SQLException{ - PreparedStatement stmt = db.getPreparedStatement( "DELETE FROM sensor_data_aggr WHERE sensor_id == ?" ); - stmt.setLong(1, getId()); - DBConnection.exec(stmt); - aggr_version++; - } - public Class getController(){ return getDeviceData().getSensorController(); diff --git a/src/se/hal/struct/User.java b/src/se/hal/struct/User.java index e36571d7..a711d187 100755 --- a/src/se/hal/struct/User.java +++ b/src/se/hal/struct/User.java @@ -41,7 +41,19 @@ public class User extends DBBean{ public static User getUser(DBConnection db, int id) throws SQLException { return DBBean.load(db, User.class, id); } - + + + /** + * Will delete this user and all its Sensors + */ + @Override + public void delete(DBConnection db) throws SQLException { + List sensorList = Sensor.getSensors(db, this); + for(Sensor sensor : sensorList){ + sensor.delete(db); + } + super.delete(db); + } public String getUsername() {