all device controllers have been updated with device service
This commit is contained in:
parent
c6d5a1acd7
commit
389af7c04d
14 changed files with 152 additions and 203 deletions
|
@ -1,13 +1,12 @@
|
|||
package ch.usi.inf.sa4.sanmarinoes.smarthut.controller;
|
||||
|
||||
import static ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils.toList;
|
||||
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.ButtonDimmerDimRequest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.GenericDeviceSaveReguest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.DeviceService;
|
||||
import java.security.Principal;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import javax.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -19,37 +18,30 @@ import org.springframework.web.bind.annotation.*;
|
|||
@RequestMapping("/buttonDimmer")
|
||||
public class ButtonDimmerController
|
||||
extends InputDeviceConnectionController<ButtonDimmer, Dimmable> {
|
||||
|
||||
private DeviceService deviceService;
|
||||
private ButtonDimmerRepository buttonDimmerRepository;
|
||||
private DimmableRepository<Dimmable> dimmableRepository;
|
||||
|
||||
@Autowired
|
||||
protected ButtonDimmerController(
|
||||
ButtonDimmerRepository inputRepository, DimmableRepository<Dimmable> outputRepository) {
|
||||
super(
|
||||
inputRepository,
|
||||
outputRepository,
|
||||
DimmableLight.BUTTON_DIMMER_DIMMABLE_CONNECTOR);
|
||||
ButtonDimmerRepository inputRepository,
|
||||
DimmableRepository<Dimmable> outputRepository,
|
||||
DeviceService deviceService) {
|
||||
super(inputRepository, outputRepository, DimmableLight.BUTTON_DIMMER_DIMMABLE_CONNECTOR);
|
||||
this.deviceService = deviceService;
|
||||
this.buttonDimmerRepository = inputRepository;
|
||||
this.dimmableRepository = outputRepository;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public List<ButtonDimmer> findAll() {
|
||||
return toList(buttonDimmerRepository.findAll());
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public ButtonDimmer findById(@PathVariable("id") long id) throws NotFoundException {
|
||||
return buttonDimmerRepository.findById(id).orElseThrow(NotFoundException::new);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ButtonDimmer create(@Valid @RequestBody final GenericDeviceSaveReguest bd) {
|
||||
public ButtonDimmer create(
|
||||
@Valid @RequestBody final GenericDeviceSaveReguest bd, final Principal principal) {
|
||||
ButtonDimmer newBD = new ButtonDimmer();
|
||||
newBD.setName(bd.getName());
|
||||
newBD.setRoomId(bd.getRoomId());
|
||||
|
||||
return buttonDimmerRepository.save(newBD);
|
||||
return deviceService.saveAsOwner(newBD, principal.getName());
|
||||
}
|
||||
|
||||
@PutMapping("/dim")
|
||||
|
@ -76,7 +68,8 @@ public class ButtonDimmerController
|
|||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void delete(@PathVariable("id") long id) {
|
||||
buttonDimmerRepository.deleteById(id);
|
||||
public void delete(@PathVariable("id") long id, final Principal principal)
|
||||
throws NotFoundException {
|
||||
deviceService.delete(id, principal.getName());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
package ch.usi.inf.sa4.sanmarinoes.smarthut.controller;
|
||||
|
||||
import static ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils.toList;
|
||||
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.DimmableSaveRequest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.DuplicateStateException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.DeviceService;
|
||||
import java.security.Principal;
|
||||
import java.util.List;
|
||||
import javax.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
|
@ -17,44 +16,39 @@ import org.springframework.web.bind.annotation.*;
|
|||
@EnableAutoConfiguration
|
||||
@RequestMapping("/curtains")
|
||||
public class CurtainsController {
|
||||
@Autowired private DeviceService deviceService;
|
||||
@Autowired private CurtainsRepository curtainsService;
|
||||
@Autowired private SceneRepository sceneRepository;
|
||||
@Autowired private StateRepository<State<?>> stateRepository;
|
||||
|
||||
@GetMapping
|
||||
public List<Curtains> findAll() {
|
||||
return toList(curtainsService.findAll());
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public Curtains findById(@PathVariable("id") long id) throws NotFoundException {
|
||||
return curtainsService.findById(id).orElseThrow(NotFoundException::new);
|
||||
}
|
||||
|
||||
private Curtains save(Curtains newRL, DimmableSaveRequest s) {
|
||||
private Curtains save(Curtains newRL, DimmableSaveRequest s, final Principal principal) {
|
||||
newRL.setName(s.getName());
|
||||
newRL.setRoomId(s.getRoomId());
|
||||
newRL.setIntensity(s.getIntensity());
|
||||
|
||||
return curtainsService.save(newRL);
|
||||
return deviceService.saveAsOwner(newRL, principal.getName());
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public Curtains create(@Valid @RequestBody DimmableSaveRequest curtain) {
|
||||
return save(new Curtains(), curtain);
|
||||
public Curtains create(
|
||||
@Valid @RequestBody DimmableSaveRequest curtain, final Principal principal) {
|
||||
return save(new Curtains(), curtain, principal);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
public Curtains update(@Valid @RequestBody DimmableSaveRequest curtain)
|
||||
public Curtains update(
|
||||
@Valid @RequestBody DimmableSaveRequest curtain, final Principal principal)
|
||||
throws NotFoundException {
|
||||
return save(
|
||||
curtainsService.findById(curtain.getId()).orElseThrow(NotFoundException::new),
|
||||
curtain);
|
||||
curtain,
|
||||
principal);
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void delete(@PathVariable("id") long id) {
|
||||
curtainsService.deleteById(id);
|
||||
public void delete(@PathVariable("id") long id, final Principal principal)
|
||||
throws NotFoundException {
|
||||
deviceService.delete(id, principal.getName());
|
||||
}
|
||||
|
||||
@PostMapping("/{id}/state")
|
||||
|
|
|
@ -6,6 +6,7 @@ import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
|||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Device;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.DeviceRepository;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.RoomRepository;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.DeviceService;
|
||||
import java.security.Principal;
|
||||
import java.util.List;
|
||||
import javax.validation.Valid;
|
||||
|
@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
|
|||
@RequestMapping("/device")
|
||||
public class DeviceController {
|
||||
|
||||
@Autowired private DeviceService deviceService;
|
||||
@Autowired private DeviceRepository<Device> deviceRepository;
|
||||
@Autowired private RoomRepository roomRepository;
|
||||
|
||||
|
@ -43,7 +45,7 @@ public class DeviceController {
|
|||
d.setRoomId(deviceSaveRequest.getRoomId());
|
||||
d.setName(deviceSaveRequest.getName());
|
||||
|
||||
deviceRepository.save(d);
|
||||
deviceService.saveAsOwner(d, principal.getName());
|
||||
return d;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package ch.usi.inf.sa4.sanmarinoes.smarthut.controller;
|
||||
|
||||
import static ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils.toList;
|
||||
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.DimmableSaveRequest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.DuplicateStateException;
|
||||
|
@ -8,7 +7,6 @@ import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
|||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.DeviceService;
|
||||
import java.security.Principal;
|
||||
import java.util.List;
|
||||
import javax.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
|
@ -38,16 +36,6 @@ public class DimmableLightController extends GuestEnabledController<DimmableLigh
|
|||
this.deviceService = deviceService;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public List<DimmableLight> findAll() {
|
||||
return toList(dimmableLightRepository.findAll());
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public DimmableLight findById(@PathVariable("id") long id) throws NotFoundException {
|
||||
return dimmableLightRepository.findById(id).orElseThrow(NotFoundException::new);
|
||||
}
|
||||
|
||||
private DimmableLight save(
|
||||
DimmableLight initial, DimmableSaveRequest dl, String username, Long hostId)
|
||||
throws NotFoundException {
|
||||
|
@ -89,8 +77,9 @@ public class DimmableLightController extends GuestEnabledController<DimmableLigh
|
|||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void delete(@PathVariable("id") long id) {
|
||||
dimmableLightRepository.deleteById(id);
|
||||
public void delete(@PathVariable("id") long id, final Principal principal)
|
||||
throws NotFoundException {
|
||||
deviceService.delete(id, principal.getName());
|
||||
}
|
||||
|
||||
// the full url should be: "/dimmableLight/{id}/state?sceneId={sceneId}
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
package ch.usi.inf.sa4.sanmarinoes.smarthut.controller;
|
||||
|
||||
import static ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils.toList;
|
||||
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.GenericDeviceSaveReguest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.KnobDimmerDimRequest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.DeviceService;
|
||||
import java.security.Principal;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import javax.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -17,40 +16,28 @@ import org.springframework.web.bind.annotation.*;
|
|||
@RestController
|
||||
@EnableAutoConfiguration
|
||||
@RequestMapping("/knobDimmer")
|
||||
public class KnobDimmerController
|
||||
extends InputDeviceConnectionController<KnobDimmer, Dimmable> {
|
||||
public class KnobDimmerController extends InputDeviceConnectionController<KnobDimmer, Dimmable> {
|
||||
|
||||
@Autowired private DeviceService deviceService;
|
||||
@Autowired private KnobDimmerRepository knobDimmerRepository;
|
||||
@Autowired private DimmableRepository<Dimmable> dimmableRepository;
|
||||
|
||||
@Autowired
|
||||
protected KnobDimmerController(
|
||||
KnobDimmerRepository inputRepository, DimmableRepository<Dimmable> outputRepository) {
|
||||
super(
|
||||
inputRepository,
|
||||
outputRepository,
|
||||
Dimmable.KNOB_DIMMER_DIMMABLE_CONNECTOR);
|
||||
super(inputRepository, outputRepository, Dimmable.KNOB_DIMMER_DIMMABLE_CONNECTOR);
|
||||
this.knobDimmerRepository = inputRepository;
|
||||
this.dimmableRepository = outputRepository;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public List<KnobDimmer> findAll() {
|
||||
return toList(knobDimmerRepository.findAll());
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public KnobDimmer findById(@PathVariable("id") long id) throws NotFoundException {
|
||||
return knobDimmerRepository.findById(id).orElseThrow(NotFoundException::new);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public KnobDimmer create(@Valid @RequestBody GenericDeviceSaveReguest kd) {
|
||||
public KnobDimmer create(
|
||||
@Valid @RequestBody GenericDeviceSaveReguest kd, final Principal principal) {
|
||||
KnobDimmer newKD = new KnobDimmer();
|
||||
newKD.setName(kd.getName());
|
||||
newKD.setRoomId(kd.getRoomId());
|
||||
|
||||
return knobDimmerRepository.save(newKD);
|
||||
return deviceService.saveAsOwner(newKD, principal.getName());
|
||||
}
|
||||
|
||||
@PutMapping("/dimTo")
|
||||
|
@ -69,7 +56,8 @@ public class KnobDimmerController
|
|||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void delete(@PathVariable("id") long id) {
|
||||
knobDimmerRepository.deleteById(id);
|
||||
public void delete(@PathVariable("id") long id, final Principal principal)
|
||||
throws NotFoundException {
|
||||
deviceService.delete(id, principal.getName());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
package ch.usi.inf.sa4.sanmarinoes.smarthut.controller;
|
||||
|
||||
import static ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils.toList;
|
||||
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.GenericDeviceSaveReguest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.MotionSensor;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.MotionSensorRepository;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.DeviceService;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.socket.SensorSocketEndpoint;
|
||||
import java.security.Principal;
|
||||
import java.util.List;
|
||||
import javax.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
|
@ -19,27 +18,20 @@ import org.springframework.web.bind.annotation.*;
|
|||
@RequestMapping("/motionSensor")
|
||||
public class MotionSensorController {
|
||||
|
||||
@Autowired private DeviceService deviceService;
|
||||
|
||||
@Autowired private MotionSensorRepository motionSensorService;
|
||||
|
||||
@Autowired private SensorSocketEndpoint sensorSocketEndpoint;
|
||||
|
||||
@GetMapping
|
||||
public List<MotionSensor> findAll() {
|
||||
return toList(motionSensorService.findAll());
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public MotionSensor findById(@PathVariable("id") long id) throws NotFoundException {
|
||||
return motionSensorService.findById(id).orElseThrow(NotFoundException::new);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public MotionSensor create(@Valid @RequestBody GenericDeviceSaveReguest ms) {
|
||||
public MotionSensor create(
|
||||
@Valid @RequestBody GenericDeviceSaveReguest ms, final Principal principal) {
|
||||
MotionSensor newMS = new MotionSensor();
|
||||
newMS.setName(ms.getName());
|
||||
newMS.setRoomId(ms.getRoomId());
|
||||
|
||||
return motionSensorService.save(newMS);
|
||||
return deviceService.saveAsOwner(newMS, principal.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -53,7 +45,8 @@ public class MotionSensorController {
|
|||
sensor.setDetected(detected);
|
||||
final MotionSensor toReturn = motionSensorService.save(sensor);
|
||||
|
||||
sensorSocketEndpoint.queueDeviceUpdate(sensor, motionSensorService.findUser(sensor.getId()));
|
||||
sensorSocketEndpoint.queueDeviceUpdate(
|
||||
sensor, motionSensorService.findUser(sensor.getId()));
|
||||
|
||||
return toReturn;
|
||||
}
|
||||
|
@ -73,7 +66,8 @@ public class MotionSensorController {
|
|||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void delete(@PathVariable("id") long id) {
|
||||
motionSensorService.deleteById(id);
|
||||
public void delete(@PathVariable("id") long id, final Principal principal)
|
||||
throws NotFoundException {
|
||||
deviceService.delete(id, principal.getName());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,8 +89,9 @@ public class RegularLightController extends GuestEnabledController<RegularLight>
|
|||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void delete(@PathVariable("id") long id) {
|
||||
regularLightRepository.deleteById(id);
|
||||
public void delete(@PathVariable("id") long id, final Principal principal)
|
||||
throws NotFoundException {
|
||||
deviceService.delete(id, principal.getName());
|
||||
}
|
||||
|
||||
// the full url should be: "/regularLight/{id}/state?sceneId={sceneId}
|
||||
|
|
|
@ -1,18 +1,16 @@
|
|||
package ch.usi.inf.sa4.sanmarinoes.smarthut.controller;
|
||||
|
||||
import static ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils.toList;
|
||||
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.SwitchableSaveRequest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.DuplicateStateException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.DeviceService;
|
||||
import java.security.Principal;
|
||||
import java.util.List;
|
||||
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;
|
||||
|
@ -26,31 +24,24 @@ import org.springframework.web.bind.annotation.RestController;
|
|||
@RequestMapping("/securityCamera")
|
||||
public class SecurityCameraController {
|
||||
|
||||
@Autowired DeviceService deviceService;
|
||||
@Autowired SecurityCameraRepository securityCameraService;
|
||||
@Autowired private SceneRepository sceneRepository;
|
||||
@Autowired private StateRepository<State<?>> stateRepository;
|
||||
|
||||
@GetMapping
|
||||
public List<SecurityCamera> findAll() {
|
||||
return toList(securityCameraService.findAll());
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public SecurityCamera findById(@PathVariable("id") long id) throws NotFoundException {
|
||||
return securityCameraService.findById(id).orElseThrow(NotFoundException::new);
|
||||
}
|
||||
|
||||
private SecurityCamera save(SecurityCamera newSC, SwitchableSaveRequest sc) {
|
||||
private SecurityCamera save(
|
||||
SecurityCamera newSC, SwitchableSaveRequest sc, final Principal principal) {
|
||||
newSC.setName(sc.getName());
|
||||
newSC.setRoomId(sc.getRoomId());
|
||||
newSC.setOn(sc.isOn());
|
||||
|
||||
return securityCameraService.save(newSC);
|
||||
return deviceService.saveAsOwner(newSC, principal.getName());
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public SecurityCamera create(@Valid @RequestBody SwitchableSaveRequest sc) {
|
||||
return save(new SecurityCamera(), sc);
|
||||
public SecurityCamera create(
|
||||
@Valid @RequestBody SwitchableSaveRequest sc, final Principal principal) {
|
||||
return save(new SecurityCamera(), sc, principal);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
|
@ -61,12 +52,14 @@ public class SecurityCameraController {
|
|||
securityCameraService
|
||||
.findByIdAndUsername(sc.getId(), principal.getName())
|
||||
.orElseThrow(NotFoundException::new),
|
||||
sc);
|
||||
sc,
|
||||
principal);
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void delete(@PathVariable("id") long id) {
|
||||
securityCameraService.deleteById(id);
|
||||
public void delete(@PathVariable("id") long id, final Principal principal)
|
||||
throws NotFoundException {
|
||||
deviceService.delete(id, principal.getName());
|
||||
}
|
||||
|
||||
@PostMapping("/{id}/state")
|
||||
|
|
|
@ -1,19 +1,16 @@
|
|||
package ch.usi.inf.sa4.sanmarinoes.smarthut.controller;
|
||||
|
||||
import static ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils.toList;
|
||||
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.SensorSaveRequest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.DeviceService;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.SensorService;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.socket.SensorSocketEndpoint;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.security.Principal;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import javax.validation.Valid;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.*;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
@ -23,34 +20,23 @@ import org.springframework.web.bind.annotation.*;
|
|||
@RequestMapping("/sensor")
|
||||
public class SensorController {
|
||||
|
||||
@Autowired
|
||||
private SensorRepository sensorRepository;
|
||||
@Autowired private DeviceService deviceService;
|
||||
|
||||
@Autowired
|
||||
private SensorSocketEndpoint sensorSocketEndpoint;
|
||||
@Autowired private SensorRepository sensorRepository;
|
||||
|
||||
@Autowired
|
||||
private SensorService sensorService;
|
||||
@Autowired private SensorSocketEndpoint sensorSocketEndpoint;
|
||||
|
||||
@GetMapping
|
||||
public List<Sensor> findAll() {
|
||||
return toList(sensorRepository.findAll());
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public Sensor findById(@PathVariable("id") long id) throws NotFoundException {
|
||||
return sensorRepository.findById(id).orElseThrow(NotFoundException::new);
|
||||
}
|
||||
@Autowired private SensorService sensorService;
|
||||
|
||||
@PostMapping
|
||||
public Sensor create(@Valid @RequestBody SensorSaveRequest s) {
|
||||
public Sensor create(@Valid @RequestBody SensorSaveRequest s, final Principal principal) {
|
||||
Sensor newSensor = new Sensor();
|
||||
newSensor.setSensor(s.getSensor());
|
||||
newSensor.setName(s.getName());
|
||||
newSensor.setRoomId(s.getRoomId());
|
||||
newSensor.setValue(s.getValue());
|
||||
|
||||
return sensorRepository.save(newSensor);
|
||||
return deviceService.saveAsOwner(newSensor, principal.getName());
|
||||
}
|
||||
|
||||
@PutMapping("/{id}/value")
|
||||
|
@ -67,7 +53,8 @@ public class SensorController {
|
|||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void deleteById(@PathVariable("id") long id) {
|
||||
sensorRepository.deleteById(id);
|
||||
public void deleteById(@PathVariable("id") long id, final Principal principal)
|
||||
throws NotFoundException {
|
||||
deviceService.delete(id, principal.getName());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
package ch.usi.inf.sa4.sanmarinoes.smarthut.controller;
|
||||
|
||||
import static ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils.toList;
|
||||
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.SwitchableSaveRequest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.DuplicateStateException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.DeviceService;
|
||||
import java.security.Principal;
|
||||
import java.util.List;
|
||||
import javax.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.*;
|
||||
|
@ -18,32 +17,24 @@ import org.springframework.web.bind.annotation.*;
|
|||
@RequestMapping("/smartPlug")
|
||||
public class SmartPlugController {
|
||||
|
||||
@Autowired private DeviceService deviceService;
|
||||
@Autowired private SmartPlugRepository smartPlugRepository;
|
||||
@Autowired private SceneRepository sceneRepository;
|
||||
@Autowired private StateRepository<State<?>> stateRepository;
|
||||
|
||||
@GetMapping
|
||||
public List<SmartPlug> findAll() {
|
||||
return toList(smartPlugRepository.findAll());
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public SmartPlug findById(@PathVariable("id") long id) throws NotFoundException {
|
||||
return smartPlugRepository.findById(id).orElseThrow(NotFoundException::new);
|
||||
}
|
||||
|
||||
private SmartPlug save(SmartPlug newSP, SwitchableSaveRequest sp) {
|
||||
private SmartPlug save(SmartPlug newSP, SwitchableSaveRequest sp, final Principal principal) {
|
||||
newSP.setOn(sp.isOn());
|
||||
newSP.setId(sp.getId());
|
||||
newSP.setName(sp.getName());
|
||||
newSP.setRoomId(sp.getRoomId());
|
||||
|
||||
return smartPlugRepository.save(newSP);
|
||||
return deviceService.saveAsOwner(newSP, principal.getName());
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public SmartPlug create(@Valid @RequestBody SwitchableSaveRequest sp) {
|
||||
return save(new SmartPlug(), sp);
|
||||
public SmartPlug create(
|
||||
@Valid @RequestBody SwitchableSaveRequest sp, final Principal principal) {
|
||||
return save(new SmartPlug(), sp, principal);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
|
@ -53,7 +44,8 @@ public class SmartPlugController {
|
|||
smartPlugRepository
|
||||
.findByIdAndUsername(sp.getId(), principal.getName())
|
||||
.orElseThrow(NotFoundException::new),
|
||||
sp);
|
||||
sp,
|
||||
principal);
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}/meter")
|
||||
|
@ -69,8 +61,9 @@ public class SmartPlugController {
|
|||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void deleteById(@PathVariable("id") long id) {
|
||||
smartPlugRepository.deleteById(id);
|
||||
public void deleteById(@PathVariable("id") long id, final Principal principal)
|
||||
throws NotFoundException {
|
||||
deviceService.delete(id, principal.getName());
|
||||
}
|
||||
|
||||
@PostMapping("/{id}/state")
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
package ch.usi.inf.sa4.sanmarinoes.smarthut.controller;
|
||||
|
||||
import static ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils.toList;
|
||||
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.GenericDeviceSaveReguest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.SwitchOperationRequest;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.DeviceService;
|
||||
import java.security.Principal;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.*;
|
||||
|
@ -22,6 +20,7 @@ public class SwitchController extends InputDeviceConnectionController<Switch, Sw
|
|||
|
||||
private SwitchRepository switchRepository;
|
||||
private SwitchableRepository<Switchable> switchableRepository;
|
||||
private DeviceService deviceService;
|
||||
|
||||
/**
|
||||
* Contstructs the controller by requiring essential object for the controller implementation
|
||||
|
@ -31,29 +30,23 @@ public class SwitchController extends InputDeviceConnectionController<Switch, Sw
|
|||
*/
|
||||
@Autowired
|
||||
protected SwitchController(
|
||||
SwitchRepository inputRepository, SwitchableRepository<Switchable> outputRepository) {
|
||||
SwitchRepository inputRepository,
|
||||
SwitchableRepository<Switchable> outputRepository,
|
||||
DeviceService deviceService) {
|
||||
super(inputRepository, outputRepository, Switchable.SWITCH_SWITCHABLE_CONNECTOR);
|
||||
this.deviceService = deviceService;
|
||||
this.switchRepository = inputRepository;
|
||||
this.switchableRepository = outputRepository;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public List<Switch> findAll() {
|
||||
return toList(switchRepository.findAll());
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public Switch findById(@PathVariable("id") long id) throws NotFoundException {
|
||||
return switchRepository.findById(id).orElseThrow(NotFoundException::new);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public Switch create(@Valid @RequestBody GenericDeviceSaveReguest s) {
|
||||
public Switch create(
|
||||
@Valid @RequestBody GenericDeviceSaveReguest s, final Principal principal) {
|
||||
Switch newSwitch = new Switch();
|
||||
newSwitch.setName(s.getName());
|
||||
newSwitch.setRoomId(s.getRoomId());
|
||||
|
||||
return switchRepository.save(newSwitch);
|
||||
return deviceService.saveAsOwner(newSwitch, principal.getName());
|
||||
}
|
||||
|
||||
@PutMapping("/operate")
|
||||
|
@ -83,7 +76,8 @@ public class SwitchController extends InputDeviceConnectionController<Switch, Sw
|
|||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void deleteById(@PathVariable("id") long id) {
|
||||
switchRepository.deleteById(id);
|
||||
public void deleteById(@PathVariable("id") long id, final Principal principal)
|
||||
throws NotFoundException {
|
||||
deviceService.delete(id, principal.getName());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,9 +4,9 @@ import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.ThermostatSaveRequest;
|
|||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.DuplicateStateException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.*;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.DeviceService;
|
||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.service.ThermostatService;
|
||||
import java.security.Principal;
|
||||
import java.util.List;
|
||||
import javax.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.*;
|
||||
|
@ -17,27 +17,13 @@ import org.springframework.web.bind.annotation.*;
|
|||
@RequestMapping("/thermostat")
|
||||
public class ThermostatController {
|
||||
|
||||
@Autowired private DeviceService deviceService;
|
||||
@Autowired private ThermostatRepository thermostatRepository;
|
||||
|
||||
@Autowired private ThermostatService thermostatService;
|
||||
|
||||
@Autowired private SceneRepository sceneRepository;
|
||||
@Autowired private StateRepository<State<?>> stateRepository;
|
||||
|
||||
@GetMapping
|
||||
public List<Thermostat> findAll(Principal user) {
|
||||
return thermostatService.findAll(user.getName());
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public Thermostat findById(@PathVariable("id") long id, Principal principal)
|
||||
throws NotFoundException {
|
||||
return thermostatService
|
||||
.findById(id, principal.getName())
|
||||
.orElseThrow(NotFoundException::new);
|
||||
}
|
||||
|
||||
private Thermostat save(Thermostat newT, ThermostatSaveRequest t) {
|
||||
private Thermostat save(Thermostat newT, ThermostatSaveRequest t, final Principal principal) {
|
||||
newT.setTargetTemperature(t.getTargetTemperature());
|
||||
newT.setId(t.getId());
|
||||
newT.setName(t.getName());
|
||||
|
@ -45,14 +31,15 @@ public class ThermostatController {
|
|||
newT.setUseExternalSensors(t.isUseExternalSensors());
|
||||
newT.setOn(t.isTurnOn());
|
||||
|
||||
newT = thermostatRepository.save(newT);
|
||||
newT = deviceService.saveAsOwner(newT, principal.getName());
|
||||
thermostatService.populateMeasuredTemperature(newT);
|
||||
return newT;
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public Thermostat create(@Valid @RequestBody ThermostatSaveRequest t) {
|
||||
return save(new Thermostat(), t);
|
||||
public Thermostat create(
|
||||
@Valid @RequestBody ThermostatSaveRequest t, final Principal principal) {
|
||||
return save(new Thermostat(), t, principal);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
|
@ -62,12 +49,14 @@ public class ThermostatController {
|
|||
thermostatRepository
|
||||
.findByIdAndUsername(t.getId(), principal.getName())
|
||||
.orElseThrow(NotFoundException::new),
|
||||
t);
|
||||
t,
|
||||
principal);
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void deleteById(@PathVariable("id") long id) {
|
||||
thermostatRepository.deleteById(id);
|
||||
public void deleteById(@PathVariable("id") long id, final Principal principal)
|
||||
throws NotFoundException {
|
||||
deviceService.delete(id, principal.getName());
|
||||
}
|
||||
|
||||
@PostMapping("/{id}/state")
|
||||
|
|
|
@ -70,6 +70,20 @@ public abstract class Device {
|
|||
|
||||
@Transient @GsonExclude private boolean fromGuest = false;
|
||||
|
||||
@Transient @GsonExclude private boolean deleted = false;
|
||||
|
||||
public boolean isFromHost() {
|
||||
return fromHost;
|
||||
}
|
||||
|
||||
public boolean isDeleted() {
|
||||
return deleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
this.deleted = deleted;
|
||||
}
|
||||
|
||||
public boolean isFromGuest() {
|
||||
return fromGuest;
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ public class DeviceService {
|
|||
// enqueue all device updates for all other guests
|
||||
endpoint.queueDeviceUpdate(device, guest);
|
||||
}
|
||||
// broadcast device updates for all other guests
|
||||
|
||||
return device;
|
||||
}
|
||||
|
||||
|
@ -60,8 +60,26 @@ public class DeviceService {
|
|||
// broadcast to endpoint the object device, with receiving user set to guest
|
||||
endpoint.queueDeviceUpdate(device, guest);
|
||||
}
|
||||
// after queueing the device update for each user, flush them all in a single message
|
||||
// can be moved inside the foreach loop to send a single message for each update enqueued
|
||||
|
||||
return device;
|
||||
}
|
||||
|
||||
public void delete(Long id, String username) throws NotFoundException {
|
||||
Device device =
|
||||
deviceRepository
|
||||
.findByIdAndUsername(id, username)
|
||||
.orElseThrow(NotFoundException::new);
|
||||
deviceRepository.delete(device);
|
||||
|
||||
final User user = userRepository.findByUsername(username);
|
||||
final Set<User> guests = user.getGuests();
|
||||
|
||||
device.setFromHost(true);
|
||||
device.setFromGuest(false);
|
||||
device.setDeleted(true);
|
||||
for (final User guest : guests) {
|
||||
// broadcast to endpoint the object device, with receiving user set to guest
|
||||
endpoint.queueDeviceUpdate(device, guest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue