4d4bbb37c073531f4f7b792d71c0a08b463ec183
[platform/core/security/suspicious-activity-monitor.git] / server / src / main / java / com / samsung / samserver / web / rest / service / GetDevicesUIRestService.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;
7
8 import com.fasterxml.jackson.annotation.JsonProperty;
9 import com.samsung.samserver.domain.Device;
10 import com.samsung.samserver.service.DeviceService;
11 import com.samsung.samserver.service.impl.GeoIPService;
12 import com.samsung.samserver.web.rest.util.PaginationUtil;
13 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.data.domain.*;
15 import org.springframework.stereotype.Service;
16 import org.springframework.http.*;
17 import org.slf4j.*;
18 import java.time.Instant;
19 import java.util.*;
20 import lombok.*;
21
22 import static com.samsung.samserver.service.impl.GeoIPService.GeoIP;
23
24 /**
25  * REST service implementation for get updates.
26  *
27  * @author <A HREF="mailto:m.dalakov@samsung.com">Mykhailo Dalakov</A>
28  * @version 1.0
29  */
30 @Service
31 public class GetDevicesUIRestService {
32
33     private final Logger log = LoggerFactory.getLogger(GetDevicesUIRestService.class);
34
35     @Autowired
36     private DeviceService deviceService;
37
38     @Autowired
39     private GeoIPService geoIPService;
40
41     public ResponseEntity<List<GetDevicesUIRestService.UIDevice>> getAllDevices(Pageable pageable) {
42         log.debug("UI request to get all devices"); //NOSONAR
43         Page<Device> devices = deviceService.findAll(pageable);
44         List<GetDevicesUIRestService.UIDevice> uiDevices = new ArrayList<>();
45         for (Device device: devices) {
46             UIDevice uiDevice = new UIDevice();
47             uiDevice.setId(device.getId());
48             uiDevice.setDuid(device.getDuid());
49             uiDevice.setCtime(device.getCtime());
50             uiDevice.setModel(device.getModel());
51             uiDevice.setIpaddr(device.getIpaddr());
52             uiDevice.setSn(device.getSn());
53             uiDevice.setDescr(device.getDescr());
54             uiDevice.setLocked(device.getLocked()!=null && !device.getLocked().equals("0") ? 1:0);
55             uiDevice.setUiDeviceOS(new UIDeviceOS(device.getSw(), device.getOsname(), device.getOsver()));
56             uiDevice.setUiDeviceType(new UIDeviceType (device.getDtype().getName(), device.getDtype().getDescr()));
57             uiDevice.setGeoIP(geoIPService.getGeo(device.getIpaddr()));
58             uiDevices.add(uiDevice);
59         }
60         Page<UIDevice> page = new PageImpl(uiDevices, pageable, devices.getTotalPages());
61         HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(page, "/dashboard/devices");
62         return new ResponseEntity<>(page.getContent() , headers, HttpStatus.OK);
63     }
64
65     @Getter @Setter @ToString
66     public static class UIDevice {
67
68         private Long id;
69
70         @JsonProperty("duid")
71         private String duid;
72
73         @JsonProperty("ctime")
74         private Instant ctime;
75
76         @JsonProperty("model")
77         private String model;
78
79         @JsonProperty("ipaddr")
80         private String ipaddr;
81
82         @JsonProperty("sn")
83         private String sn;
84
85         @JsonProperty("descr")
86         private String descr;
87
88         @JsonProperty("locked")
89         private Integer locked;
90
91         @JsonProperty("type")
92         private UIDeviceType uiDeviceType;
93
94         @JsonProperty("os")
95         private UIDeviceOS uiDeviceOS;
96
97         @JsonProperty("geo")
98         private GeoIP geoIP;
99     }
100
101     @Getter @Setter @ToString
102     static class UIDeviceType {
103
104         @JsonProperty("name")
105         private String name;
106
107         @JsonProperty("descr")
108         private String descr;
109
110         UIDeviceType(String name, String descr) {
111             this.name = name;
112             this.descr = descr;
113         }
114     }
115
116     @Getter @Setter @ToString
117     static class UIDeviceOS {
118
119         @JsonProperty("sw")
120         private String sw;
121
122         @JsonProperty("name")
123         private String osname;
124
125         @JsonProperty("version")
126         private String osver;
127
128         UIDeviceOS(String sw, String osname, String osver) {
129             this.sw = sw;
130             this.osname = osname;
131             this.osver = osver;
132         }
133     }
134
135 }