2010-02-03 03:29:47 +01:00
|
|
|
package com.metaweb.gridworks.browsing.facets;
|
2010-02-02 20:16:09 +01:00
|
|
|
|
|
|
|
import java.util.Properties;
|
|
|
|
|
|
|
|
import org.json.JSONException;
|
|
|
|
import org.json.JSONObject;
|
|
|
|
import org.json.JSONWriter;
|
|
|
|
|
2010-02-03 03:29:47 +01:00
|
|
|
import com.metaweb.gridworks.browsing.FilteredRows;
|
|
|
|
import com.metaweb.gridworks.browsing.filters.ExpressionStringComparisonRowFilter;
|
|
|
|
import com.metaweb.gridworks.browsing.filters.RowFilter;
|
|
|
|
import com.metaweb.gridworks.expr.Evaluable;
|
|
|
|
import com.metaweb.gridworks.expr.VariableExpr;
|
|
|
|
import com.metaweb.gridworks.model.Project;
|
2010-02-02 20:16:09 +01:00
|
|
|
|
|
|
|
public class TextSearchFacet implements Facet {
|
|
|
|
protected String _name;
|
2010-02-19 00:27:40 +01:00
|
|
|
protected String _columnName;
|
2010-02-02 20:16:09 +01:00
|
|
|
protected int _cellIndex;
|
|
|
|
protected String _query;
|
|
|
|
|
|
|
|
protected String _mode;
|
|
|
|
protected boolean _caseSensitive;
|
|
|
|
|
|
|
|
public TextSearchFacet() {
|
|
|
|
}
|
|
|
|
|
|
|
|
public void write(JSONWriter writer, Properties options)
|
|
|
|
throws JSONException {
|
|
|
|
|
|
|
|
writer.object();
|
|
|
|
writer.key("name"); writer.value(_name);
|
2010-02-19 00:27:40 +01:00
|
|
|
writer.key("columnName"); writer.value(_columnName);
|
2010-02-02 20:16:09 +01:00
|
|
|
writer.key("query"); writer.value(_query);
|
|
|
|
writer.key("mode"); writer.value(_mode);
|
|
|
|
writer.key("caseSensitive"); writer.value(_caseSensitive);
|
|
|
|
writer.endObject();
|
|
|
|
}
|
|
|
|
|
2010-02-19 00:27:40 +01:00
|
|
|
public void initializeFromJSON(Project project, JSONObject o) throws Exception {
|
2010-02-02 20:16:09 +01:00
|
|
|
_name = o.getString("name");
|
2010-02-19 00:27:40 +01:00
|
|
|
_columnName = o.getString("columnName");
|
|
|
|
_cellIndex = project.columnModel.getColumnByName(_columnName).getCellIndex();
|
2010-02-02 20:16:09 +01:00
|
|
|
_query = o.getString("query");
|
|
|
|
_mode = o.getString("mode");
|
|
|
|
_caseSensitive = o.getBoolean("caseSensitive");
|
|
|
|
if (!_caseSensitive) {
|
|
|
|
_query = _query.toLowerCase();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void computeChoices(Project project, FilteredRows filteredRows) {
|
|
|
|
// nothing to do
|
|
|
|
}
|
|
|
|
}
|