property/get/{id}/value
This commit is contained in:
parent
277e321480
commit
1acd5506c6
@ -2,6 +2,7 @@ package de.ph87.homeautomation.channel;
|
||||
|
||||
import de.ph87.homeautomation.property.Property;
|
||||
import de.ph87.homeautomation.shared.Helpers;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -29,12 +30,11 @@ public class ChannelReader {
|
||||
return findByChannel(channel).orElseThrow(RuntimeException::new);
|
||||
}
|
||||
|
||||
public Double read(final Property property) {
|
||||
final Channel channel = property.getReadChannel();
|
||||
if (channel == null) {
|
||||
return null;
|
||||
}
|
||||
return getByChannel(channel).read(property.getReadChannel().getId());
|
||||
@NonNull
|
||||
public Optional<Double> read(@NonNull final Property property) {
|
||||
return Optional.ofNullable(property.getReadChannel())
|
||||
.map(this::getByChannel)
|
||||
.map(owner -> owner.read(property.getReadChannel().getId()));
|
||||
}
|
||||
|
||||
public ChannelDto toDtoAllowNull(final Channel channel) {
|
||||
|
||||
@ -44,6 +44,11 @@ public class PropertyController implements ISearchController {
|
||||
return propertyWriter.set(id, Property::setSlug, value == null || value.isEmpty() ? null : value);
|
||||
}
|
||||
|
||||
@PostMapping("get/{id}/value")
|
||||
public Double getValue(@PathVariable final long id) {
|
||||
return channelReader.read(propertyReader.getById(id)).orElse(null);
|
||||
}
|
||||
|
||||
@PostMapping("set/{id}/value")
|
||||
public PropertyDto setValue(@PathVariable final long id, @RequestBody final double value) {
|
||||
return propertyWriter.set(id, propertyWriter::writeToChannel, value);
|
||||
@ -66,18 +71,10 @@ public class PropertyController implements ISearchController {
|
||||
|
||||
@PostMapping("toggle/{id}")
|
||||
public PropertyDto setValue(@PathVariable final long id) {
|
||||
final boolean oldState = getOldStateBoolean(id, false);
|
||||
final boolean oldState = channelReader.read(propertyReader.getById(id)).map(v -> v > 0.0).orElse(false);
|
||||
return propertyWriter.set(id, propertyWriter::writeToChannel, oldState ? 0.0 : 1.0);
|
||||
}
|
||||
|
||||
private boolean getOldStateBoolean(final long id, final boolean orElse) {
|
||||
final Double oldValue = channelReader.read(propertyReader.getById(id));
|
||||
if (oldValue == null || oldValue.isNaN()) {
|
||||
return orElse;
|
||||
}
|
||||
return oldValue > 0.0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@GetMapping("searchById/{id}")
|
||||
public SearchResult searchById(@PathVariable final long id) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user