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.ui;
8 import com.samsung.samserver.domain.Device;
9 import com.samsung.samserver.service.*;
10 import com.samsung.samserver.service.impl.GeoIPService;
11 import com.samsung.samserver.web.rest.service.vm.*;
12 import org.springframework.stereotype.Service;
13 import org.springframework.web.bind.annotation.RequestBody;
14 import org.springframework.beans.factory.annotation.Autowired;
15 import org.springframework.http.*;
17 import javax.validation.Valid;
21 * REST service implementation for update device.
23 * @author <A HREF="mailto:m.dalakov@samsung.com">Mykhailo Dalakov</A>
27 public class UpdateDevicesRestService {
29 private final Logger log = LoggerFactory.getLogger(UpdateDevicesRestService.class);
32 private DeviceService deviceService;
35 private GeoIPService geoIPService;
38 private LockService lockService;
40 public ResponseEntity<List<UIDevice>> updateDevice(@Valid @RequestBody UIDeviceUpdate uiDeviceUpdate) {
41 log.debug("UI request to update devices : {}", uiDeviceUpdate);
43 ArrayList<UIDevice> uiDevices = new ArrayList<>();
44 List<UIDeviceUpdate.UIDeviceUpdateOne> updates = uiDeviceUpdate.getUpdates();
45 for (UIDeviceUpdate.UIDeviceUpdateOne update: updates) {
46 Device device = deviceService.findOne(update.getId());
48 device.setLocked(update.getLocked().toString());
49 deviceService.save(device);
50 uiDevices.add(UIDevice.builder()
52 .duid(device.getDuid())
53 .ctime(device.getCtime())
54 .model(device.getModel())
55 .ipaddr(device.getIpaddr())
57 .descr(device.getDescr())
58 .locked(device.getLocked()!=null && !device.getLocked().equals("0") ? 1:0)
59 .uiDeviceOS(new UIDevice.UIDeviceOS(device.getSw(), device.getOsname(), device.getOsver()))
60 .uiDeviceType(new UIDevice.UIDeviceType(device.getDtype().getName(), device.getDtype().getDescr()))
61 .geoIP(geoIPService.getGeo(device.getIpaddr()))
64 lockService.update(device);
68 final HttpHeaders httpHeaders = new HttpHeaders();
69 httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
70 HttpStatus hs = c == updates.size() ? HttpStatus.OK : (c!=0 ? HttpStatus.PARTIAL_CONTENT : HttpStatus.NO_CONTENT);
71 return new ResponseEntity<>(uiDevices , httpHeaders, hs);