RandomSec/src/main/java/com/metaweb/gridlock/browsing/facets/TextSearchFacet.java
David Huynh ac46653aa3 Added text search facet.
git-svn-id: http://google-refine.googlecode.com/svn/trunk@23 7d457c2a-affb-35e4-300a-418c747d4874
2010-02-02 19:16:09 +00:00

78 lines
2.2 KiB
Java

package com.metaweb.gridlock.browsing.facets;
import java.util.Properties;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONWriter;
import com.metaweb.gridlock.browsing.FilteredRows;
import com.metaweb.gridlock.browsing.filters.ExpressionNumberComparisonRowFilter;
import com.metaweb.gridlock.browsing.filters.ExpressionStringComparisonRowFilter;
import com.metaweb.gridlock.browsing.filters.RowFilter;
import com.metaweb.gridlock.expr.Evaluable;
import com.metaweb.gridlock.expr.Parser;
import com.metaweb.gridlock.expr.VariableExpr;
import com.metaweb.gridlock.model.Project;
public class TextSearchFacet implements Facet {
protected String _name;
protected int _cellIndex;
protected String _query;
protected String _mode;
protected boolean _caseSensitive;
public TextSearchFacet() {
}
@Override
public void write(JSONWriter writer, Properties options)
throws JSONException {
writer.object();
writer.key("name"); writer.value(_name);
writer.key("cellIndex"); writer.value(_cellIndex);
writer.key("query"); writer.value(_query);
writer.key("mode"); writer.value(_mode);
writer.key("caseSensitive"); writer.value(_caseSensitive);
writer.endObject();
}
@Override
public void initializeFromJSON(JSONObject o) throws Exception {
_name = o.getString("name");
_cellIndex = o.getInt("cellIndex");
_query = o.getString("query");
_mode = o.getString("mode");
_caseSensitive = o.getBoolean("caseSensitive");
if (!_caseSensitive) {
_query = _query.toLowerCase();
}
}
@Override
public RowFilter getRowFilter() {
Evaluable eval = new VariableExpr("value");
if ("regex".equals(_mode)) {
return new ExpressionStringComparisonRowFilter(eval, _cellIndex) {
protected boolean checkValue(String s) {
return s.matches(_query);
};
};
} else {
return new ExpressionStringComparisonRowFilter(eval, _cellIndex) {
protected boolean checkValue(String s) {
return s.toLowerCase().contains(_query);
};
};
}
}
@Override
public void computeChoices(Project project, FilteredRows filteredRows) {
// nothing to do
}
}