Home4/src/main/java/de/ph87/home/device/DeviceController.java

60 lines
2.3 KiB
Java

package de.ph87.home.device;
import de.ph87.home.property.PropertyNotFound;
import de.ph87.home.property.PropertyNotWritable;
import de.ph87.home.property.PropertyTypeMismatch;
import jakarta.annotation.Nullable;
import jakarta.servlet.http.HttpServletRequest;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import tuwien.auto.calimero.KNXFormatException;
import java.util.List;
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("Device")
public class DeviceController {
private final DeviceService deviceService;
@NonNull
@GetMapping("getByUuid/{id}")
@ExceptionHandler(KNXFormatException.class)
private DeviceDto getByUuid(@PathVariable final String id, @NonNull final HttpServletRequest request) {
log.debug("getByUuid: path={}", request.getServletPath());
return deviceService.getByUuidDto(id);
}
@NonNull
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
private List<DeviceDto> list(@RequestBody(required = false) @Nullable final DeviceFilter filter, @NonNull final HttpServletRequest request) throws PropertyTypeMismatch {
log.debug("list: path={} filter={}", request.getServletPath(), filter);
return deviceService.list(filter);
}
@NonNull
@GetMapping("get/{uuidOrSlug}")
private DeviceDto get(@PathVariable @NonNull final String uuidOrSlug, @NonNull final HttpServletRequest request) {
log.debug("get: path={}", request.getServletPath());
return deviceService.getByUuidOrSlugDto(uuidOrSlug);
}
@Nullable
@GetMapping("getState/{uuidOrSlug}")
private Boolean getState(@PathVariable @NonNull final String uuidOrSlug, @NonNull final HttpServletRequest request) throws PropertyTypeMismatch {
log.debug("getState: path={}", request.getServletPath());
return deviceService.getByUuidOrSlugDto(uuidOrSlug).getStateValue();
}
@GetMapping("setState/{uuidOrSlug}/{state}")
private void setState(@PathVariable @NonNull final String uuidOrSlug, @PathVariable final boolean state, @NonNull final HttpServletRequest request) throws PropertyNotFound, PropertyNotWritable, PropertyTypeMismatch {
log.debug("setState: path={}", request.getServletPath());
deviceService.setState(uuidOrSlug, state);
}
}