diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/ButtonDimmerController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/ButtonDimmerController.java index 62da223..1870abc 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/ButtonDimmerController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/ButtonDimmerController.java @@ -18,13 +18,13 @@ import org.springframework.web.bind.annotation.*; @EnableAutoConfiguration @RequestMapping("/buttonDimmer") public class ButtonDimmerController - extends InputDeviceConnectionController> { + extends InputDeviceConnectionController { private ButtonDimmerRepository buttonDimmerRepository; - private DimmableRepository> dimmableRepository; + private DimmableRepository dimmableRepository; @Autowired protected ButtonDimmerController( - ButtonDimmerRepository inputRepository, DimmableRepository> outputRepository) { + ButtonDimmerRepository inputRepository, DimmableRepository outputRepository) { super( inputRepository, outputRepository, @@ -53,7 +53,7 @@ public class ButtonDimmerController } @PutMapping("/dim") - public Set> dim( + public Set dim( @Valid @RequestBody final ButtonDimmerDimRequest bd, final Principal principal) throws NotFoundException { final ButtonDimmer buttonDimmer = diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/KnobDimmerController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/KnobDimmerController.java index 29adf09..adf75ea 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/KnobDimmerController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/KnobDimmerController.java @@ -18,14 +18,14 @@ import org.springframework.web.bind.annotation.*; @EnableAutoConfiguration @RequestMapping("/knobDimmer") public class KnobDimmerController - extends InputDeviceConnectionController> { + extends InputDeviceConnectionController { @Autowired private KnobDimmerRepository knobDimmerRepository; - @Autowired private DimmableRepository> dimmableRepository; + @Autowired private DimmableRepository dimmableRepository; @Autowired protected KnobDimmerController( - KnobDimmerRepository inputRepository, DimmableRepository> outputRepository) { + KnobDimmerRepository inputRepository, DimmableRepository outputRepository) { super( inputRepository, outputRepository, @@ -54,7 +54,7 @@ public class KnobDimmerController } @PutMapping("/dimTo") - public Set> dimTo( + public Set dimTo( @Valid @RequestBody final KnobDimmerDimRequest bd, final Principal principal) throws NotFoundException { final KnobDimmer dimmer = diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/AlterableFromDimmableState.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/AlterableFromDimmableState.java deleted file mode 100644 index 64b7039..0000000 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/AlterableFromDimmableState.java +++ /dev/null @@ -1,13 +0,0 @@ -package ch.usi.inf.sa4.sanmarinoes.smarthut.models; - -/** - * An IDimmable Device whose state can be set by a DimmableState of the corresponding type - * @param the type of the class that extends this interface (just for type bounds, does not mean actually anything) - */ -public interface AlterableFromDimmableState> - extends IDimmable, AlterableFromState> { - default void readStateAndSet(State state) { - final DimmableState hack = (DimmableState) state; - setDimAmount(hack.getDimAmount()); - } -} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/AlterableFromState.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/AlterableFromState.java deleted file mode 100644 index 235017c..0000000 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/AlterableFromState.java +++ /dev/null @@ -1,6 +0,0 @@ -package ch.usi.inf.sa4.sanmarinoes.smarthut.models; - -/** An OutputDevice whose state can be set by a State of corresponding device type */ -public interface AlterableFromState> { - void readStateAndSet(T state); -} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/AlterableFromSwitchableState.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/AlterableFromSwitchableState.java deleted file mode 100644 index a4f2d29..0000000 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/AlterableFromSwitchableState.java +++ /dev/null @@ -1,13 +0,0 @@ -package ch.usi.inf.sa4.sanmarinoes.smarthut.models; - -/** - * An ISwitchable Device whose state can be set by a SwitchableState of the corresponding type - * @param the type of the class that extends this interface (just for type bounds, does not mean actually anything) - */ -public interface AlterableFromSwitchableState> - extends ISwtichable, AlterableFromState> { - default void readStateAndSet(State state) { - final SwitchableState hack = (SwitchableState) state; - setOn(hack.isOn()); - } -} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java index b08e59a..d9e8d98 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Curtains.java @@ -7,7 +7,7 @@ import javax.persistence.Entity; * 0 is completely closed 100 is completely open */ @Entity -public class Curtains extends Dimmable { +public class Curtains extends Dimmable { public Curtains() { super("curtains"); } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Dimmable.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Dimmable.java index ee31d28..8a4da95 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Dimmable.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Dimmable.java @@ -10,13 +10,13 @@ import java.util.Set; @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) -public class Dimmable> extends Switchable implements IDimmable, AlterableFromDimmableState { +public class Dimmable extends Switchable { - public static final Connector> + public static final Connector KNOB_DIMMER_DIMMABLE_CONNECTOR = Connector.basic(KnobDimmer::getOutputs, Dimmable::getDimmers); - public static final Connector> + public static final Connector BUTTON_DIMMER_DIMMABLE_CONNECTOR = Connector.basic(ButtonDimmer::getOutputs, Dimmable::getDimmers); @@ -76,13 +76,7 @@ public class Dimmable> extends Switchable implements IDimm return this.dimmers; } - @Override - public Integer getDimAmount() { - return getIntensity(); - } - - @Override - public void setDimAmount(Integer intensity) { - setIntensity(intensity); + public void readStateAndSet(DimmableState state) { + setIntensity(state.getIntensity()); } } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DimmableLight.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DimmableLight.java index 127b9a4..89806a7 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DimmableLight.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DimmableLight.java @@ -4,7 +4,7 @@ import javax.persistence.*; /** Represent a dimmable light */ @Entity -public class DimmableLight extends Dimmable { +public class DimmableLight extends Dimmable { public DimmableLight() { super("dimmableLight"); } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DimmableState.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DimmableState.java index d04c089..1f548f8 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DimmableState.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/DimmableState.java @@ -8,7 +8,7 @@ import javax.validation.constraints.NotNull; /** Represent a state for an IDimmable device */ @Entity -public class DimmableState>> extends State { +public class DimmableState extends State { /** The light intensity value. Goes from 0 (off) to 100 (on) */ @NotNull @@ -17,11 +17,16 @@ public class DimmableState> @Max(100) private Integer dimAmount = 0; - public Integer getDimAmount() { + public Integer getIntensity() { return dimAmount; } - public void setDimAmount(Integer dimAmount) { + public void setIntensity(Integer dimAmount) { this.dimAmount = dimAmount; } + + @Override + public void apply() { + getDevice().readStateAndSet(this); + } } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Dimmer.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Dimmer.java index 0480534..7ef0808 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Dimmer.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Dimmer.java @@ -21,7 +21,7 @@ public abstract class Dimmer extends InputDevice { joinColumns = @JoinColumn(name = "dimmer_id"), inverseJoinColumns = @JoinColumn(name = "dimmable_id") ) - private Set> dimmables = new HashSet<>(); + private Set dimmables = new HashSet<>(); /** * Get the lights connected to this dimmer @@ -29,12 +29,12 @@ public abstract class Dimmer extends InputDevice { * @return duh */ @Override - public Set> getOutputs() { + public Set getOutputs() { return this.dimmables; } /** Add a light to be controller by this dimmer */ - public void addDimmable(Dimmable dimmable) { + public void addDimmable(Dimmable dimmable) { dimmables.add(dimmable); } } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/IDimmable.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/IDimmable.java deleted file mode 100644 index 3ee8a77..0000000 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/IDimmable.java +++ /dev/null @@ -1,10 +0,0 @@ -package ch.usi.inf.sa4.sanmarinoes.smarthut.models; - -/** - * Although not totally enforced in code, it represents an OutputDevice that can be set a state (here "dimAmount") - * that ranges from 0 to 100 - */ -public interface IDimmable { - Integer getDimAmount(); - void setDimAmount(Integer intensity); -} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/ISwtichable.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/ISwtichable.java deleted file mode 100644 index fda22fa..0000000 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/ISwtichable.java +++ /dev/null @@ -1,20 +0,0 @@ -package ch.usi.inf.sa4.sanmarinoes.smarthut.models; - -/** Interface equivalent of Switchable. Altough not totally enforced in code, it represents an OutputDevice that can be - * turned on or off - */ -public interface ISwtichable { - /** - * Returns whether the device is on (true) or not (false) - * - * @return whether the device is on (true) or not (false) - */ - boolean isOn(); - - /** - * Sets the on status of the device - * - * @param on the new on status: true for on, false for off - */ - void setOn(boolean on); -} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/RegularLight.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/RegularLight.java index 5d8cb3f..2dcff1b 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/RegularLight.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/RegularLight.java @@ -6,7 +6,7 @@ import javax.validation.constraints.NotNull; /** Represents a standard non-dimmable light */ @Entity -public class RegularLight extends Switchable implements AlterableFromSwitchableState { +public class RegularLight extends Switchable { /** Whether the light is on or not */ @Column(name = "light_on", nullable = false) diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SecurityCamera.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SecurityCamera.java index be0f559..7ddde5d 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SecurityCamera.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SecurityCamera.java @@ -5,7 +5,7 @@ import javax.persistence.Entity; import javax.validation.constraints.NotNull; @Entity -public class SecurityCamera extends Switchable implements AlterableFromSwitchableState { +public class SecurityCamera extends Switchable { public SecurityCamera() { super("securityCamera"); diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SmartPlug.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SmartPlug.java index 0abc2e2..546c746 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SmartPlug.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SmartPlug.java @@ -9,7 +9,7 @@ import javax.validation.constraints.NotNull; /** A smart plug that can be turned either on or off */ @Entity -public class SmartPlug extends Switchable implements AlterableFromSwitchableState { +public class SmartPlug extends Switchable { /** The average consumption of an active plug when on in Watt */ public static final Double AVERAGE_CONSUMPTION_KW = 200.0; diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/State.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/State.java index d0b139f..e8e1555 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/State.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/State.java @@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull; */ @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) -public abstract class State>> { +public abstract class State { @Id @GeneratedValue(strategy = GenerationType.AUTO) @@ -42,9 +42,7 @@ public abstract class State private Long sceneId; /** Sets the state of the connected device to the state represented by this object. */ - public void apply() { - device.readStateAndSet(this); - } + public abstract void apply(); public long getId() { return id; diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Switchable.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Switchable.java index 16b6f84..318ae98 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Switchable.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Switchable.java @@ -8,7 +8,7 @@ import java.util.Set; /** A device that can be turned either on or off */ @Entity @Inheritance(strategy = InheritanceType.JOINED) -public abstract class Switchable extends OutputDevice implements ISwtichable { +public abstract class Switchable extends OutputDevice { public static final Connector SWITCH_SWITCHABLE_CONNECTOR = Connector.basic(Switch::getOutputs, Switchable::getSwitches); @@ -38,4 +38,8 @@ public abstract class Switchable extends OutputDevice implements ISwtichable { public Set getSwitches() { return inputs; } + + public void readStateAndSet(SwitchableState state) { + setOn(state.isOn()); + } } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SwitchableState.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SwitchableState.java index 9260801..8e6a5fa 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SwitchableState.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/SwitchableState.java @@ -6,7 +6,7 @@ import javax.validation.constraints.NotNull; /** Represents a state for a Switchable device */ @Entity -public class SwitchableState>> extends State { +public class SwitchableState extends State { @Column(name = "switchable_on", nullable = false) @NotNull @@ -19,4 +19,9 @@ public class SwitchableState { +public class Thermostat extends Switchable { @Override public boolean isOn() {