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.fasterxml.jackson.core.type.TypeReference;
9 import com.fasterxml.jackson.databind.ObjectMapper;
10 import com.samsung.samserver.domain.*;
11 import com.samsung.samserver.service.*;
12 import com.samsung.samserver.web.rest.errors.DeviceServiceError;
13 import com.samsung.samserver.web.rest.service.vm.UIPolicies;
14 import org.springframework.beans.factory.annotation.Autowired;
15 import org.springframework.web.bind.annotation.RequestParam;
16 import org.springframework.stereotype.Service;
17 import org.springframework.http.*;
20 import java.io.IOException;
23 import static com.samsung.samserver.web.rest.service.vm.UIPolicies.UIPolicy;
26 * REST service implementation for get polices.
28 * @author <A HREF="mailto:m.dalakov@samsung.com">Mykhailo Dalakov</A>
32 public class GetPoliciesRestService {
34 private final Logger log = LoggerFactory.getLogger(GetPoliciesRestService.class);
37 private PolicyTypeService policyTypeService;
40 private DeviceService deviceService;
43 private PolicyService policyService;
45 public ResponseEntity<List<UIPolicies>> getAllPolices(){
46 log.debug("UI request to get all policies"); //NOSONAR
47 Map<String, Map<String, PolicyType>> allAsGroupMap = policyTypeService.findAllAsGroupMap();
48 List<UIPolicies> uiPoliciesList = new ArrayList<>();
49 ObjectMapper mapper = new ObjectMapper();
50 for (String key: allAsGroupMap.keySet()) {
51 UIPolicies uiPolicies = new UIPolicies();
52 uiPolicies.setGroup(key);
53 List<UIPolicy> uiPolicyList = new ArrayList<>();
54 uiPolicies.setUiPolicyList(uiPolicyList);
55 uiPoliciesList.add(uiPolicies);
56 Map<String, PolicyType> map = allAsGroupMap.get(key);
57 for (PolicyType policyType: map.values()) {
59 UIPolicy uiPolicy = mapper.readValue(policyType.getDefval(), new TypeReference<UIPolicy>(){});
60 uiPolicyList.add(uiPolicy);
61 } catch (IOException e) {
62 log.error("getAllPolices: message: {} stacktrace: {}", e.getMessage(), e.getStackTrace());
66 final HttpHeaders httpHeaders = new HttpHeaders();
67 httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
68 return new ResponseEntity<>(uiPoliciesList , httpHeaders, HttpStatus.OK);
71 public ResponseEntity<List<UIPolicies>> getDevicePolices(@RequestParam(value = "id") Long id){
73 log.debug("UI request to get device policies: device: {}", id);
75 Device device = deviceService.findOne(id);
77 throw new DeviceServiceError.DeviceNotFoundException();
80 Map<String, PolicyType> policyTypeAllAsMap = policyTypeService.findAllAsMap();
81 Map<String, Map<String, Policy>> allAsGroupMap = policyService.findAllAsGroupMap(device);
82 List<UIPolicies> devicePolicies = new ArrayList<>();
83 ObjectMapper mapper = new ObjectMapper();
85 for (String key: allAsGroupMap.keySet()) {
86 UIPolicies uiPolicies = new UIPolicies();
87 uiPolicies.setGroup(key);
88 List<UIPolicy> uiPolicyList = new ArrayList<>();
89 uiPolicies.setUiPolicyList(uiPolicyList);
90 devicePolicies.add(uiPolicies);
91 Map<String, Policy> map = allAsGroupMap.get(key);
92 for (Policy policy: map.values()) {
94 UIPolicy uiPolicy = mapper.readValue(policy.getData(), new TypeReference<UIPolicy>(){});
95 uiPolicyList.add(uiPolicy.appendStaticFields(policyTypeAllAsMap));
96 } catch (IOException e) {
97 log.error("getDevicePolices: message: {} stacktrace: {}", e.getMessage(), e.getStackTrace());
101 final HttpHeaders httpHeaders = new HttpHeaders();
102 httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
103 return new ResponseEntity<>(devicePolicies , httpHeaders, HttpStatus.OK);