SECARSP-268 *Implement device policies state request mechanism: update data type...
[platform/core/security/suspicious-activity-monitor.git] / server / samserver / src / main / java / com / samsung / samserver / web / rest / service / ui / GetPoliciesRestService.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.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.*;
18 import org.slf4j.*;
19
20 import java.io.IOException;
21 import java.util.*;
22
23 import static com.samsung.samserver.web.rest.service.vm.UIPolicies.UIPolicy;
24
25 /**
26  * REST service implementation for get polices.
27  *
28  * @author <A HREF="mailto:m.dalakov@samsung.com">Mykhailo Dalakov</A>
29  * @version 1.0
30  */
31 @Service
32 public class GetPoliciesRestService {
33
34     private final Logger log = LoggerFactory.getLogger(GetPoliciesRestService.class);
35
36     @Autowired
37     private PolicyTypeService policyTypeService;
38
39     @Autowired
40     private DeviceService deviceService;
41
42     @Autowired
43     private PolicyService policyService;
44
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()) {
58                 try {
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());
63                 }
64             }
65         }
66         final HttpHeaders httpHeaders = new HttpHeaders();
67         httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
68         return new ResponseEntity<>(uiPoliciesList , httpHeaders, HttpStatus.OK);
69     }
70
71     public ResponseEntity<List<UIPolicies>> getDevicePolices(@RequestParam(value = "id") Long id){
72
73         log.debug("UI request to get device policies: device: {}", id);
74
75         Device device =  deviceService.findOne(id);
76         if (device==null) {
77             throw new DeviceServiceError.DeviceNotFoundException();
78         }
79
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();
84
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()) {
93                 try {
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());
98                 }
99             }
100         }
101         final HttpHeaders httpHeaders = new HttpHeaders();
102         httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
103         return new ResponseEntity<>(devicePolicies , httpHeaders, HttpStatus.OK);
104     }
105
106 }