From 13fa1939ad521e30bfc0bde6977fc21c61017ab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Mon, 29 Jul 2024 15:38:53 +0200 Subject: [PATCH] Blacklist regex --- .../kleinanzeigen/blacklist/Blacklist.java | 15 ++++----------- .../kleinanzeigen/blacklist/BlacklistDto.java | 2 +- .../kleinanzeigen/blacklist/BlacklistService.java | 2 +- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/Blacklist.java b/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/Blacklist.java index 52af55f..5268056 100644 --- a/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/Blacklist.java +++ b/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/Blacklist.java @@ -6,8 +6,7 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import lombok.*; -import java.util.Arrays; -import java.util.Locale; +import java.util.regex.Pattern; @Entity @Getter @@ -26,21 +25,15 @@ public class Blacklist { @NonNull @Column(nullable = false) - private String query; + private String regex; public Blacklist(final BlacklistCreate create) { enabled = create.isEnabled(); - query = create.getQuery(); + regex = create.getQuery(); } public boolean matches(@NonNull final String title) { - final String[] words = query.replaceAll("([0-9])([a-zA-Z])", "$1 $2") - .replaceAll("([a-zA-Z])([0-9])", "$1 $2") - .replaceAll("([a-z])([A-Z])", "$1 $2") - .replaceAll("^\\W+|\\W+$", "") - .toLowerCase(Locale.ROOT) - .split("\\W+"); - return Arrays.stream(words).map(".*%s.*"::formatted).allMatch(title::matches); + return Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(title).find(); } } diff --git a/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/BlacklistDto.java b/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/BlacklistDto.java index 11def9e..267b076 100644 --- a/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/BlacklistDto.java +++ b/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/BlacklistDto.java @@ -16,7 +16,7 @@ public class BlacklistDto { public BlacklistDto(final Blacklist blacklist) { this.id = blacklist.getId(); this.enabled = blacklist.isEnabled(); - this.query = blacklist.getQuery(); + this.query = blacklist.getRegex(); } } diff --git a/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/BlacklistService.java b/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/BlacklistService.java index 4f8c2ca..dba8106 100644 --- a/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/BlacklistService.java +++ b/src/main/java/de/ph87/kleinanzeigen/kleinanzeigen/blacklist/BlacklistService.java @@ -47,7 +47,7 @@ public class BlacklistService { @PostMapping("{id}/query") public BlacklistDto query(@PathVariable final long id, @NonNull @RequestBody final String query) { - return set(id, blacklist -> blacklist.setQuery(query)); + return set(id, blacklist -> blacklist.setRegex(query)); } @NonNull