From 1854cf174b3528785fd54c38996889f9fa5298a6 Mon Sep 17 00:00:00 2001 From: serega6531 Date: Fri, 13 Mar 2020 02:13:14 +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=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BF=D0=B0=D1=82=D1=82=D0=B5=D1=80=D0=BD=D0=B0?= =?UTF-8?q?=20=D1=81=20=D0=BD=D0=B5=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D0=B9=20=D1=80=D0=B5=D0=B3=D1=83=D0=BB=D1=8F?= =?UTF-8?q?=D1=80=D0=BA=D0=BE=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serega6531/packmate/service/PatternMatcher.java | 2 +- .../serega6531/packmate/service/PatternService.java | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/serega6531/packmate/service/PatternMatcher.java b/src/main/java/ru/serega6531/packmate/service/PatternMatcher.java index 1480827..e2d2cbb 100644 --- a/src/main/java/ru/serega6531/packmate/service/PatternMatcher.java +++ b/src/main/java/ru/serega6531/packmate/service/PatternMatcher.java @@ -99,7 +99,7 @@ public class PatternMatcher { return a <= x && x <= b; } - private java.util.regex.Pattern compilePattern(Pattern pattern) { + static java.util.regex.Pattern compilePattern(Pattern pattern) { return compiledPatterns.computeIfAbsent(pattern.getValue(), java.util.regex.Pattern::compile); } diff --git a/src/main/java/ru/serega6531/packmate/service/PatternService.java b/src/main/java/ru/serega6531/packmate/service/PatternService.java index fd03a71..8983c50 100644 --- a/src/main/java/ru/serega6531/packmate/service/PatternService.java +++ b/src/main/java/ru/serega6531/packmate/service/PatternService.java @@ -8,11 +8,13 @@ import ru.serega6531.packmate.model.FoundPattern; import ru.serega6531.packmate.model.Pattern; import ru.serega6531.packmate.model.Stream; import ru.serega6531.packmate.model.enums.PatternDirectionType; +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; import java.util.*; +import java.util.regex.PatternSyntaxException; import java.util.stream.Collectors; @Service @@ -71,9 +73,17 @@ public class PatternService { } public Pattern save(Pattern pattern) { - log.info("Добавлен новый паттерн {} со значением {}", pattern.getName(), pattern.getValue()); + if(pattern.getSearchType() == PatternSearchType.REGEX) { + try { + PatternMatcher.compilePattern(pattern); + } catch (PatternSyntaxException e) { + throw new IllegalArgumentException(e.getMessage()); + } + } + final Pattern saved = repository.save(pattern); patterns.put(saved.getId(), saved); + log.info("Добавлен новый паттерн {} со значением {}", pattern.getName(), pattern.getValue()); subscriptionService.broadcast(new SubscriptionMessage(SubscriptionMessageType.SAVE_PATTERN, saved)); return saved; }