From 1a6d75b50d98f91164dc9609493ccf9ba7ed0dc6 Mon Sep 17 00:00:00 2001 From: Luke <lomah001@gold.ac.uk> Date: Mon, 22 Apr 2019 12:01:00 +0100 Subject: [PATCH] refactor: moved some packages --- .../AWS/sns/SnsNotificationSender.java | 18 ++++++ .../controller/DeviceDataController.java | 56 +++++++++++++++++++ .../model/response/DeviceIdResponse.java | 17 ++++++ .../response/DeviceRegistrationResponse.java | 17 ++++++ 4 files changed, 108 insertions(+) create mode 100644 src/main/java/com/backend/glowhouse/AWS/sns/SnsNotificationSender.java create mode 100644 src/main/java/com/backend/glowhouse/controller/DeviceDataController.java create mode 100644 src/main/java/com/backend/glowhouse/model/response/DeviceIdResponse.java create mode 100644 src/main/java/com/backend/glowhouse/model/response/DeviceRegistrationResponse.java diff --git a/src/main/java/com/backend/glowhouse/AWS/sns/SnsNotificationSender.java b/src/main/java/com/backend/glowhouse/AWS/sns/SnsNotificationSender.java new file mode 100644 index 0000000..ac5a902 --- /dev/null +++ b/src/main/java/com/backend/glowhouse/AWS/sns/SnsNotificationSender.java @@ -0,0 +1,18 @@ +package com.backend.glowhouse.aws.sns; + +import com.amazonaws.services.sns.AmazonSNS; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.aws.messaging.core.NotificationMessagingTemplate; + +public class SnsNotificationSender { + private final NotificationMessagingTemplate notificationMessagingTemplate; + + @Autowired + public SnsNotificationSender(AmazonSNS amazonSns) { + this.notificationMessagingTemplate = new NotificationMessagingTemplate(amazonSns); + } + + public void sendIOCommandForLight(String subject, String message) { + this.notificationMessagingTemplate.sendNotification("awsiot_to_localgateway", message, subject); + } +} \ No newline at end of file diff --git a/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java b/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java new file mode 100644 index 0000000..e823dae --- /dev/null +++ b/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java @@ -0,0 +1,56 @@ +package com.backend.glowhouse.controller; + +import com.backend.glowhouse.model.Device; +import com.backend.glowhouse.model.DeviceRegistrationRequest; +import com.backend.glowhouse.model.response.DeviceIdResponse; +import com.backend.glowhouse.model.response.DeviceRegistrationResponse; +import com.backend.glowhouse.repository.device.DeviceRepository; +import com.backend.glowhouse.repository.UserRepository; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.Optional; + +@RestController +@RequestMapping("/api/device") +public class DeviceDataController { + private DeviceRepository deviceRepository; + private UserRepository userRepository; + + ObjectMapper mapper = new ObjectMapper(); + + @Autowired + public DeviceDataController(DeviceRepository deviceRepository, UserRepository userRepository) { + this.deviceRepository = deviceRepository; + this.userRepository = userRepository; + } + + @PostMapping("/registerDevice") + @PreAuthorize("hasRole('USER')") + public String registerDevice(@RequestBody DeviceRegistrationRequest deviceRegistrationRequest) throws JsonProcessingException { + String deviceId = deviceRegistrationRequest.getDeviceId(); + String username = deviceRegistrationRequest.getUsername(); + + Device deviceToRegister = deviceRepository.updateDeviceAssignUserAndSetRegisteredTrue(deviceId, username); + + userRepository.updateUserAssignDevice(username, deviceToRegister); + + DeviceRegistrationResponse deviceRegistrationResponse = new DeviceRegistrationResponse(deviceToRegister.getDeviceId()); + + return mapper.writeValueAsString(deviceRegistrationResponse); + } + + @GetMapping("/getDeviceIdForUser") + @PreAuthorize("hasRole('USER')") + public String getDeviceIdForUser(@RequestParam(value = "username") String username) throws JsonProcessingException { + Device device = deviceRepository.findByRegisteredUser(username); + + DeviceIdResponse deviceIdResponse = new DeviceIdResponse(device.getDeviceId()); + + return mapper.writeValueAsString(deviceIdResponse); + } +} diff --git a/src/main/java/com/backend/glowhouse/model/response/DeviceIdResponse.java b/src/main/java/com/backend/glowhouse/model/response/DeviceIdResponse.java new file mode 100644 index 0000000..6cfd493 --- /dev/null +++ b/src/main/java/com/backend/glowhouse/model/response/DeviceIdResponse.java @@ -0,0 +1,17 @@ +package com.backend.glowhouse.model.response; + +public class DeviceIdResponse { + String deviceId; + + public DeviceIdResponse(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } +} diff --git a/src/main/java/com/backend/glowhouse/model/response/DeviceRegistrationResponse.java b/src/main/java/com/backend/glowhouse/model/response/DeviceRegistrationResponse.java new file mode 100644 index 0000000..b5d4a9b --- /dev/null +++ b/src/main/java/com/backend/glowhouse/model/response/DeviceRegistrationResponse.java @@ -0,0 +1,17 @@ +package com.backend.glowhouse.model.response; + +public class DeviceRegistrationResponse { + private String deviceId; + + public DeviceRegistrationResponse(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } +} -- GitLab