Search in sources :

Example 1 with RecordDefinitionSqlFilter

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);
    }
}
Also used : Record(com.revolsys.record.Record) LayerRecord(com.revolsys.swing.map.layer.record.LayerRecord) RecordDefinitionSqlFilter(com.revolsys.swing.map.layer.record.RecordDefinitionSqlFilter)

Example 2 with RecordDefinitionSqlFilter

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();
}
Also used : MultipleAttributeValuesFilter(com.revolsys.record.filter.MultipleAttributeValuesFilter) LineString(com.revolsys.geometry.model.LineString) RecordDefinitionSqlFilter(com.revolsys.swing.map.layer.record.RecordDefinitionSqlFilter) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Aggregations

RecordDefinitionSqlFilter (com.revolsys.swing.map.layer.record.RecordDefinitionSqlFilter)2 LineString (com.revolsys.geometry.model.LineString)1 Record (com.revolsys.record.Record)1 MultipleAttributeValuesFilter (com.revolsys.record.filter.MultipleAttributeValuesFilter)1 LayerRecord (com.revolsys.swing.map.layer.record.LayerRecord)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1