Split switch event data into multiple classes

This commit is contained in:
Ziver Koc 2021-01-02 04:25:04 +01:00
parent 4499824965
commit 6214c01157
23 changed files with 259 additions and 96 deletions

View file

@ -4,7 +4,7 @@ import se.hal.ControllerManager;
import se.hal.HalContext;
import se.hal.intf.HalWebPage;
import se.hal.struct.Event;
import se.hal.struct.devicedata.SwitchEventData;
import se.hal.struct.devicedata.OnOffEventData;
import se.hal.util.DeviceNameComparator;
import se.hal.util.HistoryDataListSqlResult;
import se.hal.util.HistoryDataListSqlResult.HistoryData;
@ -15,7 +15,6 @@ import zutil.log.LogUtil;
import zutil.parser.Templator;
import java.sql.PreparedStatement;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ -46,7 +45,7 @@ public class EventOverviewWebPage extends HalWebPage {
int id = (ObjectUtil.isEmpty(request.get("action_id")) ? -1 : Integer.parseInt(request.get("action_id")));
// change event data
SwitchEventData eventData = new SwitchEventData();
OnOffEventData eventData = new OnOffEventData();
if (request.containsKey("enabled") && "on".equals(request.get("enabled")))
eventData.turnOn();
else

View file

@ -0,0 +1,71 @@
/*
* Copyright (c) 2015 Ziver
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package se.hal.struct.devicedata;
import se.hal.intf.HalEventData;
public class AvailabilityEventData extends HalEventData {
private boolean available;
public AvailabilityEventData() { }
public AvailabilityEventData(boolean available, long timestamp) {
this.available = available;
this.setTimestamp(timestamp);
}
public void setAvailable(){
available = true;
}
public void setUnavailable(){
available = false;
}
public void toggle(){
available = !available;
}
public boolean isAvailable(){
return available;
}
@Override
public String toString(){
return available ? "Available" : "Unavailable";
}
// ----------------------------------------
// Storage methods
// ----------------------------------------
@Override
public double getData() {
return (available ? 1.0 : 0.0);
}
@Override
public void setData(double enabled) {
this.available = enabled > 0;
}
}

View file

@ -24,6 +24,7 @@ package se.hal.struct.devicedata;
import se.hal.intf.HalEventData;
public class DimmerEventData extends HalEventData {
private double dimmValue;
@ -36,6 +37,15 @@ public class DimmerEventData extends HalEventData {
}
@Override
public String toString(){
return dimmValue+"%";
}
// ----------------------------------------
// Storage methods
// ----------------------------------------
/**
* @return the dim level from 0.0 to 1.0
*/
@ -43,13 +53,9 @@ public class DimmerEventData extends HalEventData {
public double getData() {
return dimmValue;
}
@Override
public void setData(double dimmValue) {
this.dimmValue = dimmValue;
}
@Override
public String toString(){
return dimmValue+"%";
}
}

View file

@ -15,6 +15,15 @@ public class HumiditySensorData extends HalSensorData {
}
@Override
public String toString(){
return humidity+"%";
}
// ----------------------------------------
// Storage methods
// ----------------------------------------
@Override
public double getData() {
return humidity;
@ -23,9 +32,4 @@ public class HumiditySensorData extends HalSensorData {
public void setData(double humidity) {
this.humidity = humidity;
}
@Override
public String toString(){
return humidity+"%";
}
}

View file

@ -14,6 +14,15 @@ public class LightSensorData extends HalSensorData {
}
@Override
public String toString(){
return lux+" lux";
}
// ----------------------------------------
// Storage methods
// ----------------------------------------
/**
* @return the light intensity in lux
*/
@ -21,6 +30,7 @@ public class LightSensorData extends HalSensorData {
public double getData() {
return lux;
}
/**
* @param lux set the light intensity in lux
*/
@ -28,9 +38,4 @@ public class LightSensorData extends HalSensorData {
public void setData(double lux) {
this.lux = lux;
}
@Override
public String toString(){
return lux+" lux";
}
}

View file

@ -24,39 +24,49 @@ package se.hal.struct.devicedata;
import se.hal.intf.HalEventData;
public class SwitchEventData extends HalEventData {
private boolean enabled;
public class OnOffEventData extends HalEventData {
private boolean isOn;
public SwitchEventData() { }
public SwitchEventData(boolean enabled, long timestamp) {
this.enabled = enabled;
public OnOffEventData() { }
public OnOffEventData(boolean isOn, long timestamp) {
this.isOn = isOn;
this.setTimestamp(timestamp);
}
public void turnOn(){
enabled = true;
isOn = true;
}
public void turnOff(){
enabled = false;
isOn = false;
}
public void toggle(){
isOn = !isOn;
}
public boolean isOn(){
return enabled;
}
@Override
public double getData() {
return (enabled ? 1.0 : 0.0);
}
@Override
public void setData(double enabled) {
this.enabled = enabled > 0;
return isOn;
}
@Override
public String toString(){
return enabled ? "ON" : "OFF";
return isOn ? "ON" : "OFF";
}
// ----------------------------------------
// Storage methods
// ----------------------------------------
@Override
public double getData() {
return (isOn ? 1.0 : 0.0);
}
@Override
public void setData(double enabled) {
this.isOn = enabled > 0;
}
}

View file

@ -0,0 +1,71 @@
/*
* Copyright (c) 2015 Ziver
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package se.hal.struct.devicedata;
import se.hal.intf.HalEventData;
public class OpenClosedEventData extends HalEventData {
private boolean isOpen;
public OpenClosedEventData() { }
public OpenClosedEventData(boolean isOpen, long timestamp) {
this.isOpen = isOpen;
this.setTimestamp(timestamp);
}
public void open(){
isOpen = true;
}
public void close(){
isOpen = false;
}
public void toggle(){
isOpen = !isOpen;
}
public boolean isOpen(){
return isOpen;
}
@Override
public String toString(){
return isOpen ? "Open" : "Closed";
}
// ----------------------------------------
// Storage methods
// ----------------------------------------
@Override
public double getData() {
return (isOpen ? 1.0 : 0.0);
}
@Override
public void setData(double enabled) {
this.isOpen = enabled > 0;
}
}

View file

@ -2,12 +2,12 @@ package se.hal.struct.devicedata;
import se.hal.intf.HalSensorData;
public class PowerConsumptionSensorData extends HalSensorData {
private double wattHours;
public PowerConsumptionSensorData() { }
public PowerConsumptionSensorData(double wattHours, long timestamp) {
this.wattHours = wattHours;
@ -15,6 +15,15 @@ public class PowerConsumptionSensorData extends HalSensorData {
}
@Override
public String toString(){
return wattHours+" Wh";
}
// ----------------------------------------
// Storage methods
// ----------------------------------------
/**
* @return int representing Watt/Hour
*/
@ -22,13 +31,9 @@ public class PowerConsumptionSensorData extends HalSensorData {
public double getData() {
return wattHours;
}
@Override
public void setData(double wattHours){
this.wattHours = wattHours;
}
@Override
public String toString(){
return wattHours+" Wh";
}
}

View file

@ -2,6 +2,7 @@ package se.hal.struct.devicedata;
import se.hal.intf.HalSensorData;
public class TemperatureSensorData extends HalSensorData {
private double temperature;
@ -14,6 +15,15 @@ public class TemperatureSensorData extends HalSensorData {
}
@Override
public String toString(){
return temperature + " C";
}
// ----------------------------------------
// Storage methods
// ----------------------------------------
/**
* @return temperature in degrees C
*/
@ -21,6 +31,7 @@ public class TemperatureSensorData extends HalSensorData {
public double getData() {
return temperature;
}
/**
* @param temperature the temperature to set in degrees C
*/
@ -28,10 +39,4 @@ public class TemperatureSensorData extends HalSensorData {
public void setData(double temperature) {
this.temperature = temperature;
}
@Override
public String toString(){
return temperature + " C";
}
}

View file

@ -3,7 +3,7 @@ package se.hal;
import org.junit.Test;
import se.hal.intf.*;
import se.hal.struct.Event;
import se.hal.struct.devicedata.SwitchEventData;
import se.hal.struct.devicedata.OnOffEventData;
import java.util.Collections;
@ -15,7 +15,7 @@ public class EventControllerManagerTest {
private ControllerManager manager = new ControllerManager();
@Test
public void addAvailableEvent(){
assertEquals(0, manager.getAvailableEvents().size());
@ -90,7 +90,7 @@ public class EventControllerManagerTest {
@Override
public Class<? extends HalEventData> getEventDataClass() {
return SwitchEventData.class;
return OnOffEventData.class;
}
}
@ -103,7 +103,7 @@ public class EventControllerManagerTest {
@Override
public Class<? extends HalEventData> getEventDataClass() {
return SwitchEventData.class;
return OnOffEventData.class;
}
}
@ -135,7 +135,7 @@ public class EventControllerManagerTest {
@Override
public void setListener(HalEventReportListener listener) { }
@Override
public void close() { }
}