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;
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.*;
18 import java.time.Instant;
22 import static com.samsung.samserver.service.impl.GeoIPService.GeoIP;
25 * REST service implementation for get updates.
27 * @author <A HREF="mailto:m.dalakov@samsung.com">Mykhailo Dalakov</A>
31 public class GetDevicesUIRestService {
33 private final Logger log = LoggerFactory.getLogger(GetDevicesUIRestService.class);
36 private DeviceService deviceService;
39 private GeoIPService geoIPService;
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);
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);
65 @Getter @Setter @ToString
66 public static class UIDevice {
73 @JsonProperty("ctime")
74 private Instant ctime;
76 @JsonProperty("model")
79 @JsonProperty("ipaddr")
80 private String ipaddr;
85 @JsonProperty("descr")
88 @JsonProperty("locked")
89 private Integer locked;
92 private UIDeviceType uiDeviceType;
95 private UIDeviceOS uiDeviceOS;
101 @Getter @Setter @ToString
102 static class UIDeviceType {
104 @JsonProperty("name")
107 @JsonProperty("descr")
108 private String descr;
110 UIDeviceType(String name, String descr) {
116 @Getter @Setter @ToString
117 static class UIDeviceOS {
122 @JsonProperty("name")
123 private String osname;
125 @JsonProperty("version")
126 private String osver;
128 UIDeviceOS(String sw, String osname, String osver) {
130 this.osname = osname;