added sceneBinding method in cotrollers of output devices
This commit is contained in:
parent
f565a3be6e
commit
e79ab46cb8
6 changed files with 137 additions and 0 deletions
|
@ -6,6 +6,11 @@ import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.DimmableSaveRequest;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Curtains;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Curtains;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.CurtainsRepository;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.CurtainsRepository;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Dimmable;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.DimmableState;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.SceneRepository;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.StateRepository;
|
||||||
|
import java.security.Principal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
@ -17,6 +22,8 @@ import org.springframework.web.bind.annotation.*;
|
||||||
@RequestMapping("/curtains")
|
@RequestMapping("/curtains")
|
||||||
public class CurtainsController {
|
public class CurtainsController {
|
||||||
@Autowired private CurtainsRepository curtainsService;
|
@Autowired private CurtainsRepository curtainsService;
|
||||||
|
@Autowired private SceneRepository sceneRepository;
|
||||||
|
@Autowired private StateRepository stateRepository;
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public List<Curtains> findAll() {
|
public List<Curtains> findAll() {
|
||||||
|
@ -53,4 +60,21 @@ public class CurtainsController {
|
||||||
public void delete(@PathVariable("id") long id) {
|
public void delete(@PathVariable("id") long id) {
|
||||||
curtainsService.deleteById(id);
|
curtainsService.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/{id}/state")
|
||||||
|
public void sceneBinding(
|
||||||
|
@PathVariable("id") long deviceId,
|
||||||
|
@RequestParam long sceneId,
|
||||||
|
final Principal principal)
|
||||||
|
throws NotFoundException {
|
||||||
|
|
||||||
|
Curtains c =
|
||||||
|
curtainsService
|
||||||
|
.findByIdAndUsername(deviceId, principal.getName())
|
||||||
|
.orElseThrow(NotFoundException::new);
|
||||||
|
DimmableState<Dimmable> s = c.cloneState();
|
||||||
|
sceneRepository.findById(sceneId).orElseThrow(NotFoundException::new);
|
||||||
|
s.setSceneId(sceneId);
|
||||||
|
stateRepository.save(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,12 @@ 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.dto.DimmableSaveRequest;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.Dimmable;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.DimmableLight;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.DimmableLight;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.DimmableLightRepository;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.DimmableLightRepository;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.SceneRepository;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.State;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.StateRepository;
|
||||||
import java.security.Principal;
|
import java.security.Principal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
@ -19,6 +23,8 @@ import org.springframework.web.bind.annotation.*;
|
||||||
public class DimmableLightController {
|
public class DimmableLightController {
|
||||||
|
|
||||||
@Autowired private DimmableLightRepository dimmableLightService;
|
@Autowired private DimmableLightRepository dimmableLightService;
|
||||||
|
@Autowired private SceneRepository sceneRepository;
|
||||||
|
@Autowired private StateRepository stateRepository;
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public List<DimmableLight> findAll() {
|
public List<DimmableLight> findAll() {
|
||||||
|
@ -58,4 +64,23 @@ public class DimmableLightController {
|
||||||
public void delete(@PathVariable("id") long id) {
|
public void delete(@PathVariable("id") long id) {
|
||||||
dimmableLightService.deleteById(id);
|
dimmableLightService.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the full url should be: "/dimmableLight/{id}/state?sceneId={sceneId}
|
||||||
|
// however it is not necessary to specify the query in the mapping
|
||||||
|
@PostMapping("/{id}/state")
|
||||||
|
public void sceneBinding(
|
||||||
|
@PathVariable("id") long deviceId,
|
||||||
|
@RequestParam long sceneId,
|
||||||
|
final Principal principal)
|
||||||
|
throws NotFoundException {
|
||||||
|
|
||||||
|
DimmableLight d =
|
||||||
|
dimmableLightService
|
||||||
|
.findByIdAndUsername(deviceId, principal.getName())
|
||||||
|
.orElseThrow(NotFoundException::new);
|
||||||
|
State<Dimmable> s = d.cloneState();
|
||||||
|
sceneRepository.findById(sceneId).orElseThrow(NotFoundException::new);
|
||||||
|
s.setSceneId(sceneId);
|
||||||
|
stateRepository.save(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,12 @@ 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.dto.SwitchableSaveRequest;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.OutputDevice;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.RegularLight;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.RegularLight;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.RegularLightRepository;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.RegularLightRepository;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.SceneRepository;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.State;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.StateRepository;
|
||||||
import java.security.Principal;
|
import java.security.Principal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
@ -18,6 +22,7 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -26,6 +31,8 @@ import org.springframework.web.bind.annotation.RestController;
|
||||||
public class RegularLightController {
|
public class RegularLightController {
|
||||||
|
|
||||||
@Autowired private RegularLightRepository regularLightService;
|
@Autowired private RegularLightRepository regularLightService;
|
||||||
|
@Autowired private SceneRepository sceneRepository;
|
||||||
|
@Autowired private StateRepository stateRepository;
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public List<RegularLight> findAll() {
|
public List<RegularLight> findAll() {
|
||||||
|
@ -65,4 +72,22 @@ public class RegularLightController {
|
||||||
public void delete(@PathVariable("id") long id) {
|
public void delete(@PathVariable("id") long id) {
|
||||||
regularLightService.deleteById(id);
|
regularLightService.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the full url should be: "/dimmableLight/{id}/state?sceneId={sceneId}
|
||||||
|
// however it is not necessary to specify the query in the mapping
|
||||||
|
@PostMapping("/{id}/state")
|
||||||
|
public void sceneBinding(
|
||||||
|
@PathVariable("id") long deviceId,
|
||||||
|
@RequestParam long sceneId,
|
||||||
|
final Principal principal)
|
||||||
|
throws NotFoundException {
|
||||||
|
RegularLight d =
|
||||||
|
regularLightService
|
||||||
|
.findByIdAndUsername(deviceId, principal.getName())
|
||||||
|
.orElseThrow(NotFoundException::new);
|
||||||
|
State<? extends OutputDevice> s = d.cloneState();
|
||||||
|
sceneRepository.findById(sceneId).orElseThrow(NotFoundException::new);
|
||||||
|
s.setSceneId(sceneId);
|
||||||
|
stateRepository.save(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,12 @@ 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.dto.SwitchableSaveRequest;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.OutputDevice;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.SceneRepository;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.SecurityCamera;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.SecurityCamera;
|
||||||
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.SecurityCameraRepository;
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.SecurityCameraRepository;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.State;
|
||||||
|
import ch.usi.inf.sa4.sanmarinoes.smarthut.models.StateRepository;
|
||||||
import java.security.Principal;
|
import java.security.Principal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
@ -18,6 +22,7 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -26,6 +31,8 @@ import org.springframework.web.bind.annotation.RestController;
|
||||||
public class SecurityCameraController {
|
public class SecurityCameraController {
|
||||||
|
|
||||||
@Autowired SecurityCameraRepository securityCameraService;
|
@Autowired SecurityCameraRepository securityCameraService;
|
||||||
|
@Autowired private SceneRepository sceneRepository;
|
||||||
|
@Autowired private StateRepository stateRepository;
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public List<SecurityCamera> findAll() {
|
public List<SecurityCamera> findAll() {
|
||||||
|
@ -65,4 +72,21 @@ public class SecurityCameraController {
|
||||||
public void delete(@PathVariable("id") long id) {
|
public void delete(@PathVariable("id") long id) {
|
||||||
securityCameraService.deleteById(id);
|
securityCameraService.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/{id}/state")
|
||||||
|
public void sceneBinding(
|
||||||
|
@PathVariable("id") long deviceId,
|
||||||
|
@RequestParam long sceneId,
|
||||||
|
final Principal principal)
|
||||||
|
throws NotFoundException {
|
||||||
|
|
||||||
|
SecurityCamera d =
|
||||||
|
securityCameraService
|
||||||
|
.findByIdAndUsername(deviceId, principal.getName())
|
||||||
|
.orElseThrow(NotFoundException::new);
|
||||||
|
State<? extends OutputDevice> s = d.cloneState();
|
||||||
|
sceneRepository.findById(sceneId).orElseThrow(NotFoundException::new);
|
||||||
|
s.setSceneId(sceneId);
|
||||||
|
stateRepository.save(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,8 @@ import org.springframework.web.bind.annotation.*;
|
||||||
public class SmartPlugController {
|
public class SmartPlugController {
|
||||||
|
|
||||||
@Autowired private SmartPlugRepository smartPlugRepository;
|
@Autowired private SmartPlugRepository smartPlugRepository;
|
||||||
|
@Autowired private SceneRepository sceneRepository;
|
||||||
|
@Autowired private StateRepository stateRepository;
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public List<SmartPlug> findAll() {
|
public List<SmartPlug> findAll() {
|
||||||
|
@ -69,4 +71,21 @@ public class SmartPlugController {
|
||||||
public void deleteById(@PathVariable("id") long id) {
|
public void deleteById(@PathVariable("id") long id) {
|
||||||
smartPlugRepository.deleteById(id);
|
smartPlugRepository.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/{id}/state")
|
||||||
|
public void sceneBinding(
|
||||||
|
@PathVariable("id") long deviceId,
|
||||||
|
@RequestParam long sceneId,
|
||||||
|
final Principal principal)
|
||||||
|
throws NotFoundException {
|
||||||
|
|
||||||
|
SmartPlug d =
|
||||||
|
smartPlugRepository
|
||||||
|
.findByIdAndUsername(deviceId, principal.getName())
|
||||||
|
.orElseThrow(NotFoundException::new);
|
||||||
|
State<? extends OutputDevice> s = d.cloneState();
|
||||||
|
sceneRepository.findById(sceneId).orElseThrow(NotFoundException::new);
|
||||||
|
s.setSceneId(sceneId);
|
||||||
|
stateRepository.save(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,9 @@ public class ThermostatController {
|
||||||
|
|
||||||
@Autowired private ThermostatService thermostatService;
|
@Autowired private ThermostatService thermostatService;
|
||||||
|
|
||||||
|
@Autowired private SceneRepository sceneRepository;
|
||||||
|
@Autowired private StateRepository stateRepository;
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public List<Thermostat> findAll(Principal user) {
|
public List<Thermostat> findAll(Principal user) {
|
||||||
return thermostatService.findAll(user.getName());
|
return thermostatService.findAll(user.getName());
|
||||||
|
@ -65,4 +68,21 @@ public class ThermostatController {
|
||||||
public void deleteById(@PathVariable("id") long id) {
|
public void deleteById(@PathVariable("id") long id) {
|
||||||
thermostatRepository.deleteById(id);
|
thermostatRepository.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/{id}/state")
|
||||||
|
public void sceneBinding(
|
||||||
|
@PathVariable("id") long deviceId,
|
||||||
|
@RequestParam long sceneId,
|
||||||
|
final Principal principal)
|
||||||
|
throws NotFoundException {
|
||||||
|
|
||||||
|
Thermostat d =
|
||||||
|
thermostatRepository
|
||||||
|
.findByIdAndUsername(deviceId, principal.getName())
|
||||||
|
.orElseThrow(NotFoundException::new);
|
||||||
|
State<? extends OutputDevice> s = d.cloneState();
|
||||||
|
sceneRepository.findById(sceneId).orElseThrow(NotFoundException::new);
|
||||||
|
s.setSceneId(sceneId);
|
||||||
|
stateRepository.save(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue