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 7c2d0b7..6ea2556 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 @@ -1,19 +1,13 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.controller; +import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.ButtonDimmerSaveRequest; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.ButtonDimmer; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.ButtonDimmerRepository; import java.util.Optional; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration @@ -32,13 +26,20 @@ public class ButtonDimmerController { } @PostMapping - public ButtonDimmer save(@Valid @RequestBody ButtonDimmer bd) { - return buttonDimmerService.save(bd); + public ButtonDimmer create(@Valid @RequestBody final ButtonDimmerSaveRequest bd) { + ButtonDimmer newBD = new ButtonDimmer(); + newBD.setLights(bd.getLights()); + newBD.setId(bd.getId()); + newBD.setName(bd.getName()); + newBD.setRoom(bd.getRoom()); + newBD.setRoomId(bd.getRoomId()); + + return buttonDimmerService.save(newBD); } @PutMapping - public ButtonDimmer update(@Valid @RequestBody ButtonDimmer bd) { - return buttonDimmerService.save(bd); + public ButtonDimmer update(@Valid @RequestBody ButtonDimmerSaveRequest bd) { + return this.create(bd); } @DeleteMapping("/{id}") diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/DimmableLightController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/DimmableLightController.java index 5391e43..f7e02d2 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/DimmableLightController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/DimmableLightController.java @@ -1,19 +1,13 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.controller; +import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.DimmableLightSaveRequest; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.DimmableLight; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.DimmableLightRepository; import java.util.Optional; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration @@ -33,13 +27,20 @@ public class DimmableLightController { } @PostMapping - public DimmableLight save(@Valid @RequestBody DimmableLight dl) { - return dimmableLightService.save(dl); + public DimmableLight create(@Valid @RequestBody DimmableLightSaveRequest dl) { + DimmableLight newDL = new DimmableLight(); + newDL.setIntensity(dl.getIntensity()); + newDL.setId(dl.getId()); + newDL.setName(dl.getName()); + newDL.setRoom(dl.getRoom()); + newDL.setRoomId(dl.getRoomId()); + + return dimmableLightService.save(newDL); } @PutMapping - public DimmableLight update(@Valid @RequestBody DimmableLight dl) { - return dimmableLightService.save(dl); + public DimmableLight update(@Valid @RequestBody DimmableLightSaveRequest dl) { + return this.create(dl); } @DeleteMapping("/{id}") 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 3dd53d7..6c93178 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 @@ -1,19 +1,13 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.controller; +import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.KnobDimmerSaveRequest; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.KnobDimmer; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.KnobDimmerRepository; import java.util.Optional; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration @@ -33,13 +27,20 @@ public class KnobDimmerController { } @PostMapping - public KnobDimmer save(@Valid @RequestBody KnobDimmer kd) { - return knobDimmerService.save(kd); + public KnobDimmer create(@Valid @RequestBody KnobDimmerSaveRequest kd) { + KnobDimmer newKD = new KnobDimmer(); + newKD.setLights(kd.getLights()); + newKD.setId(kd.getId()); + newKD.setName(kd.getName()); + newKD.setRoom(kd.getRoom()); + newKD.setRoomId(kd.getRoomId()); + + return knobDimmerService.save(newKD); } @PutMapping - public KnobDimmer update(@Valid @RequestBody KnobDimmer kd) { - return knobDimmerService.save(kd); + public KnobDimmer update(@Valid @RequestBody KnobDimmerSaveRequest kd) { + return this.create(kd); } @DeleteMapping("/{id}") diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/MotionSensorController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/MotionSensorController.java index 15c964f..8decc61 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/MotionSensorController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/MotionSensorController.java @@ -1,19 +1,13 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.controller; +import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.MotionSensorSaveRequest; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.MotionSensor; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.MotionSensorRepository; import java.util.Optional; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration @@ -33,13 +27,20 @@ public class MotionSensorController { } @PostMapping - public MotionSensor save(@Valid @RequestBody MotionSensor ms) { - return motionSensorService.save(ms); + public MotionSensor create(@Valid @RequestBody MotionSensorSaveRequest ms) { + MotionSensor newMS = new MotionSensor(); + newMS.setDetected(ms.isDetected()); + newMS.setId(ms.getId()); + newMS.setName(ms.getName()); + newMS.setRoom(ms.getRoom()); + newMS.setRoomId(ms.getRoomId()); + + return motionSensorService.save(newMS); } @PutMapping - public MotionSensor update(@Valid @RequestBody MotionSensor ms) { - return motionSensorService.save(ms); + public MotionSensor update(@Valid @RequestBody MotionSensorSaveRequest ms) { + return this.create(ms); } @DeleteMapping("/{id}") diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/RegularLightController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/RegularLightController.java index 2ec1453..dd53ceb 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/RegularLightController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/RegularLightController.java @@ -1,5 +1,6 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.controller; +import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.RegularLightSaveRequest; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.RegularLight; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.RegularLightRepository; import java.util.Optional; @@ -33,13 +34,20 @@ public class RegularLightController { } @PostMapping - public RegularLight save(@Valid @RequestBody RegularLight rl) { - return regularLightService.save(rl); + public RegularLight create(@Valid @RequestBody RegularLightSaveRequest rl) { + RegularLight newRL = new RegularLight(); + newRL.setId(rl.getId()); + newRL.setName(rl.getName()); + newRL.setRoom(rl.getRoom()); + newRL.setRoomId(rl.getRoomId()); + newRL.setOn(rl.isOn()); + + return regularLightService.save(newRL); } @PutMapping - public RegularLight update(@Valid @RequestBody RegularLight rl) { - return regularLightService.save(rl); + public RegularLight update(@Valid @RequestBody RegularLightSaveRequest rl) { + return this.create(rl); } @DeleteMapping("/{id}") diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SensorController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SensorController.java index 957328e..788f32f 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SensorController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SensorController.java @@ -1,5 +1,6 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.controller; +import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.SensorSaveRequest; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*; import java.util.*; import javax.validation.Valid; @@ -25,13 +26,21 @@ public class SensorController { } @PostMapping - public Sensor save(@Valid @RequestBody Sensor s) { - return sensorRepository.save(s); + public Sensor create(@Valid @RequestBody SensorSaveRequest s) { + Sensor newSensor = new Sensor(); + newSensor.setSensor(s.getSensor()); + newSensor.setValue(s.getValue()); + newSensor.setId(s.getId()); + newSensor.setName(s.getName()); + newSensor.setRoom(s.getRoom()); + newSensor.setRoomId(s.getRoomId()); + + return sensorRepository.save(newSensor); } @PutMapping - public Sensor update(@Valid @RequestBody Sensor s) { - return sensorRepository.save(s); + public Sensor update(@Valid @RequestBody SensorSaveRequest s) { + return this.create(s); } @DeleteMapping("/{id}") diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SmartPlugController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SmartPlugController.java index a0aee71..3cf2cc0 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SmartPlugController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SmartPlugController.java @@ -1,5 +1,6 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.controller; +import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.SmartPlugSaveRequest; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*; import java.util.*; import javax.validation.Valid; @@ -25,13 +26,20 @@ public class SmartPlugController { } @PostMapping - public SmartPlug save(@Valid @RequestBody SmartPlug sp) { - return smartPlugRepository.save(sp); + public SmartPlug create(@Valid @RequestBody SmartPlugSaveRequest sp) { + SmartPlug newSP = new SmartPlug(); + newSP.setOn(sp.isOn()); + newSP.setId(sp.getId()); + newSP.setName(sp.getName()); + newSP.setRoom(sp.getRoom()); + newSP.setRoomId(sp.getRoomId()); + + return smartPlugRepository.save(newSP); } @PutMapping - public SmartPlug update(@Valid @RequestBody SmartPlug sp) { - return smartPlugRepository.save(sp); + public SmartPlug update(@Valid @RequestBody SmartPlugSaveRequest sp) { + return this.create(sp); } @DeleteMapping("/{id}") diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SwitchController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SwitchController.java index 7eb83a0..51f0858 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SwitchController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/SwitchController.java @@ -1,5 +1,6 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.controller; +import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.SwitchSaveRequest; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*; import java.util.*; import javax.validation.Valid; @@ -25,13 +26,20 @@ public class SwitchController { } @PostMapping - public Switch save(@Valid @RequestBody Switch s) { - return switchRepository.save(s); + public Switch create(@Valid @RequestBody SwitchSaveRequest s) { + Switch newSwitch = new Switch(); + newSwitch.setId(s.getId()); + newSwitch.setName(s.getName()); + newSwitch.setRoom(s.getRoom()); + newSwitch.setRoomId(s.getRoomId()); + newSwitch.setOn(s.isOn()); + + return switchRepository.save(newSwitch); } @PutMapping - public Switch update(@Valid @RequestBody Switch s) { - return switchRepository.save(s); + public Switch update(@Valid @RequestBody SwitchSaveRequest s) { + return this.create(s); } @DeleteMapping("/{id}") diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/ButtonDimmerSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/ButtonDimmerSaveRequest.java new file mode 100644 index 0000000..ce49970 --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/ButtonDimmerSaveRequest.java @@ -0,0 +1,67 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; + +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.DimmableLight; +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Room; +import java.util.HashSet; +import java.util.Set; +import javax.persistence.*; +import javax.validation.constraints.NotNull; + +public class ButtonDimmerSaveRequest { + @Lob private Set lights = new HashSet(); + + /** Device identifier */ + private long id; + + /** The room this device belongs in */ + private Room room; + + /** + * The room this device belongs in, as a foreign key id. To use when updating and inserting from + * a REST call. + */ + @NotNull private Long roomId; + + /** The name of the device as assigned by the user (e.g. 'Master bedroom light') */ + @NotNull private String name; + + public Set getLights() { + return this.lights; + } + + public void setLights(Set newLights) { + this.lights = newLights; + } + + public void setId(long id) { + this.id = id; + } + + public void setRoom(Room room) { + this.room = room; + } + + public void setRoomId(Long roomId) { + this.roomId = roomId; + } + + public void setName(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public Room getRoom() { + return room; + } + + public Long getRoomId() { + return roomId; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/DimmableLightSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/DimmableLightSaveRequest.java new file mode 100644 index 0000000..43b5a97 --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/DimmableLightSaveRequest.java @@ -0,0 +1,73 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; + +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Room; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +public class DimmableLightSaveRequest { + + /** The light intensity value. Goes from 0 (off) to 100 (on) */ + @NotNull + @Min(1) + @Max(100) + private Integer intensity = 0; + + /** Device identifier */ + private long id; + + /** The room this device belongs in */ + private Room room; + + /** + * The room this device belongs in, as a foreign key id. To use when updating and inserting from + * a REST call. + */ + @NotNull private Long roomId; + + /** The name of the device as assigned by the user (e.g. 'Master bedroom light') */ + @NotNull private String name; + + public void setId(long id) { + this.id = id; + } + + public void setRoom(Room room) { + this.room = room; + } + + public void setRoomId(Long roomId) { + this.roomId = roomId; + } + + public void setName(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public Room getRoom() { + return room; + } + + public Long getRoomId() { + return roomId; + } + + public String getName() { + return name; + } + + public Integer getIntensity() { + return intensity; + } + + public void setIntensity(Integer intensity) throws IllegalArgumentException { + if (intensity < 0 || intensity > 100) { + throw new IllegalArgumentException("The intensity level can't go below 0 or above 100"); + } + this.intensity = intensity; + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/KnobDimmerSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/KnobDimmerSaveRequest.java new file mode 100644 index 0000000..530ab90 --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/KnobDimmerSaveRequest.java @@ -0,0 +1,67 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; + +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.DimmableLight; +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Room; +import java.util.HashSet; +import java.util.Set; +import javax.persistence.Lob; +import javax.validation.constraints.NotNull; + +public class KnobDimmerSaveRequest { + @Lob private Set lights = new HashSet(); + + /** Device identifier */ + private long id; + + /** The room this device belongs in */ + private Room room; + + /** + * The room this device belongs in, as a foreign key id. To use when updating and inserting from + * a REST call. + */ + @NotNull private Long roomId; + + /** The name of the device as assigned by the user (e.g. 'Master bedroom light') */ + @NotNull private String name; + + public void setId(long id) { + this.id = id; + } + + public void setRoom(Room room) { + this.room = room; + } + + public void setRoomId(Long roomId) { + this.roomId = roomId; + } + + public void setName(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public Room getRoom() { + return room; + } + + public Long getRoomId() { + return roomId; + } + + public String getName() { + return name; + } + + public void setLights(Set lights) { + this.lights = lights; + } + + public Set getLights() { + return lights; + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/MotionSensorSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/MotionSensorSaveRequest.java new file mode 100644 index 0000000..9fa3c7e --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/MotionSensorSaveRequest.java @@ -0,0 +1,63 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; + +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Room; +import javax.validation.constraints.NotNull; + +public class MotionSensorSaveRequest { + private boolean detected; + + /** Device identifier */ + private long id; + + /** The room this device belongs in */ + private Room room; + + /** + * The room this device belongs in, as a foreign key id. To use when updating and inserting from + * a REST call. + */ + @NotNull private Long roomId; + + /** The name of the device as assigned by the user (e.g. 'Master bedroom light') */ + @NotNull private String name; + + public void setId(long id) { + this.id = id; + } + + public void setRoom(Room room) { + this.room = room; + } + + public void setRoomId(Long roomId) { + this.roomId = roomId; + } + + public void setName(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public Room getRoom() { + return room; + } + + public Long getRoomId() { + return roomId; + } + + public String getName() { + return name; + } + + public boolean isDetected() { + return detected; + } + + public void setDetected(boolean detected) { + this.detected = detected; + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/RegularLightSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/RegularLightSaveRequest.java new file mode 100644 index 0000000..fb7fc78 --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/RegularLightSaveRequest.java @@ -0,0 +1,64 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; + +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Room; +import javax.validation.constraints.NotNull; + +public class RegularLightSaveRequest { + /** The state of this switch */ + private boolean on; + + /** Device identifier */ + private long id; + + /** The room this device belongs in */ + private Room room; + + /** + * The room this device belongs in, as a foreign key id. To use when updating and inserting from + * a REST call. + */ + @NotNull private Long roomId; + + /** The name of the device as assigned by the user (e.g. 'Master bedroom light') */ + @NotNull private String name; + + public void setId(long id) { + this.id = id; + } + + public void setRoom(Room room) { + this.room = room; + } + + public void setRoomId(Long roomId) { + this.roomId = roomId; + } + + public void setName(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public Room getRoom() { + return room; + } + + public Long getRoomId() { + return roomId; + } + + public String getName() { + return name; + } + + public boolean isOn() { + return on; + } + + public void setOn(boolean on) { + this.on = on; + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SensorSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SensorSaveRequest.java new file mode 100644 index 0000000..cbc29b0 --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SensorSaveRequest.java @@ -0,0 +1,97 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; + +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Room; +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Sensor; +import com.google.gson.annotations.SerializedName; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.validation.constraints.NotNull; + +public class SensorSaveRequest { + + /** Type of sensor, i.e. of the thing the sensor measures. */ + public enum SensorType { + /** A sensor that measures temperature in degrees celsius */ + @SerializedName("TEMPERATURE") + TEMPERATURE, + + /** A sensor that measures relative humidity in percentage points */ + @SerializedName("HUMIDITY") + HUMIDITY, + + /** A sensor that measures light in degrees */ + @SerializedName("LIGHT") + LIGHT + } + + /** The value of this sensor according to its sensor type */ + private int value; + + /** The type of this sensor */ + @NotNull + @Enumerated(value = EnumType.STRING) + private Sensor.SensorType sensor; + + /** Device identifier */ + private long id; + + /** The room this device belongs in */ + private Room room; + + /** + * The room this device belongs in, as a foreign key id. To use when updating and inserting from + * a REST call. + */ + @NotNull private Long roomId; + + /** The name of the device as assigned by the user (e.g. 'Master bedroom light') */ + @NotNull private String name; + + public void setId(long id) { + this.id = id; + } + + public void setRoom(Room room) { + this.room = room; + } + + public void setRoomId(Long roomId) { + this.roomId = roomId; + } + + public void setName(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public Room getRoom() { + return room; + } + + public Long getRoomId() { + return roomId; + } + + public String getName() { + return name; + } + + public Sensor.SensorType getSensor() { + return sensor; + } + + public void setSensor(Sensor.SensorType sensor) { + this.sensor = sensor; + } + + public int getValue() { + return this.value; + } + + public void setValue(int newValue) { + this.value = newValue; + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SmartPlugSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SmartPlugSaveRequest.java new file mode 100644 index 0000000..3dbb72b --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SmartPlugSaveRequest.java @@ -0,0 +1,64 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; + +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Room; +import javax.validation.constraints.NotNull; + +public class SmartPlugSaveRequest { + /** Whether the smart plug is on */ + @NotNull private boolean on; + + /** Device identifier */ + private long id; + + /** The room this device belongs in */ + private Room room; + + /** + * The room this device belongs in, as a foreign key id. To use when updating and inserting from + * a REST call. + */ + @NotNull private Long roomId; + + /** The name of the device as assigned by the user (e.g. 'Master bedroom light') */ + @NotNull private String name; + + public void setId(long id) { + this.id = id; + } + + public void setRoom(Room room) { + this.room = room; + } + + public void setRoomId(Long roomId) { + this.roomId = roomId; + } + + public void setName(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public Room getRoom() { + return room; + } + + public Long getRoomId() { + return roomId; + } + + public String getName() { + return name; + } + + public boolean isOn() { + return on; + } + + public void setOn(boolean on) { + this.on = on; + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SwitchSaveRequest.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SwitchSaveRequest.java new file mode 100644 index 0000000..ff365fc --- /dev/null +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/dto/SwitchSaveRequest.java @@ -0,0 +1,64 @@ +package ch.usi.inf.sa4.sanmarinoes.smarthut.dto; + +import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Room; +import javax.validation.constraints.NotNull; + +public class SwitchSaveRequest { + /** The state of this switch */ + private boolean on; + + /** Device identifier */ + private long id; + + /** The room this device belongs in */ + private Room room; + + /** + * The room this device belongs in, as a foreign key id. To use when updating and inserting from + * a REST call. + */ + @NotNull private Long roomId; + + /** The name of the device as assigned by the user (e.g. 'Master bedroom light') */ + @NotNull private String name; + + public void setId(long id) { + this.id = id; + } + + public void setRoom(Room room) { + this.room = room; + } + + public void setRoomId(Long roomId) { + this.roomId = roomId; + } + + public void setName(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public Room getRoom() { + return room; + } + + public Long getRoomId() { + return roomId; + } + + public String getName() { + return name; + } + + public boolean isOn() { + return on; + } + + public void setOn(boolean on) { + this.on = on; + } +} diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/ButtonDimmer.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/ButtonDimmer.java index e666c3e..9ff5af2 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/ButtonDimmer.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/ButtonDimmer.java @@ -11,4 +11,54 @@ public class ButtonDimmer extends Dimmer { public ButtonDimmer() { super("button-dimmer"); } + + /** Increases the current intensity level of the dimmable light by 1 */ + public void increaseIntensity() { + for (DimmableLight dl : lights) { + dl.setIntensity(dl.getIntensity() + 1); + } + } + + /** Decreases the current intensity level of the dimmable light by 1 */ + public void decreaseIntensity() { + for (DimmableLight dl : lights) { + dl.setIntensity(dl.getIntensity() - 1); + } + } + + /** + * Adds a DimmableLight to this set of DimmableLights + * + * @param dl The DimmableLight to be added + */ + public void addLight(DimmableLight dl) { + lights.add(dl); + } + + /** + * Removes the given DimmableLight + * + * @param dl The DimmableLight to be removed + */ + public void removeLight(DimmableLight dl) { + lights.remove(dl); + } + + /** Clears this set */ + public void clearSet() { + lights.clear(); + } + + /** + * Get the lights + * + * @return duh + */ + public Set getLights() { + return this.lights; + } + + public void setLights(Set newLights) { + this.lights = newLights; + } } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/KnobDimmer.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/KnobDimmer.java index 80d59ab..d14e099 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/KnobDimmer.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/KnobDimmer.java @@ -11,4 +11,56 @@ public class KnobDimmer extends Dimmer { public KnobDimmer() { super("knob-dimmer"); } + + /** + * Increases or decreases the current intensity level by 5, moving between absolute multiples of + * 5 between 0 and 100, of all dimmable lights mapped to this knob + * + * @param inc The direction the knob is turned with + */ + public void modifyIntensity(boolean inc) { + + for (DimmableLight dl : lights) { + int remainder = dl.getIntensity() / 5; + + if (inc) { + dl.setIntensity(dl.getIntensity() - remainder); + dl.setIntensity((dl.getIntensity() + 5) % 105); + } else { + dl.setIntensity(dl.getIntensity() + (5 - remainder)); + dl.setIntensity((dl.getIntensity() - 5) % 105); + } + } + } + + /** + * Adds a DimmableLight to this set of DimmableLights + * + * @param dl The DimmableLight to be added + */ + public void addLight(DimmableLight dl) { + lights.add(dl); + } + + /** + * Removes the given DimmableLight + * + * @param dl The DimmableLight to be removed + */ + public void removeLight(DimmableLight dl) { + lights.remove(dl); + } + + /** Clears this set */ + public void clearSet() { + lights.clear(); + } + + public void setLights(Set lights) { + this.lights = lights; + } + + public Set getLights() { + return lights; + } } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/MotionSensor.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/MotionSensor.java index d1c47b3..50d2206 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/MotionSensor.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/MotionSensor.java @@ -1,10 +1,23 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.models; +import javax.persistence.Column; import javax.persistence.Entity; /** Represents a motion sensor device */ @Entity public class MotionSensor extends InputDevice { + + @Column(nullable = false) + private boolean detected; + + public boolean isDetected() { + return detected; + } + + public void setDetected(boolean detected) { + this.detected = detected; + } + public MotionSensor() { super("motion-sensor"); } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Sensor.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Sensor.java index e3fbae0..e352a52 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Sensor.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Sensor.java @@ -26,6 +26,10 @@ public class Sensor extends InputDevice { LIGHT } + /** The value of this sensor according to its sensor type */ + @Column(nullable = false) + private int value; + /** The type of this sensor */ @Column(nullable = false) @NotNull @@ -40,6 +44,14 @@ public class Sensor extends InputDevice { this.sensor = sensor; } + public int getValue() { + return this.value; + } + + public void setValue(int newValue) { + this.value = newValue; + } + public Sensor() { super("sensor"); } diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Switch.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Switch.java index 6f0eb99..2576d38 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Switch.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/models/Switch.java @@ -3,7 +3,7 @@ package ch.usi.inf.sa4.sanmarinoes.smarthut.models; import javax.persistence.Column; import javax.persistence.Entity; -/** A switch input device TODO: define switch behaviour (push button vs on/off state) */ +/** A switch input device */ @Entity public class Switch extends InputDevice { @@ -20,7 +20,7 @@ public class Switch extends InputDevice { * * @param state The state to be set */ - void setState(boolean state) { + public void setOn(boolean state) { on = state; } @@ -29,7 +29,7 @@ public class Switch extends InputDevice { * * @return This Switch on state */ - boolean getState() { + public boolean isOn() { return on; } }