Blacklist regex

This commit is contained in:
Patrick Haßel 2024-07-29 15:38:53 +02:00
parent fed7cd420a
commit 13fa1939ad
3 changed files with 6 additions and 13 deletions

View File

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

View File

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

View File

@ -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