2 * In Samsung Ukraine R&D Center (SRK under a contract between)
3 * LLC "Samsung Electronics Co", Ltd (Seoul, Republic of Korea)
4 * Copyright (C) 2018 Samsung Electronics Co., Ltd. All rights reserved.
6 package com.samsung.samserver.web.rest.service.device;
8 import com.samsung.samserver.web.rest.service.vm.DInfo;
10 import org.springframework.http.*;
11 import org.springframework.stereotype.Service;
12 import org.springframework.web.bind.annotation.*;
13 import com.samsung.samserver.domain.*;
14 import com.samsung.samserver.service.*;
15 import com.samsung.samserver.web.rest.errors.DeviceServiceError;
16 import javax.servlet.http.HttpServletRequest;
17 import javax.validation.Valid;
18 import java.time.Instant;
19 import java.util.Optional;
22 * REST service implementation for register device.
24 * @author <A HREF="mailto:m.dalakov@samsung.com">Mykhailo Dalakov</A>
28 public class RegisterDeviceRestService {
30 private final Logger log = LoggerFactory.getLogger(RegisterDeviceRestService.class);
32 private final DeviceTypeService deviceTypeService;
33 private final DeviceService deviceService;
35 public RegisterDeviceRestService(DeviceTypeService deviceTypeService, DeviceService deviceService) {
36 this.deviceTypeService = deviceTypeService;
37 this.deviceService = deviceService;
40 public ResponseEntity<String> registerDevice(@Valid @RequestBody DInfo dInfo, HttpServletRequest request) {
41 log.debug("request to register device : {}", dInfo);
43 String dtype = dInfo.getType().toLowerCase();
44 Optional<DeviceType> dt = deviceTypeService.findOne(dtype);
45 if (!dt.isPresent()) {
46 dt = Optional.of(new DeviceType(dtype,"new type: created sn "+dInfo.getSn()));
47 deviceTypeService.save(dt.get());
50 String duid = deviceService.getDeviceUID(dtype, dInfo.getModel(), dInfo.getSn());
51 deviceService.findOne(duid).ifPresent(d -> {throw new DeviceServiceError.DeviceAlreadyRegisteredException();});
53 Device result = deviceService.save(new Device()
56 .model(dInfo.getModel())
59 .osname(dInfo.getOsname())
60 .osver(dInfo.getOsver())
61 .ipaddr(request.getRemoteAddr())
63 return ResponseEntity.ok()
64 .headers(new HttpHeaders())
65 .body(result.getDuid());