diff --git a/src/main/java/ru/serega6531/packmate/model/Pattern.java b/src/main/java/ru/serega6531/packmate/model/Pattern.java index bbff213..612c777 100644 --- a/src/main/java/ru/serega6531/packmate/model/Pattern.java +++ b/src/main/java/ru/serega6531/packmate/model/Pattern.java @@ -4,7 +4,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import lombok.ToString; import org.hibernate.annotations.GenericGenerator; -import ru.serega6531.packmate.model.enums.PatternType; +import ru.serega6531.packmate.model.enums.PatternDirectionType; +import ru.serega6531.packmate.model.enums.PatternSearchType; import javax.persistence.*; import java.util.List; @@ -33,9 +34,9 @@ public class Pattern { private String color; // для вставки в css - private boolean isRegex; + private PatternSearchType searchType; - private PatternType type; + private PatternDirectionType directionType; @ManyToMany(mappedBy = "foundPatterns", cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JsonIgnore diff --git a/src/main/java/ru/serega6531/packmate/model/enums/PatternType.java b/src/main/java/ru/serega6531/packmate/model/enums/PatternDirectionType.java similarity index 66% rename from src/main/java/ru/serega6531/packmate/model/enums/PatternType.java rename to src/main/java/ru/serega6531/packmate/model/enums/PatternDirectionType.java index 8a2e1f5..2c22c88 100644 --- a/src/main/java/ru/serega6531/packmate/model/enums/PatternType.java +++ b/src/main/java/ru/serega6531/packmate/model/enums/PatternDirectionType.java @@ -1,5 +1,5 @@ package ru.serega6531.packmate.model.enums; -public enum PatternType { +public enum PatternDirectionType { INPUT, OUTPUT, BOTH } diff --git a/src/main/java/ru/serega6531/packmate/model/enums/PatternSearchType.java b/src/main/java/ru/serega6531/packmate/model/enums/PatternSearchType.java new file mode 100644 index 0000000..b299e77 --- /dev/null +++ b/src/main/java/ru/serega6531/packmate/model/enums/PatternSearchType.java @@ -0,0 +1,5 @@ +package ru.serega6531.packmate.model.enums; + +public enum PatternSearchType { + REGEX, SUBSTRING, SUBBYTES +} diff --git a/src/main/java/ru/serega6531/packmate/model/enums/SubscriptionMessageType.java b/src/main/java/ru/serega6531/packmate/model/enums/SubscriptionMessageType.java index 62c286b..af46d09 100644 --- a/src/main/java/ru/serega6531/packmate/model/enums/SubscriptionMessageType.java +++ b/src/main/java/ru/serega6531/packmate/model/enums/SubscriptionMessageType.java @@ -1,7 +1,5 @@ package ru.serega6531.packmate.model.enums; public enum SubscriptionMessageType { - SAVE_SERVICE, SAVE_PATTERN, DELETE_SERVICE, DELETE_PATTERN, NEW_STREAM - } diff --git a/src/main/java/ru/serega6531/packmate/repository/PatternRepository.java b/src/main/java/ru/serega6531/packmate/repository/PatternRepository.java index bab2442..4cdf665 100644 --- a/src/main/java/ru/serega6531/packmate/repository/PatternRepository.java +++ b/src/main/java/ru/serega6531/packmate/repository/PatternRepository.java @@ -2,12 +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.enums.PatternType; +import ru.serega6531.packmate.model.enums.PatternDirectionType; import java.util.List; public interface PatternRepository extends JpaRepository { - List findAllByTypeEqualsOrTypeEquals(PatternType type, PatternType both); + List findAllByTypeEqualsOrTypeEquals(PatternDirectionType type, PatternDirectionType both); } diff --git a/src/main/java/ru/serega6531/packmate/service/PatternService.java b/src/main/java/ru/serega6531/packmate/service/PatternService.java index 170ecef..ba003c1 100644 --- a/src/main/java/ru/serega6531/packmate/service/PatternService.java +++ b/src/main/java/ru/serega6531/packmate/service/PatternService.java @@ -8,8 +8,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import ru.serega6531.packmate.model.FoundPattern; import ru.serega6531.packmate.model.Pattern; -import ru.serega6531.packmate.model.enums.PatternType; +import ru.serega6531.packmate.model.enums.PatternDirectionType; import ru.serega6531.packmate.model.Stream; +import ru.serega6531.packmate.model.enums.PatternSearchType; import ru.serega6531.packmate.model.enums.SubscriptionMessageType; import ru.serega6531.packmate.model.pojo.SubscriptionMessage; import ru.serega6531.packmate.repository.PatternRepository; @@ -53,8 +54,8 @@ public class PatternService { String content = new String(bytes); return patterns.values().stream() - .filter(p -> p.getType() == (incoming ? PatternType.INPUT : PatternType.OUTPUT) - || p.getType() == PatternType.BOTH) + .filter(p -> p.getDirectionType() == (incoming ? PatternDirectionType.INPUT : PatternDirectionType.OUTPUT) + || p.getDirectionType() == PatternDirectionType.BOTH) .map(pattern -> match(pattern, content)) .flatMap(List::stream) .collect(Collectors.toSet()); @@ -63,7 +64,7 @@ public class PatternService { private List match(Pattern pattern, String content) { List found = new ArrayList<>(); - if (pattern.isRegex()) { + if (pattern.getSearchType() == PatternSearchType.REGEX) { final java.util.regex.Pattern regex = compilePattern(pattern); final Matcher matcher = regex.matcher(content); @@ -76,7 +77,7 @@ public class PatternService { } return found; - } else { + } else if (pattern.getSearchType() == PatternSearchType.SUBSTRING) { int startSearch = 0; final String value = pattern.getValue(); @@ -96,6 +97,9 @@ public class PatternService { startSearch = end + 1; } + } else { // SUBBYTES + // TODO + return found; } }