Homeautomation/src/main/java/de/ph87/homeautomation/device/DeviceReadService.java

39 lines
1.3 KiB
Java

package de.ph87.homeautomation.device;
import de.ph87.homeautomation.device.devices.*;
import de.ph87.homeautomation.property.PropertyService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
@Transactional
@RequiredArgsConstructor
public class DeviceReadService {
private final DeviceRepository deviceRepository;
private final PropertyService propertyService;
public List<DeviceDto> findAll() {
return deviceRepository.findAll().stream().map(this::toDto).collect(Collectors.toList());
}
private DeviceDto toDto(final Device device) {
if (device instanceof DeviceSwitch) {
final DeviceSwitch deviceSwitch = (DeviceSwitch) device;
return new DeviceSwitchDto(deviceSwitch, propertyService.readBoolean(deviceSwitch.getStatePropertyName()));
} else if (device instanceof DeviceNumber) {
final DeviceNumber deviceNumber = (DeviceNumber) device;
return new DeviceNumberDto(deviceNumber, propertyService.readNumber(deviceNumber.getValuePropertyName()));
}
throw new RuntimeException("Not imeplemented: toDto(" + device + ")");
}
}