package org.jabref.model.search.rules;
import org.jabref.model.strings.StringUtil;
public class SearchRules {
private SearchRules() {
}
/**
* Returns the appropriate search rule that fits best to the given parameter.
*/
public static SearchRule getSearchRuleByQuery(String query, boolean caseSensitive, boolean regex) {
if (StringUtil.isBlank(query)) {
return new ContainBasedSearchRule(caseSensitive);
}
// this searches specified fields if specified,
// and all fields otherwise
SearchRule searchExpression = new GrammarBasedSearchRule(caseSensitive, regex);
if (searchExpression.validateSearchStrings(query)) {
return searchExpression;
} else {
return getSearchRule(caseSensitive, regex);
}
}
private static SearchRule getSearchRule(boolean caseSensitive, boolean regex) {
if (regex) {
return new RegexBasedSearchRule(caseSensitive);
} else {
return new ContainBasedSearchRule(caseSensitive);
}
}
}