From adba3aa18cdf0e30a93e2985b9fb313f06aadda7 Mon Sep 17 00:00:00 2001 From: serega6531 Date: Mon, 13 May 2019 00:38:45 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BF=D0=B0=D1=82=D1=82=D0=B5=D1=80=D0=BD=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/ru/serega6531/packmate/PcapWorker.java | 2 +- .../java/ru/serega6531/packmate/model/Stream.java | 2 +- .../packmate/service/PatternService.java | 15 ++++++++++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/serega6531/packmate/PcapWorker.java b/src/main/java/ru/serega6531/packmate/PcapWorker.java index f5c0a4d..112eac8 100644 --- a/src/main/java/ru/serega6531/packmate/PcapWorker.java +++ b/src/main/java/ru/serega6531/packmate/PcapWorker.java @@ -45,7 +45,7 @@ public class PcapWorker { private final Map> unfinishedStreams = new HashMap<>(); - // в следующих мапах в листах srcIp соответствующего пакета + // в следующих мапах в сетах srcIp соответствующего пакета private final Map> fins = new HashMap<>(); private final Map> acks = new HashMap<>(); diff --git a/src/main/java/ru/serega6531/packmate/model/Stream.java b/src/main/java/ru/serega6531/packmate/model/Stream.java index 975b745..8c5bb65 100644 --- a/src/main/java/ru/serega6531/packmate/model/Stream.java +++ b/src/main/java/ru/serega6531/packmate/model/Stream.java @@ -40,7 +40,7 @@ public class Stream { private long endTimestamp; - @ManyToMany(cascade = CascadeType.ALL) + @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) private List foundPatterns; private boolean favorite; diff --git a/src/main/java/ru/serega6531/packmate/service/PatternService.java b/src/main/java/ru/serega6531/packmate/service/PatternService.java index ef3cf3a..0e52d72 100644 --- a/src/main/java/ru/serega6531/packmate/service/PatternService.java +++ b/src/main/java/ru/serega6531/packmate/service/PatternService.java @@ -3,8 +3,11 @@ package ru.serega6531.packmate.service; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import ru.serega6531.packmate.model.Pattern; +import ru.serega6531.packmate.model.Stream; import ru.serega6531.packmate.repository.PatternRepository; import java.util.HashMap; @@ -18,12 +21,14 @@ import java.util.stream.Collectors; public class PatternService { private final PatternRepository repository; + private final StreamService streamService; private Map compiledPatterns = new HashMap<>(); @Autowired - public PatternService(PatternRepository repository) { + public PatternService(PatternRepository repository, @Lazy StreamService streamService) { this.repository = repository; + this.streamService = streamService; } public List findAll() { @@ -47,11 +52,19 @@ public class PatternService { } } + @Transactional public void deleteById(int id) { final Optional optional = repository.findById(id); if(optional.isPresent()) { final Pattern pattern = optional.get(); log.info("Удален паттерн {} со значением {}", pattern.getName(), pattern.getValue()); + + for (Stream stream : pattern.getMatchedStreams()) { + stream.getFoundPatterns().remove(pattern); + streamService.save(stream); + } + + pattern.getMatchedStreams().clear(); repository.delete(pattern); } }