package timeflow.data.db.filter; import timeflow.data.db.*; import timeflow.data.time.*; import java.util.regex.*; public class StringMatchFilter extends ActFilter { private Field[] textFields; private Field[] listFields; private String query=""; private boolean isRegex=false; private Pattern pattern; public StringMatchFilter(ActDB db, boolean isRegex) { this(db,"", isRegex); } public StringMatchFilter(ActDB db, String query, boolean isRegex) { textFields=(Field[])db.getFields(String.class).toArray(new Field[0]); listFields=(Field[])db.getFields(String[].class).toArray(new Field[0]); this.isRegex=isRegex; setQuery(query); } public String getQuery() { return query; } public void setQuery(String query) { this.query=query; if (isRegex) { pattern=Pattern.compile(query, Pattern.CASE_INSENSITIVE+Pattern.MULTILINE+Pattern.DOTALL); } else this.query=query.toLowerCase(); } @Override public boolean accept(Act act) { // check text fields for (int i=0; i