SECARSP-274 +Get device function
[platform/core/security/suspicious-activity-monitor.git] / server / samserver / src / main / java / com / samsung / samserver / web / rest / service / ui / UpdateDevicesRestService.java
1 /*
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.
5  */
6 package com.samsung.samserver.web.rest.service.ui;
7
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.*;
16 import org.slf4j.*;
17 import javax.validation.Valid;
18 import java.util.*;
19
20 /**
21  * REST service implementation for update device.
22  *
23  * @author <A HREF="mailto:m.dalakov@samsung.com">Mykhailo Dalakov</A>
24  * @version 1.0
25  */
26 @Service
27 public class UpdateDevicesRestService {
28
29     private final Logger log = LoggerFactory.getLogger(UpdateDevicesRestService.class);
30
31     @Autowired
32     private DeviceService deviceService;
33
34     @Autowired
35     private GeoIPService geoIPService;
36
37     @Autowired
38     private LockService lockService;
39
40     public ResponseEntity<List<UIDevice>> updateDevice(@Valid @RequestBody UIDeviceUpdate uiDeviceUpdate) {
41         log.debug("UI request to update devices : {}", uiDeviceUpdate);
42         int c = 0;
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());
47             if (device!=null) {
48                 device.setLocked(update.getLocked().toString());
49                 deviceService.save(device);
50                 uiDevices.add(UIDevice.builder()
51                     .id(device.getId())
52                     .duid(device.getDuid())
53                     .ctime(device.getCtime())
54                     .model(device.getModel())
55                     .ipaddr(device.getIpaddr())
56                     .sn(device.getSn())
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()))
62                     .build()
63                 );
64                 lockService.update(device);
65                 c++;
66             }
67         }
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);
72     }
73
74 }