From 8d5b6072da2a40a6039bad82584c10313d65fd1e Mon Sep 17 00:00:00 2001 From: serega6531 Date: Mon, 23 Sep 2019 18:00:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BD=D0=B0=D0=BF=D1=80=D0=B0=D0=B2=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=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/serega6531/packmate/model/Pattern.java | 2 ++ src/main/java/ru/serega6531/packmate/model/PatternType.java | 5 +++++ .../serega6531/packmate/repository/PatternRepository.java | 6 ++++++ .../java/ru/serega6531/packmate/service/PatternService.java | 5 +++-- .../java/ru/serega6531/packmate/service/StreamService.java | 2 +- 5 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 src/main/java/ru/serega6531/packmate/model/PatternType.java diff --git a/src/main/java/ru/serega6531/packmate/model/Pattern.java b/src/main/java/ru/serega6531/packmate/model/Pattern.java index 17e39b5..38ea512 100644 --- a/src/main/java/ru/serega6531/packmate/model/Pattern.java +++ b/src/main/java/ru/serega6531/packmate/model/Pattern.java @@ -34,6 +34,8 @@ public class Pattern { private boolean isRegex; + private PatternType type; + @ManyToMany(mappedBy = "foundPatterns", cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JsonIgnore private List matchedStreams; diff --git a/src/main/java/ru/serega6531/packmate/model/PatternType.java b/src/main/java/ru/serega6531/packmate/model/PatternType.java new file mode 100644 index 0000000..e22505f --- /dev/null +++ b/src/main/java/ru/serega6531/packmate/model/PatternType.java @@ -0,0 +1,5 @@ +package ru.serega6531.packmate.model; + +public enum PatternType { + INPUT, OUTPUT, BOTH +} diff --git a/src/main/java/ru/serega6531/packmate/repository/PatternRepository.java b/src/main/java/ru/serega6531/packmate/repository/PatternRepository.java index 2fa9035..076cb08 100644 --- a/src/main/java/ru/serega6531/packmate/repository/PatternRepository.java +++ b/src/main/java/ru/serega6531/packmate/repository/PatternRepository.java @@ -2,6 +2,12 @@ package ru.serega6531.packmate.repository; import org.springframework.data.jpa.repository.JpaRepository; import ru.serega6531.packmate.model.Pattern; +import ru.serega6531.packmate.model.PatternType; + +import java.util.List; public interface PatternRepository extends JpaRepository { + + List findAllByTypeEqualsOrTypeEquals(PatternType type, PatternType both); + } diff --git a/src/main/java/ru/serega6531/packmate/service/PatternService.java b/src/main/java/ru/serega6531/packmate/service/PatternService.java index 0e52d72..715053d 100644 --- a/src/main/java/ru/serega6531/packmate/service/PatternService.java +++ b/src/main/java/ru/serega6531/packmate/service/PatternService.java @@ -7,6 +7,7 @@ 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.PatternType; import ru.serega6531.packmate.model.Stream; import ru.serega6531.packmate.repository.PatternRepository; @@ -35,10 +36,10 @@ public class PatternService { return repository.findAll(); } - public List findMatching(byte[] bytes) { + public List findMatching(byte[] bytes, boolean incoming) { String content = new String(bytes); - return findAll().stream() + return repository.findAllByTypeEqualsOrTypeEquals(incoming ? PatternType.INPUT : PatternType.OUTPUT, PatternType.BOTH).stream() .filter(pattern -> matches(pattern, content)) .collect(Collectors.toList()); } diff --git a/src/main/java/ru/serega6531/packmate/service/StreamService.java b/src/main/java/ru/serega6531/packmate/service/StreamService.java index 830dcf0..eae6f14 100644 --- a/src/main/java/ru/serega6531/packmate/service/StreamService.java +++ b/src/main/java/ru/serega6531/packmate/service/StreamService.java @@ -165,7 +165,7 @@ public class StreamService { for (ru.serega6531.packmate.model.Packet packet : packets) { packet.setStream(savedStream); savedPackets.add(packetService.save(packet)); - matches.addAll(patternService.findMatching(packet.getContent())); + matches.addAll(patternService.findMatching(packet.getContent(), packet.isIncoming())); } savedStream.setFoundPatterns(new ArrayList<>(matches));