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.databind.ObjectMapper;
9 import com.samsung.samserver.domain.primary.Device;
10 import com.samsung.samserver.service.*;
11 import com.samsung.samserver.web.rest.errors.DeviceServiceError;
12 import com.samsung.samserver.web.rest.service.vm.UIAuditRulesUpdate;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
15 import org.springframework.beans.factory.annotation.Autowired;
16 import org.springframework.http.HttpHeaders;
17 import org.springframework.http.HttpStatus;
18 import org.springframework.http.MediaType;
19 import org.springframework.http.ResponseEntity;
20 import org.springframework.stereotype.Service;
21 import org.springframework.web.bind.annotation.RequestBody;
22 import org.springframework.web.bind.annotation.RequestParam;
24 import javax.validation.Valid;
25 import java.io.IOException;
28 import static com.samsung.samserver.web.rest.service.vm.UIAuditRules.UIAuditRule;
31 * REST service implementation for update device audit rules.
33 * @author <A HREF="mailto:m.dalakov@samsung.com">Mykhailo Dalakov</A>
37 public class UpdateDeviceAuditRulesRestService {
39 private final Logger log = LoggerFactory.getLogger(UpdateDeviceAuditRulesRestService.class);
42 private DeviceService deviceService;
45 private AuditRulesUpdateService auditRulesUpdateService;
48 private AuditRuleService auditRuleService;
50 public ResponseEntity<List<UIAuditRule>> updateDeviceAuditRules( @RequestParam(value = "id") Long id,
51 @Valid @RequestBody UIAuditRulesUpdate uiAuditRulesUpdate) throws IOException {
53 log.debug("UI request to update device audit rules: {} {}", id, uiAuditRulesUpdate);
55 Device device = deviceService.findOne(id);
57 throw new DeviceServiceError.DeviceNotFoundException();
60 Set<String> auditRuleKeys = auditRuleService.getKeys(device);
61 auditRuleKeys.removeAll(uiAuditRulesUpdate.getKeys());
62 for (String key : auditRuleKeys) {
63 auditRuleService.delete(device, key);
67 ObjectMapper mapper = new ObjectMapper();
68 List<UIAuditRule> resultAuditRulesUpdate = new ArrayList<>();
69 List<UIAuditRule> uiAuditRuleUpdateList = uiAuditRulesUpdate.getUiAuditRuleList();
70 for (UIAuditRule update : uiAuditRuleUpdateList) {
72 auditRuleService.update(device, update.getKey(), mapper.writeValueAsString(update));
73 resultAuditRulesUpdate.add(update);
75 } catch (IOException e) {
76 log.error("updateDeviceAuditRules: message: {} stacktrace: {}", e.getMessage(), e.getStackTrace());
80 auditRulesUpdateService.update(device, mapper.writeValueAsString(resultAuditRulesUpdate));
83 final HttpHeaders httpHeaders = new HttpHeaders();
84 httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
85 HttpStatus hs = c == uiAuditRuleUpdateList.size() ? HttpStatus.OK : (c!=0 ? HttpStatus.PARTIAL_CONTENT : HttpStatus.NO_CONTENT);
86 return new ResponseEntity<>(resultAuditRulesUpdate , httpHeaders, hs);