diff --git a/src/main/angular/src/app/api/property/property.service.ts b/src/main/angular/src/app/api/property/property.service.ts
index ef9b5f6..c80a58e 100644
--- a/src/main/angular/src/app/api/property/property.service.ts
+++ b/src/main/angular/src/app/api/property/property.service.ts
@@ -36,4 +36,8 @@ export class PropertyService implements ISearchService {
this.api.postReturnItem("property/set/" + property.id + "/" + key, value, Property.fromJson, next, error);
}
+ create(next: (item: Property) => void, error: (error: any) => void = NO_OP): void {
+ this.api.getItem("property/create/", Property.fromJson, next, error);
+ }
+
}
diff --git a/src/main/angular/src/app/pages/device-list/device-list.component.less b/src/main/angular/src/app/pages/device-list/device-list.component.less
index 299ef49..0142b11 100644
--- a/src/main/angular/src/app/pages/device-list/device-list.component.less
+++ b/src/main/angular/src/app/pages/device-list/device-list.component.less
@@ -69,8 +69,3 @@
.shutterUnknown {
background-color: gray;
}
-
-.config {
- clear: both;
- margin-bottom: 5px;
-}
diff --git a/src/main/angular/src/app/pages/property-list/property-list.component.html b/src/main/angular/src/app/pages/property-list/property-list.component.html
index 22b9a2a..39682ec 100644
--- a/src/main/angular/src/app/pages/property-list/property-list.component.html
+++ b/src/main/angular/src/app/pages/property-list/property-list.component.html
@@ -2,6 +2,10 @@
- |
+
+
+
+
| Bezeichnung |
diff --git a/src/main/angular/src/app/pages/property-list/property-list.component.ts b/src/main/angular/src/app/pages/property-list/property-list.component.ts
index c495d77..487a652 100644
--- a/src/main/angular/src/app/pages/property-list/property-list.component.ts
+++ b/src/main/angular/src/app/pages/property-list/property-list.component.ts
@@ -73,7 +73,11 @@ export class PropertyListComponent implements OnInit {
}
set(property: Property, key: string, value: any): void {
+ this.propertyService.set(property, key, value, property => this.updateProperty(property, true));
+ }
+ create(): void {
+ this.propertyService.create(property => this.updateProperty(property, true));
}
}
diff --git a/src/main/angular/src/styles.less b/src/main/angular/src/styles.less
index 307568b..6f9a838 100644
--- a/src/main/angular/src/styles.less
+++ b/src/main/angular/src/styles.less
@@ -106,3 +106,7 @@ table.vertical {
}
}
+.config {
+ clear: both;
+ margin-bottom: 5px;
+}
diff --git a/src/main/java/de/ph87/homeautomation/channel/ChannelRepository.java b/src/main/java/de/ph87/homeautomation/channel/ChannelRepository.java
index 8049107..e9947dc 100644
--- a/src/main/java/de/ph87/homeautomation/channel/ChannelRepository.java
+++ b/src/main/java/de/ph87/homeautomation/channel/ChannelRepository.java
@@ -4,4 +4,6 @@ import org.springframework.data.repository.CrudRepository;
public interface ChannelRepository extends CrudRepository {
+ Channel getById(long id);
+
}
diff --git a/src/main/java/de/ph87/homeautomation/channel/ChannelService.java b/src/main/java/de/ph87/homeautomation/channel/ChannelService.java
index fb4dba5..7c85fca 100644
--- a/src/main/java/de/ph87/homeautomation/channel/ChannelService.java
+++ b/src/main/java/de/ph87/homeautomation/channel/ChannelService.java
@@ -60,4 +60,8 @@ public class ChannelService {
return channelRepository.findById(id).map(this::toDto);
}
+ public Channel getById(final long id) {
+ return channelRepository.getById(id);
+ }
+
}
diff --git a/src/main/java/de/ph87/homeautomation/device/DeviceController.java b/src/main/java/de/ph87/homeautomation/device/DeviceController.java
index 5f20857..81d2d63 100644
--- a/src/main/java/de/ph87/homeautomation/device/DeviceController.java
+++ b/src/main/java/de/ph87/homeautomation/device/DeviceController.java
@@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
-import static de.ph87.homeautomation.shared.Helpers.mapIfNotNull;
+import static de.ph87.homeautomation.shared.Helpers.mapOrNull;
@RestController
@RequestMapping("device")
@@ -53,22 +53,22 @@ public class DeviceController {
@PostMapping("set/{id}/DeviceSwitch/stateProperty")
public DeviceDto setDeviceSwitchStateProperty(@PathVariable final long id, @RequestBody(required = false) final Long propertyId) {
- return deviceWriteService.setDeviceSwitch(id, (device, v) -> device.setStateProperty(mapIfNotNull(v, propertyReadService::getById)), propertyId);
+ return deviceWriteService.setDeviceSwitch(id, (device, v) -> device.setStateProperty(mapOrNull(v, propertyReadService::getById)), propertyId);
}
@PostMapping("set/{id}/DeviceStateScene/stateProperty")
public DeviceDto setDeviceStateSceneStateProperty(@PathVariable final long id, @RequestBody(required = false) final Long propertyId) {
- return deviceWriteService.setDeviceStateScene(id, (device, v) -> device.setStateProperty(mapIfNotNull(v, propertyReadService::getById)), propertyId);
+ return deviceWriteService.setDeviceStateScene(id, (device, v) -> device.setStateProperty(mapOrNull(v, propertyReadService::getById)), propertyId);
}
@PostMapping("set/{id}/DeviceStateScene/sceneProperty")
public DeviceDto setDeviceStateSceneSceneProperty(@PathVariable final long id, @RequestBody(required = false) final Long propertyId) {
- return deviceWriteService.setDeviceStateScene(id, (device, v) -> device.setSceneProperty(mapIfNotNull(v, propertyReadService::getById)), propertyId);
+ return deviceWriteService.setDeviceStateScene(id, (device, v) -> device.setSceneProperty(mapOrNull(v, propertyReadService::getById)), propertyId);
}
@PostMapping("set/{id}/DeviceShutter/positionProperty")
public DeviceDto setDeviceShutterPositionProperty(@PathVariable final long id, @RequestBody(required = false) final Long propertyId) {
- return deviceWriteService.setDeviceShutter(id, (device, v) -> device.setPositionProperty(mapIfNotNull(v, propertyReadService::getById)), propertyId);
+ return deviceWriteService.setDeviceShutter(id, (device, v) -> device.setPositionProperty(mapOrNull(v, propertyReadService::getById)), propertyId);
}
}
diff --git a/src/main/java/de/ph87/homeautomation/device/DeviceReadService.java b/src/main/java/de/ph87/homeautomation/device/DeviceReadService.java
index b5bb882..d074b1c 100644
--- a/src/main/java/de/ph87/homeautomation/device/DeviceReadService.java
+++ b/src/main/java/de/ph87/homeautomation/device/DeviceReadService.java
@@ -11,7 +11,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
-import static de.ph87.homeautomation.shared.Helpers.mapIfNotNull;
+import static de.ph87.homeautomation.shared.Helpers.mapOrNull;
@Slf4j
@Service
@@ -30,13 +30,13 @@ public class DeviceReadService {
public DeviceDto toDto(final Device device) {
if (device instanceof DeviceSwitch) {
final DeviceSwitch deviceSwitch = (DeviceSwitch) device;
- return new DeviceSwitchDto(deviceSwitch, mapIfNotNull(deviceSwitch.getStateProperty(), propertyMapper::toDto));
+ return new DeviceSwitchDto(deviceSwitch, mapOrNull(deviceSwitch.getStateProperty(), propertyMapper::toDto));
} else if (device instanceof DeviceStateScene) {
final DeviceStateScene deviceStateScene = (DeviceStateScene) device;
- return new DeviceStateSceneDto(deviceStateScene, mapIfNotNull(deviceStateScene.getStateProperty(), propertyMapper::toDto), mapIfNotNull(deviceStateScene.getSceneProperty(), propertyMapper::toDto));
+ return new DeviceStateSceneDto(deviceStateScene, mapOrNull(deviceStateScene.getStateProperty(), propertyMapper::toDto), mapOrNull(deviceStateScene.getSceneProperty(), propertyMapper::toDto));
} else if (device instanceof DeviceShutter) {
final DeviceShutter deviceShutter = (DeviceShutter) device;
- return new DeviceShutterDto(deviceShutter, mapIfNotNull(deviceShutter.getPositionProperty(), propertyMapper::toDto));
+ return new DeviceShutterDto(deviceShutter, mapOrNull(deviceShutter.getPositionProperty(), propertyMapper::toDto));
}
throw new RuntimeException();
}
diff --git a/src/main/java/de/ph87/homeautomation/property/PropertyController.java b/src/main/java/de/ph87/homeautomation/property/PropertyController.java
index 9e0f0e3..15a97ef 100644
--- a/src/main/java/de/ph87/homeautomation/property/PropertyController.java
+++ b/src/main/java/de/ph87/homeautomation/property/PropertyController.java
@@ -1,5 +1,6 @@
package de.ph87.homeautomation.property;
+import de.ph87.homeautomation.channel.ChannelService;
import de.ph87.homeautomation.shared.ISearchController;
import de.ph87.homeautomation.shared.SearchResult;
import lombok.RequiredArgsConstructor;
@@ -17,6 +18,13 @@ public class PropertyController implements ISearchController {
private final PropertyReadService propertyReadService;
+ private final ChannelService channelService;
+
+ @GetMapping("create")
+ public PropertyDto create() {
+ return propertyWriteService.create();
+ }
+
@GetMapping("findAll")
public List findAll() {
return propertyReadService.findAllDto();
@@ -37,6 +45,16 @@ public class PropertyController implements ISearchController {
return propertyWriteService.set(id, propertyWriteService::write, value);
}
+ @PostMapping("set/{id}/readChannel")
+ public PropertyDto setReadChannel(@PathVariable final long id, @RequestBody(required = false) final Long channelId) {
+ return propertyWriteService.set(id, Property::setReadChannel, channelService.getById(channelId));
+ }
+
+ @PostMapping("set/{id}/writeChannel")
+ public PropertyDto setWriteChannel(@PathVariable final long id, @RequestBody(required = false) final Long channelId) {
+ return propertyWriteService.set(id, Property::setWriteChannel, channelService.getById(channelId));
+ }
+
@Override
@GetMapping("getById/{id}")
public SearchResult getById(@PathVariable final long id) {
diff --git a/src/main/java/de/ph87/homeautomation/property/PropertyWriteService.java b/src/main/java/de/ph87/homeautomation/property/PropertyWriteService.java
index b6210d8..d82f022 100644
--- a/src/main/java/de/ph87/homeautomation/property/PropertyWriteService.java
+++ b/src/main/java/de/ph87/homeautomation/property/PropertyWriteService.java
@@ -47,9 +47,10 @@ public class PropertyWriteService {
}
public PropertyDto create() {
- final Property entry = new Property();
- entry.setTitle(generateUnusedTitle());
- return publish(propertyRepository.save(entry), true);
+ final Property property = new Property();
+ property.setTitle(generateUnusedTitle());
+ property.setType(PropertyType.BOOLEAN);
+ return publish(propertyRepository.save(property), true);
}
private String generateUnusedTitle() {
diff --git a/src/main/java/de/ph87/homeautomation/schedule/ScheduleController.java b/src/main/java/de/ph87/homeautomation/schedule/ScheduleController.java
index d99a896..d402750 100644
--- a/src/main/java/de/ph87/homeautomation/schedule/ScheduleController.java
+++ b/src/main/java/de/ph87/homeautomation/schedule/ScheduleController.java
@@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
-import static de.ph87.homeautomation.shared.Helpers.mapIfNotNull;
+import static de.ph87.homeautomation.shared.Helpers.mapOrNull;
@RestController
@RequestMapping("schedule")
@@ -51,7 +51,7 @@ public class ScheduleController {
@PostMapping("set/{id}/property")
public ScheduleDto setPropertyName(@PathVariable final long id, @RequestBody(required = false) final Long propertyId) {
- return scheduleWriteService.set(id, (schedule, v) -> schedule.setProperty(mapIfNotNull(v, propertyReadService::getById)), propertyId);
+ return scheduleWriteService.set(id, Schedule::setProperty, mapOrNull(propertyId, propertyReadService::getById));
}
}
diff --git a/src/main/java/de/ph87/homeautomation/schedule/ScheduleMapper.java b/src/main/java/de/ph87/homeautomation/schedule/ScheduleMapper.java
index 835600c..ccdcd01 100644
--- a/src/main/java/de/ph87/homeautomation/schedule/ScheduleMapper.java
+++ b/src/main/java/de/ph87/homeautomation/schedule/ScheduleMapper.java
@@ -6,7 +6,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import static de.ph87.homeautomation.shared.Helpers.mapIfNotNull;
+import static de.ph87.homeautomation.shared.Helpers.mapOrNull;
@Slf4j
@Service
@@ -17,7 +17,7 @@ public class ScheduleMapper {
private final PropertyMapper propertyMapper;
public ScheduleDto toDto(final Schedule schedule) {
- return new ScheduleDto(schedule, mapIfNotNull(schedule.getProperty(), propertyMapper::toDto));
+ return new ScheduleDto(schedule, mapOrNull(schedule.getProperty(), propertyMapper::toDto));
}
}
diff --git a/src/main/java/de/ph87/homeautomation/shared/Helpers.java b/src/main/java/de/ph87/homeautomation/shared/Helpers.java
index e83a145..25ce171 100644
--- a/src/main/java/de/ph87/homeautomation/shared/Helpers.java
+++ b/src/main/java/de/ph87/homeautomation/shared/Helpers.java
@@ -21,7 +21,7 @@ public class Helpers {
return value;
}
- public static U mapIfNotNull(final T value, final Function map) {
+ public static U mapOrNull(final T value, final Function map) {
if (value == null) {
return null;
}