SECARSP-306 *Implement AuditTrail APIs for Dashboard: delete old device audit rules...
authorm.dalakov <m.dalakov@samsung.com>
Wed, 11 Apr 2018 12:58:54 +0000 (15:58 +0300)
committerm.dalakov <m.dalakov@samsung.com>
Wed, 11 Apr 2018 12:59:34 +0000 (15:59 +0300)
server/samserver/src/main/java/com/samsung/samserver/repository/primary/AuditRuleRepository.java
server/samserver/src/main/java/com/samsung/samserver/service/AuditRuleService.java
server/samserver/src/main/java/com/samsung/samserver/service/impl/AuditRuleServiceImpl.java
server/samserver/src/main/java/com/samsung/samserver/web/rest/service/ui/UpdateDeviceAuditRulesRestService.java
server/samserver/src/main/java/com/samsung/samserver/web/rest/service/vm/UIAuditRulesUpdate.java

index 1f14542..339131e 100644 (file)
@@ -25,4 +25,6 @@ public interface AuditRuleRepository extends JpaRepository<AuditRule, Long> {
 
     List<AuditRule> findByDevice(Device device);
 
+    void deleteByDeviceAndKey(Device device, String key);
+
 }
index 3951732..05e3cbb 100644 (file)
@@ -8,7 +8,7 @@ package com.samsung.samserver.service;
 import com.samsung.samserver.domain.primary.AuditRule;
 import com.samsung.samserver.domain.primary.Device;
 
-import java.util.List;
+import java.util.*;
 
 /**
  * Service Interface for managing AuditRule.
@@ -61,6 +61,23 @@ public interface AuditRuleService {
      *
      * @param device the Device entity
      * @return the list of AuditRule entities
-     */    List<AuditRule> find(Device device);
+     */
+    List<AuditRule> find(Device device);
+
+    /**
+     * Get the set AuditRule key by Device.
+     *
+     * @param device the Device entity
+     * @return the set of AuditRule key
+     */
+    Set<String> getKeys(Device device);
+
+    /**
+     * Delete a device auditRule.
+     *
+     * @param device the Device entity
+     * @param key the AuditRule key
+     */
+    void delete(Device device, String key);
 
 }
index bfa7beb..1a6b52f 100644 (file)
@@ -15,8 +15,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.Instant;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * Service Implementation for managing AuditRule.
@@ -120,4 +119,33 @@ public class AuditRuleServiceImpl implements AuditRuleService {
         return auditRuleRepository.findByDevice(device);
     }
 
+    /**
+     * Get the set AuditRule key by Device.
+     *
+     * @param device the Device entity
+     * @return the set of AuditRule key
+     */
+    @Override
+    public Set<String> getKeys(Device device){
+        log.debug("Request to get set AuditRule key by device: {}", device.getId());
+        Set<String> result = new HashSet<>();
+        List<AuditRule> auditRuleList = auditRuleRepository.findByDevice(device);
+        for (AuditRule auditRule: auditRuleList) {
+            result.add(auditRule.getKey());
+        }
+        return result;
+    }
+
+    /**
+     * Delete a device auditRule.
+     *
+     * @param device the Device entity
+     * @param key the AuditRule key
+     */
+    @Override
+    public void delete(Device device, String key) {
+        log.debug("Request to delete AuditRule: device: {}, key: {}", device.getId(), key);
+        auditRuleRepository.deleteByDeviceAndKey(device, key);
+    }
+
 }
\ No newline at end of file
index 879a84f..f8dbf8a 100644 (file)
@@ -23,8 +23,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.validation.Valid;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
 import static com.samsung.samserver.web.rest.service.vm.UIAuditRules.UIAuditRule;
 
@@ -58,6 +57,12 @@ public class UpdateDeviceAuditRulesRestService {
             throw new DeviceServiceError.DeviceNotFoundException();
         }
 
+        Set<String> auditRuleKeys = auditRuleService.getKeys(device);
+        auditRuleKeys.removeAll(uiAuditRulesUpdate.getKeys());
+        for (String key : auditRuleKeys) {
+            auditRuleService.delete(device, key);
+        }
+
         int c = 0;
         ObjectMapper mapper = new ObjectMapper();
         List<UIAuditRule> resultAuditRulesUpdate = new ArrayList<>();
index 3b0028c..d4be626 100644 (file)
@@ -8,7 +8,7 @@ package com.samsung.samserver.web.rest.service.vm;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
-import java.util.List;
+import java.util.*;
 import lombok.*;
 
 import static com.samsung.samserver.web.rest.service.vm.UIAuditRules.*;
@@ -28,4 +28,12 @@ public class UIAuditRulesUpdate {
     @JsonProperty("rules")
     private List<UIAuditRule> uiAuditRuleList;
 
+    public Set<String> getKeys(){
+        Set<String> result = new HashSet<>();
+        for (UIAuditRule uiAuditRule: uiAuditRuleList) {
+            result.add(uiAuditRule.getKey());
+        }
+        return result;
+    }
+
 }
\ No newline at end of file