From 52e70d06fef6b5b1bf262bc7fb8b1267766542b8 Mon Sep 17 00:00:00 2001 From: maxlein Date: Sun, 25 Jun 2017 21:33:22 +0200 Subject: [PATCH] removing items if not valid --- src/main/java/home/FileHelper.java | 7 +++---- src/main/java/home/IFSensorData.java | 11 +++++++++++ src/main/java/home/ItemHandler.java | 11 ++++++++++- src/main/java/home/LocalSensorHandler.java | 9 ++++----- src/main/java/home/MqttHumiditySensorHandler.java | 7 +++---- src/main/java/home/MqttSensorHandler.java | 7 +++---- src/main/java/home/SensorItem.java | 2 +- 7 files changed, 35 insertions(+), 19 deletions(-) diff --git a/src/main/java/home/FileHelper.java b/src/main/java/home/FileHelper.java index 4a640cf..6178471 100644 --- a/src/main/java/home/FileHelper.java +++ b/src/main/java/home/FileHelper.java @@ -46,17 +46,16 @@ public static String parseFileForTemperature(File file){ e.printStackTrace(); } - list.forEach(System.out::println); + //list.forEach(System.out::println); String tempLine = list.get(0); return tempLine.substring(tempLine.lastIndexOf("t=") + 2); - } public static String getTemperatureFromDS1820SensorReading(String path, String sensorFolderStartingWith, String sensorFile){ List filteredSubDirs = FileHelper.getSubDirectories(path, sensorFolderStartingWith); - log.info("size is " + filteredSubDirs.size() + ", path: " + filteredSubDirs.get(0).getPath() + ", abs path: " + filteredSubDirs.get(0).getAbsolutePath()); + log.debug("size is " + filteredSubDirs.size() + ", path: " + filteredSubDirs.get(0).getPath() + ", abs path: " + filteredSubDirs.get(0).getAbsolutePath()); List files = FileHelper.getFilesWithName(filteredSubDirs.get(0).getPath(), sensorFile); - log.info("files: " + files.size() + ", file: " + files.get(0).getName()); + log.debug("files: " + files.size() + ", file: " + files.get(0).getName()); return FileHelper.parseFileForTemperature(files.get(0)); } diff --git a/src/main/java/home/IFSensorData.java b/src/main/java/home/IFSensorData.java index ffc65db..977e261 100644 --- a/src/main/java/home/IFSensorData.java +++ b/src/main/java/home/IFSensorData.java @@ -11,4 +11,15 @@ public abstract class IFSensorData { protected Map sensorItems = new HashMap<>(); Map getItems(){return sensorItems;}; + + public void removeItem(String itemName){ + sensorItems.remove(itemName); + } + + protected void addItemIfAbsent(SensorItem item) { + String id = item.item.getName(); + if (!sensorItems.containsKey(id)) { + sensorItems.put(id, item); + } + } } diff --git a/src/main/java/home/ItemHandler.java b/src/main/java/home/ItemHandler.java index 9b22338..842c61d 100644 --- a/src/main/java/home/ItemHandler.java +++ b/src/main/java/home/ItemHandler.java @@ -68,6 +68,15 @@ private void updateRestItem(SensorItem sensorItem){ restHandler.updateItemState(sensorItem.item); return; } - log.info(sensorItem.item.getName() + " is not valid!"); + else { + log.debug(sensorItem.item.getName() + " is not valid! Deleting item"); + removeItem(sensorItem); + } + } + + private void removeItem(SensorItem sensorItem) { + for (IFSensorData sensorData : ifSensorData) { + sensorData.removeItem(sensorItem.item.getName()); + } } } diff --git a/src/main/java/home/LocalSensorHandler.java b/src/main/java/home/LocalSensorHandler.java index 44fe4b2..05f0c3c 100644 --- a/src/main/java/home/LocalSensorHandler.java +++ b/src/main/java/home/LocalSensorHandler.java @@ -38,10 +38,9 @@ private void updateSensorData(){ return; } - String id = roomName+temperature; - if (!sensorItems.containsKey(id)) { - sensorItems.put(id, SensorItem.createTemperatureSensorItem(roomName)); - } + SensorItem item = SensorItem.createTemperatureSensorItem(roomName); + String id = item.item.getName(); + addItemIfAbsent(item); SensorItem sensorItem = sensorItems.get(id); sensorItems.get(id).item.setState(temperature); @@ -60,7 +59,7 @@ private String getTemperature(){ Integer temp = Integer.parseInt(temperature); Double temp_conv = temp / 1000.0; temperature = String.valueOf(temp_conv); - log.info(temperature + ", int: " + temp + ", double: " + temp_conv); + log.debug(temperature + ", int: " + temp + ", double: " + temp_conv); return temperature;} catch (Exception e){ log.error("getTemperature(): Exception=" + e.getMessage()); diff --git a/src/main/java/home/MqttHumiditySensorHandler.java b/src/main/java/home/MqttHumiditySensorHandler.java index af27e76..ab49f74 100644 --- a/src/main/java/home/MqttHumiditySensorHandler.java +++ b/src/main/java/home/MqttHumiditySensorHandler.java @@ -15,10 +15,9 @@ public class MqttHumiditySensorHandler extends IFSensorData { public void addHumidityReading(String location, String humidity){ - String id = location+humidity; - if (!sensorItems.containsKey(id)) { - sensorItems.put(id, SensorItem.createHumiditySensorItem(location)); - } + SensorItem item = SensorItem.createHumiditySensorItem(location); + String id = item.item.getName(); + addItemIfAbsent(item); SensorItem sensorItem = sensorItems.get(id); sensorItems.get(id).item.setState(humidity); diff --git a/src/main/java/home/MqttSensorHandler.java b/src/main/java/home/MqttSensorHandler.java index fe875af..79b8c22 100644 --- a/src/main/java/home/MqttSensorHandler.java +++ b/src/main/java/home/MqttSensorHandler.java @@ -16,10 +16,9 @@ public class MqttSensorHandler extends IFSensorData { public void addTemperatureReading(String location, String temperature){ - String id = location+temperature; - if (!sensorItems.containsKey(id)) { - sensorItems.put(id, SensorItem.createTemperatureSensorItem(location)); - } + SensorItem item = SensorItem.createTemperatureSensorItem(location); + String id = item.item.getName(); + addItemIfAbsent(item); SensorItem sensorItem = sensorItems.get(id); sensorItems.get(id).item.setState(temperature); diff --git a/src/main/java/home/SensorItem.java b/src/main/java/home/SensorItem.java index 38bbc0f..ea55a2a 100644 --- a/src/main/java/home/SensorItem.java +++ b/src/main/java/home/SensorItem.java @@ -31,7 +31,7 @@ public static SensorItem createHumiditySensorItem(String location){ public boolean isValid() { long age = (System.currentTimeMillis() - lastUpdateTime)/1000; - log.info("age of sensor is " + age + ", timeout: " + sensorValidTimeout); + log.debug("age of sensor is " + age + ", timeout: " + sensorValidTimeout); return age < sensorValidTimeout; } }