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