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); } }