package org.jabref.model.search; import java.util.Objects; import org.jabref.model.entry.BibEntry; import org.jabref.model.search.rules.SearchRule; import org.jabref.model.search.rules.SearchRules; public class GroupSearchQuery implements SearchMatcher { private final String query; private final boolean caseSensitive; private final boolean regularExpression; private final SearchRule rule; public GroupSearchQuery(String query, boolean caseSensitive, boolean regularExpression) { this.query = Objects.requireNonNull(query); this.caseSensitive = caseSensitive; this.regularExpression = regularExpression; this.rule = Objects.requireNonNull(getSearchRule()); } @Override public String toString() { return String.format("\"%s\" (%s, %s)", query, getCaseSensitiveDescription(), getRegularExpressionDescription()); } @Override public boolean isMatch(BibEntry entry) { return this.getRule().applyRule(query, entry); } private SearchRule getSearchRule() { return SearchRules.getSearchRuleByQuery(query, caseSensitive, regularExpression); } private String getCaseSensitiveDescription() { if (caseSensitive) { return "case sensitive"; } else { return "case insensitive"; } } private String getRegularExpressionDescription() { if (regularExpression) { return "regular expression"; } else { return "plain text"; } } public SearchRule getRule() { return rule; } public String getSearchExpression() { return query; } public boolean isCaseSensitive() { return caseSensitive; } public boolean isRegularExpression() { return regularExpression; } }