use of com.revolsys.swing.map.layer.record.RecordDefinitionSqlFilter in project com.revolsys.open by revolsys.
the class AbstractRecordLayerRenderer method setQueryFilter.
public void setQueryFilter(final String query) {
if (this.filter instanceof RecordDefinitionSqlFilter || this.filter == Predicates.<Record>all()) {
Predicate<Record> filter;
if (Property.hasValue(query)) {
filter = new RecordDefinitionSqlFilter(this, query);
} else {
filter = Predicates.all();
}
setFilter(filter);
}
}
use of com.revolsys.swing.map.layer.record.RecordDefinitionSqlFilter in project com.revolsys.open by revolsys.
the class AbstractRecordLayerRenderer method getFilter.
public static Predicate<Record> getFilter(final RecordDefinitionProxy recordDefinitionProxy, final Map<String, ? extends Object> properties) {
@SuppressWarnings("unchecked") Map<String, Object> filterDefinition = (Map<String, Object>) properties.get("filter");
if (filterDefinition != null) {
filterDefinition = new LinkedHashMap<>(filterDefinition);
final String type = MapObjectFactory.getType(filterDefinition);
if ("valueFilter".equals(type)) {
return new MultipleAttributeValuesFilter(filterDefinition);
} else if ("queryFilter".equals(type)) {
String query = (String) filterDefinition.remove("query");
if (Property.hasValue(query)) {
query = query.replaceAll("!= null", "IS NOT NULL");
query = query.replaceAll("== null", "IS NULL");
query = query.replaceAll("==", "=");
query = query.replaceAll("!=", "<>");
query = query.replaceAll("\\{(.*)\\}.contains\\((.*)\\)", "$2 IN ($1)");
query = query.replaceAll("\\[(.*)\\]", "$1");
query = query.replaceAll("(.*).startsWith\\('(.*)'\\)", "$1 LIKE '$2%'");
query = query.replaceAll("#systemProperties\\['user.name'\\]", "'{gbaUsername}'");
return new RecordDefinitionSqlFilter(recordDefinitionProxy, query);
}
} else if ("sqlFilter".equals(type)) {
final String query = (String) filterDefinition.remove("query");
if (Property.hasValue(query)) {
return new RecordDefinitionSqlFilter(recordDefinitionProxy, query);
}
} else {
Logs.error(AbstractRecordLayerRenderer.class, "Unknown filter type " + type);
}
}
return Predicates.all();
}
Aggregations