wip
This commit is contained in:
parent
74364effe6
commit
1f5f948e23
4 changed files with 82 additions and 3 deletions
|
@ -4,7 +4,7 @@ import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
public class BooleanCondition<D extends Device>
|
public class BooleanCondition<D extends Device & BooleanTriggerable>
|
||||||
extends Condition<D> { // TODO add interface to type constraints
|
extends Condition<D> { // TODO add interface to type constraints
|
||||||
|
|
||||||
@Column(name = "switchable_on")
|
@Column(name = "switchable_on")
|
||||||
|
@ -25,4 +25,9 @@ public class BooleanCondition<D extends Device>
|
||||||
public boolean check(boolean on) {
|
public boolean check(boolean on) {
|
||||||
return this.on == on;
|
return this.on == on;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean triggered() {
|
||||||
|
return this.getDevice().readTriggerState() == isOn();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ import javax.persistence.Transient;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
public class Condition<D extends Device> {
|
public abstract class Condition<D extends Device> {
|
||||||
|
|
||||||
@Transient private String kind;
|
@Transient private String kind;
|
||||||
|
|
||||||
|
@ -67,6 +67,8 @@ public class Condition<D extends Device> {
|
||||||
@NotNull
|
@NotNull
|
||||||
private Long automationId;
|
private Long automationId;
|
||||||
|
|
||||||
|
public abstract boolean triggered();
|
||||||
|
|
||||||
public long getId() {
|
public long getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import javax.persistence.Entity;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
public class RangeCondition<D extends Device> extends Condition<D> {
|
public class RangeCondition<D extends Device & RangeTriggerable> extends Condition<D> {
|
||||||
|
|
||||||
protected RangeCondition(String kind) {
|
protected RangeCondition(String kind) {
|
||||||
super(kind);
|
super(kind);
|
||||||
|
@ -49,4 +49,22 @@ public class RangeCondition<D extends Device> extends Condition<D> {
|
||||||
public void setRange(Double range) {
|
public void setRange(Double range) {
|
||||||
this.range = range;
|
this.range = range;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean triggered() {
|
||||||
|
double value = getDevice().readTriggerState();
|
||||||
|
switch (operator) {
|
||||||
|
case EQUAL:
|
||||||
|
return value == range;
|
||||||
|
case LESS:
|
||||||
|
return value < range;
|
||||||
|
case GREATER:
|
||||||
|
return value > range;
|
||||||
|
case GREATER_EQUAL:
|
||||||
|
return value >= range;
|
||||||
|
case LESS_EQUAL:
|
||||||
|
return value <= range;
|
||||||
|
}
|
||||||
|
throw new IllegalStateException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
package ch.usi.inf.sa4.sanmarinoes.smarthut.models;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class ThermostatCondition extends Condition<Thermostat> {
|
||||||
|
|
||||||
|
protected ThermostatCondition(String kind) {
|
||||||
|
super(kind);
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Operator {
|
||||||
|
@SerializedName("EQUAL")
|
||||||
|
EQUAL,
|
||||||
|
@SerializedName("NOTEQUAL")
|
||||||
|
NOTEQUAL,
|
||||||
|
}
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private ThermostatCondition.Operator operator;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private Thermostat.Mode mode;
|
||||||
|
|
||||||
|
public Operator getOperator() {
|
||||||
|
return operator;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOperator(Operator operator) {
|
||||||
|
this.operator = operator;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Thermostat.Mode getState() {
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setState(Thermostat.Mode state) {
|
||||||
|
this.mode = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean triggered() {
|
||||||
|
switch (operator) {
|
||||||
|
case EQUAL:
|
||||||
|
return getDevice().getMode() == mode;
|
||||||
|
case NOTEQUAL:
|
||||||
|
return getDevice().getMode() != mode;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue