code clean: Device, DeviceService, DeviceController

This commit is contained in:
Patrick Haßel 2024-11-21 14:05:36 +01:00
parent e3d5523ac7
commit 8e3e763e59
5 changed files with 15 additions and 15 deletions

View File

@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.ResponseStatus;
public class EntityNotFound extends RuntimeException {
public EntityNotFound(@NonNull final String key, @NonNull final Object value) {
super("Device not found: %s=%s".formatted(key, value));
super("Entity not found: %s=%s".formatted(key, value));
}
}

View File

@ -28,12 +28,12 @@ public class Device {
@Setter
@NonNull
@Column(nullable = false)
private String stateProperty;
private String statePropertyId;
public Device(@NonNull final String name, @NonNull final String slug, @NonNull final String stateProperty) {
public Device(@NonNull final String name, @NonNull final String slug, @NonNull final String statePropertyId) {
this.name = name;
this.slug = slug;
this.stateProperty = stateProperty;
this.statePropertyId = statePropertyId;
}
}

View File

@ -40,14 +40,14 @@ public class DeviceController {
@GetMapping("get/{uuidOrSlug}")
private DeviceDto get(@PathVariable @NonNull final String uuidOrSlug, @NonNull final HttpServletRequest request) {
log.debug("get: path={}", request.getServletPath());
return deviceService.toDto(uuidOrSlug);
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.toDto(uuidOrSlug).getStateValue();
return deviceService.getByUuidOrSlugDto(uuidOrSlug).getStateValue();
}
@GetMapping("setState/{uuidOrSlug}/{state}")

View File

@ -36,7 +36,7 @@ public class DeviceDto implements IWebSocketMessage {
this.uuid = device.getUuid();
this.name = device.getName();
this.slug = device.getSlug();
this.statePropertyId = device.getStateProperty();
this.statePropertyId = device.getStatePropertyId();
this.stateProperty = stateProperty;
}

View File

@ -34,25 +34,25 @@ public class DeviceService {
public void setState(@NonNull final String uuidOrSlug, final boolean state) throws PropertyNotFound, PropertyNotWritable, PropertyTypeMismatch {
log.debug("setState: uuidOrSlug={}, state={}", uuidOrSlug, state);
final Device device = getByUuidOrSlug(uuidOrSlug);
propertyService.write(device.getStateProperty(), state, Boolean.class);
propertyService.write(device.getStatePropertyId(), state, Boolean.class);
}
@NonNull
public DeviceDto toDto(final @NonNull String uuidOrSlug) {
public DeviceDto getByUuidOrSlugDto(final @NonNull String uuidOrSlug) {
return toDto(getByUuidOrSlug(uuidOrSlug));
}
@NonNull
public DeviceDto toDto(@NonNull final Device device) {
final PropertyDto<Boolean> state = propertyService.dtoByIdAndTypeOrNull(device.getStateProperty(), Boolean.class);
return new DeviceDto(device, state);
}
@NonNull
private Device getByUuidOrSlug(@NonNull final String uuidOrSlug) {
return deviceRepository.findByUuidOrSlug(uuidOrSlug, uuidOrSlug).orElseThrow(() -> new EntityNotFound("uuidOrSlug", uuidOrSlug));
}
@NonNull
public DeviceDto toDto(@NonNull final Device device) {
final PropertyDto<Boolean> state = propertyService.dtoByIdAndTypeOrNull(device.getStatePropertyId(), Boolean.class);
return new DeviceDto(device, state);
}
@NonNull
private Device getByUuid(@NonNull final String uuid) {
return deviceRepository.findById(uuid).orElseThrow(() -> new EntityNotFound("uuid", uuid));