ac46653aa3
git-svn-id: http://google-refine.googlecode.com/svn/trunk@23 7d457c2a-affb-35e4-300a-418c747d4874
78 lines
2.2 KiB
Java
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
|
|
}
|
|
}
|