From b82a12e88b62bd66537c38edc943e7a0f5f08bd5 Mon Sep 17 00:00:00 2001 From: Luke <lomah001@gold.ac.uk> Date: Mon, 13 May 2019 12:56:06 +0100 Subject: [PATCH] upd: completed device service integration --- .../controller/DeviceController.java | 33 ++++++++++++++ .../device/DeviceRepositoryCustom.java | 2 +- .../device/DeviceRepositoryImpl.java | 2 +- .../DeviceService.java} | 44 ++++++++++--------- 4 files changed, 58 insertions(+), 23 deletions(-) create mode 100644 src/main/java/com/backend/glowhouse/controller/DeviceController.java rename src/main/java/com/backend/glowhouse/{controller/DeviceDataController.java => service/DeviceService.java} (50%) diff --git a/src/main/java/com/backend/glowhouse/controller/DeviceController.java b/src/main/java/com/backend/glowhouse/controller/DeviceController.java new file mode 100644 index 0000000..3da090b --- /dev/null +++ b/src/main/java/com/backend/glowhouse/controller/DeviceController.java @@ -0,0 +1,33 @@ +package com.backend.glowhouse.controller; + +import com.backend.glowhouse.model.Device; +import com.backend.glowhouse.model.request.DeviceRegistrationRequest; +import com.backend.glowhouse.model.response.ApiResponse; +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.user.UserRepository; +import com.backend.glowhouse.service.DeviceService; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/device") +public class DeviceController { + @Autowired + private DeviceService deviceService; + + @PostMapping("/registerDevice") + @PreAuthorize("hasRole('USER')") + public String registerDevice(@RequestBody DeviceRegistrationRequest deviceRegistrationRequest) throws JsonProcessingException { + return deviceService.handleDeviceRegistration(deviceRegistrationRequest); + } + + @GetMapping("/getDeviceIdForUser") + public String getDeviceIdForUser(@RequestParam(value = "username") String username) throws JsonProcessingException { + return deviceService.getDeviceIdForUser(username); + } +} diff --git a/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryCustom.java b/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryCustom.java index 77ecc5c..ccb7459 100644 --- a/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryCustom.java +++ b/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryCustom.java @@ -3,5 +3,5 @@ package com.backend.glowhouse.repository.device; import com.backend.glowhouse.model.Device; public interface DeviceRepositoryCustom { - Device updateDeviceAssignUserAndSetRegisteredTrue(String deviceId, String username); + Device registerUserToDevice(String deviceId, String username); } diff --git a/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryImpl.java b/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryImpl.java index 731f4c0..511dbd3 100644 --- a/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryImpl.java +++ b/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryImpl.java @@ -19,7 +19,7 @@ public class DeviceRepositoryImpl implements DeviceRepositoryCustom { @Override //Method for updating device document when registered //Returns - public Device updateDeviceAssignUserAndSetRegisteredTrue(String deviceId, String username) { + public Device registerUserToDevice(String deviceId, String username) { //Query for existing device Query query = new Query(); query.addCriteria(Criteria.where("deviceId").is(deviceId)); diff --git a/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java b/src/main/java/com/backend/glowhouse/service/DeviceService.java similarity index 50% rename from src/main/java/com/backend/glowhouse/controller/DeviceDataController.java rename to src/main/java/com/backend/glowhouse/service/DeviceService.java index e823dae..6160661 100644 --- a/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java +++ b/src/main/java/com/backend/glowhouse/service/DeviceService.java @@ -1,56 +1,58 @@ -package com.backend.glowhouse.controller; +package com.backend.glowhouse.service; import com.backend.glowhouse.model.Device; -import com.backend.glowhouse.model.DeviceRegistrationRequest; +import com.backend.glowhouse.model.request.DeviceRegistrationRequest; +import com.backend.glowhouse.model.response.ApiResponse; 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.backend.glowhouse.repository.user.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 org.springframework.stereotype.Service; -import java.util.Optional; - -@RestController -@RequestMapping("/api/device") -public class DeviceDataController { +@Service +public class DeviceService { private DeviceRepository deviceRepository; private UserRepository userRepository; ObjectMapper mapper = new ObjectMapper(); @Autowired - public DeviceDataController(DeviceRepository deviceRepository, UserRepository userRepository) { + public DeviceService(DeviceRepository deviceRepository, UserRepository userRepository) { this.deviceRepository = deviceRepository; this.userRepository = userRepository; } - @PostMapping("/registerDevice") - @PreAuthorize("hasRole('USER')") - public String registerDevice(@RequestBody DeviceRegistrationRequest deviceRegistrationRequest) throws JsonProcessingException { + public String handleDeviceRegistration(DeviceRegistrationRequest deviceRegistrationRequest) throws JsonProcessingException { String deviceId = deviceRegistrationRequest.getDeviceId(); String username = deviceRegistrationRequest.getUsername(); - Device deviceToRegister = deviceRepository.updateDeviceAssignUserAndSetRegisteredTrue(deviceId, username); + Device deviceToRegister = deviceRepository.registerUserToDevice(deviceId, username); + + if (deviceToRegister == null) { + ApiResponse response = new ApiResponse(false, "The device does not exist"); + + return mapper.writeValueAsString(response); + } - userRepository.updateUserAssignDevice(username, deviceToRegister); + userRepository.registerDeviceToUser(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 { + public String getDeviceIdForUser(String username) throws JsonProcessingException { Device device = deviceRepository.findByRegisteredUser(username); DeviceIdResponse deviceIdResponse = new DeviceIdResponse(device.getDeviceId()); - return mapper.writeValueAsString(deviceIdResponse); + if (deviceIdResponse.getDeviceId() != null) { + return mapper.writeValueAsString(deviceIdResponse); + } else { + return null; + } } } -- GitLab