From 1526e58b063c6f1157562a3186d7620cc7926cfe Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Tue, 16 Aug 2016 16:12:44 +0200 Subject: [PATCH] Preparations for a major refactoring --- src/se/hal/ControllerManager.java | 49 +++++++++---------- .../deamon/PCDataSynchronizationClient.java | 2 +- .../deamon/PCDataSynchronizationDaemon.java | 2 +- .../deamon/SensorDataAggregatorDaemon.java | 6 +-- src/se/hal/page/EventConfigHttpPage.java | 5 +- src/se/hal/page/EventOverviewHttpPage.java | 3 +- src/se/hal/page/MapHttpPage.java | 5 +- src/se/hal/page/PCOverviewHttpPage.java | 5 +- src/se/hal/page/SensorConfigHttpPage.java | 5 +- src/se/hal/struct/AbstractDevice.java | 36 +++++++------- src/se/hal/struct/Event.java | 2 +- src/se/hal/struct/Sensor.java | 2 +- .../hal/util/AggregateDataListSqlResult.java | 6 +-- 13 files changed, 62 insertions(+), 66 deletions(-) diff --git a/src/se/hal/ControllerManager.java b/src/se/hal/ControllerManager.java index 2c06f40f..3ffa307f 100755 --- a/src/se/hal/ControllerManager.java +++ b/src/se/hal/ControllerManager.java @@ -5,7 +5,6 @@ import se.hal.struct.Event; import se.hal.struct.Sensor; import zutil.db.DBConnection; import zutil.log.LogUtil; -import zutil.plugin.PluginData; import zutil.plugin.PluginManager; import zutil.ui.Configurator; import zutil.ui.Configurator.PostConfigurationActionListener; @@ -57,27 +56,27 @@ public class ControllerManager implements HalSensorReportListener, /////////////////////////////// SENSORS /////////////////////////////////// public void register(Sensor sensor) { - if(sensor.getDeviceData() == null) { + if(sensor.getDeviceConfig() == null) { logger.warning("Sensor data is null: "+ sensor); return; } - if(!availableSensors.contains(sensor.getDeviceData().getClass())) { - logger.warning("Sensor data plugin not available: "+ sensor.getDeviceData().getClass()); + if(!availableSensors.contains(sensor.getDeviceConfig().getClass())) { + logger.warning("Sensor data plugin not available: "+ sensor.getDeviceConfig().getClass()); return; } - logger.info("Registering new sensor(id: "+ sensor.getId() +"): "+ sensor.getDeviceData().getClass()); + logger.info("Registering new sensor(id: "+ sensor.getId() +"): "+ sensor.getDeviceConfig().getClass()); Class c = sensor.getController(); HalSensorController controller = getControllerInstance(c); if(controller != null) - controller.register(sensor.getDeviceData()); + controller.register(sensor.getDeviceConfig()); registeredSensors.add(sensor); - detectedSensors.remove(findSensor(sensor.getDeviceData(), detectedSensors)); // Remove if this device was detected + detectedSensors.remove(findSensor(sensor.getDeviceConfig(), detectedSensors)); // Remove if this device was detected } public void deregister(Sensor sensor){ - if(sensor.getDeviceData() == null) { + if(sensor.getDeviceConfig() == null) { logger.warning("Sensor data is null: "+ sensor); return; } @@ -85,8 +84,8 @@ public class ControllerManager implements HalSensorReportListener, Class c = sensor.getController(); HalSensorController controller = (HalSensorController) controllerMap.get(c);; if (controller != null) { - logger.info("Deregistering sensor(id: "+ sensor.getId() +"): "+ sensor.getDeviceData().getClass()); - controller.deregister(sensor.getDeviceData()); + logger.info("Deregistering sensor(id: "+ sensor.getId() +"): "+ sensor.getDeviceConfig().getClass()); + controller.deregister(sensor.getDeviceConfig()); registeredSensors.remove(sensor); removeControllerIfEmpty(controller); } else { @@ -126,7 +125,7 @@ public class ControllerManager implements HalSensorReportListener, detectedSensors.add(sensor); } } - sensor.setDeviceData(sensorData); // Set the latest data + sensor.setDeviceConfig(sensorData); // Set the latest data }catch (SQLException e){ logger.log(Level.WARNING, "Unable to store sensor report", e); @@ -136,7 +135,7 @@ public class ControllerManager implements HalSensorReportListener, private static Sensor findSensor(HalSensorData sensorData, List list){ for (int i=0; i c = event.getController(); HalEventController controller = getControllerInstance(c); if(controller != null) - controller.register(event.getDeviceData()); + controller.register(event.getDeviceConfig()); registeredEvents.add(event); - detectedEvents.remove(findEvent(event.getDeviceData(), detectedEvents)); // Remove if this device was detected + detectedEvents.remove(findEvent(event.getDeviceConfig(), detectedEvents)); // Remove if this device was detected } public void deregister(Event event){ - if(event.getDeviceData() == null) { + if(event.getDeviceConfig() == null) { logger.warning("Event data is null: "+ event); return; } @@ -174,8 +173,8 @@ public class ControllerManager implements HalSensorReportListener, Class c = event.getController(); HalEventController controller = (HalEventController) controllerMap.get(c); if (controller != null) { - logger.info("Deregistering event(id: "+ event.getId() +"): "+ event.getDeviceData().getClass()); - controller.deregister(event.getDeviceData()); + logger.info("Deregistering event(id: "+ event.getId() +"): "+ event.getDeviceConfig().getClass()); + controller.deregister(event.getDeviceConfig()); registeredEvents.remove(event); removeControllerIfEmpty(controller); } else { @@ -215,7 +214,7 @@ public class ControllerManager implements HalSensorReportListener, detectedEvents.add(event); } } - event.setDeviceData(eventData); // Set the latest data + event.setDeviceConfig(eventData); // Set the latest data }catch (SQLException e){ logger.log(Level.WARNING, "Unable to store event report", e); @@ -225,7 +224,7 @@ public class ControllerManager implements HalSensorReportListener, private static Event findEvent(HalEventData eventData, List list){ for (int i=0; i getSensorList(DBConnection db) throws SQLException { List sensors = new ArrayList<>(); for (Sensor sensor : Sensor.getSensors(db)) { - if (sensor.getDeviceData() != null && - sensor.getDeviceData() instanceof PowerConsumptionSensorData) + if (sensor.getDeviceConfig() != null && + sensor.getDeviceConfig() instanceof PowerConsumptionSensorData) sensors.add(sensor); } return sensors; diff --git a/src/se/hal/page/SensorConfigHttpPage.java b/src/se/hal/page/SensorConfigHttpPage.java index 310e3ef6..048e6c45 100755 --- a/src/se/hal/page/SensorConfigHttpPage.java +++ b/src/se/hal/page/SensorConfigHttpPage.java @@ -7,7 +7,6 @@ import se.hal.struct.Sensor; import se.hal.struct.User; import zutil.db.DBConnection; import zutil.io.file.FileUtil; -import zutil.net.http.HttpHeader; import zutil.parser.Templator; import zutil.ui.Configurator; import zutil.ui.Configurator.ConfigurationParam; @@ -62,7 +61,7 @@ public class SensorConfigHttpPage extends HalHttpPage { sensor.setType(request.get("type")); sensor.setSynced(Boolean.parseBoolean(request.get("sync"))); sensor.setUser(localUser); - sensor.getDeviceConfig().setValues(request).applyConfiguration(); + sensor.getDeviceConfigurator().setValues(request).applyConfiguration(); sensor.save(db); ControllerManager.getInstance().register(sensor); break; @@ -72,7 +71,7 @@ public class SensorConfigHttpPage extends HalHttpPage { sensor.setName(request.get("name")); sensor.setType(request.get("type")); sensor.setSynced(Boolean.parseBoolean(request.get("sync"))); - sensor.getDeviceConfig().setValues(request).applyConfiguration(); + sensor.getDeviceConfigurator().setValues(request).applyConfiguration(); sensor.save(db); } break; diff --git a/src/se/hal/struct/AbstractDevice.java b/src/se/hal/struct/AbstractDevice.java index 87489ea0..53614ed7 100755 --- a/src/se/hal/struct/AbstractDevice.java +++ b/src/se/hal/struct/AbstractDevice.java @@ -13,7 +13,7 @@ import java.util.logging.Level; import java.util.logging.Logger; /** - * Created by ezivkoc on 2016-01-15. + * Created by Ziver on 2016-01-15. */ public abstract class AbstractDevice extends DBBean { private static final Logger logger = LogUtil.getLogger(); @@ -21,10 +21,12 @@ public abstract class AbstractDevice extends DBBean { // Sensor specific data private String name; private String type; - private String config; // only used to store the deviceData configuration in DB + private String config; // only used to store the deviceConfig configuration in DB - // Sensor specific data - private transient T deviceData; + /** Sensor specific configuration **/ + private transient T deviceConfig; + /** latest device data received **/ + private transient Object latestDeviceData; // User configuration @DBColumn("user_id") @@ -38,8 +40,8 @@ public abstract class AbstractDevice extends DBBean { - public Configurator getDeviceConfig() { - T obj = getDeviceData(); + public Configurator getDeviceConfigurator() { + T obj = getDeviceConfig(); if (obj != null) { Configurator configurator = new Configurator<>(obj); configurator.setPreConfigurationListener(ControllerManager.getInstance()); @@ -48,18 +50,18 @@ public abstract class AbstractDevice extends DBBean { } return null; } - public T getDeviceData() { - if (deviceData == null || !deviceData.getClass().getName().equals(type)) { + public T getDeviceConfig() { + if (deviceConfig == null || !deviceConfig.getClass().getName().equals(type)) { try { Class c = Class.forName(type); - deviceData = (T) c.newInstance(); + deviceConfig = (T) c.newInstance(); applyConfig(); } catch (Exception e) { logger.log(Level.SEVERE, "Unable instantiate DeviceData: "+type, e); } } - return deviceData; + return deviceConfig; } /** @@ -67,20 +69,20 @@ public abstract class AbstractDevice extends DBBean { * And the current config will be applied on the new DeviceData. * DeviceData will be reset if the input is set as null. */ - public void setDeviceData(T data) { + public void setDeviceConfig(T data) { if(data != null) { - deviceData = data; + deviceConfig = data; type = data.getClass().getName(); applyConfig(); // TODO: this is a bit clunky, should probably be solved in another way } else { - deviceData = null; + deviceConfig = null; type = null; config = null; } } public void save(DBConnection db) throws SQLException { - if (deviceData != null) + if (deviceConfig != null) updateConfigString(); else this.config = null; @@ -91,7 +93,7 @@ public abstract class AbstractDevice extends DBBean { * Will update the config String that will be stored in DB. */ protected void updateConfigString() { - Configurator configurator = getDeviceConfig(); + Configurator configurator = getDeviceConfigurator(); this.config = JSONWriter.toString(configurator.getValuesAsNode()); } /** @@ -100,7 +102,7 @@ public abstract class AbstractDevice extends DBBean { */ protected void applyConfig(){ if (config != null && !config.isEmpty()) { - Configurator configurator = getDeviceConfig(); + Configurator configurator = getDeviceConfigurator(); configurator.setValues(JSONParser.read(config)); configurator.applyConfiguration(); } @@ -131,7 +133,7 @@ public abstract class AbstractDevice extends DBBean { if (this.type == null || !this.type.equals(type)) { this.type = type; this.config = null; - this.deviceData = null; // invalidate current sensor data object + this.deviceConfig = null; // invalidate current sensor data object } } diff --git a/src/se/hal/struct/Event.java b/src/se/hal/struct/Event.java index b9fff55b..2d25bf98 100755 --- a/src/se/hal/struct/Event.java +++ b/src/se/hal/struct/Event.java @@ -32,6 +32,6 @@ public class Event extends AbstractDevice{ public Class getController(){ - return getDeviceData().getEventController(); + return getDeviceConfig().getEventController(); } } diff --git a/src/se/hal/struct/Sensor.java b/src/se/hal/struct/Sensor.java index d96f1117..45fb6de8 100755 --- a/src/se/hal/struct/Sensor.java +++ b/src/se/hal/struct/Sensor.java @@ -108,6 +108,6 @@ public class Sensor extends AbstractDevice{ public Class getController(){ - return getDeviceData().getSensorController(); + return getDeviceConfig().getSensorController(); } } diff --git a/src/se/hal/util/AggregateDataListSqlResult.java b/src/se/hal/util/AggregateDataListSqlResult.java index f8775551..c6ff5b6b 100755 --- a/src/se/hal/util/AggregateDataListSqlResult.java +++ b/src/se/hal/util/AggregateDataListSqlResult.java @@ -83,13 +83,13 @@ public class AggregateDataListSqlResult implements SQLResultHandler 0 || // Only add nulls if space between aggr is larger than sensor report interval - shortInterval && distance > sensor.getDeviceData().getDataInterval()) + shortInterval && distance > sensor.getDeviceConfig().getDataInterval()) list.add(new AggregateData(id, previousTimestampEnd + 1, null /*Float.NaN*/, username)); }