/** * Retrieves all filters defined in a rule * * @param rule the rule * @return array of filters */ public static Filter[] filters(Rule[] rule) { Filter[] filter = new Filter[rule.length]; for (int i = 0; i < rule.length; i++) { filter[i] = rule[0].getFilter(); } return filter; }
public void visit(Rule rule) { Filter filter = rule.getFilter(); if (filter != null) { filter.accept(this, null); } Symbolizer[] symbolizers = rule.getSymbolizers(); if (symbolizers != null) { for (int i = 0; i < symbolizers.length; i++) { Symbolizer symbolizer = symbolizers[i]; symbolizer.accept(this); } } }
/** @see org.geotools.styling.StyleVisitor#visit(org.geotools.styling.Rule) */ public void visit(Rule rule) { Filter filter = rule.getFilter(); if (filter != null) { filter.accept(this, null); } Symbolizer[] symbolizers = rule.getSymbolizers(); if (symbolizers != null) { for (int i = 0; i < symbolizers.length; i++) { Symbolizer symbolizer = symbolizers[i]; symbolizer.accept(this); } } }
/** * Reprojects spatial filters so that they match the feature source native CRS, and assuming all * literal geometries are specified in the specified declaredCRS */ private Rule reprojectSpatialFilters( Rule rule, CoordinateReferenceSystem declaredCRS, FeatureType schema) { // NPE avoidance Filter filter = rule.getFilter(); if (filter == null) { return rule; } // try to reproject the filter Filter reprojected = reprojectSpatialFilter(declaredCRS, schema, filter); if (reprojected == filter) { return rule; } // clone the rule (the style can be reused over and over, we cannot alter it) and set the // new filter Rule rr = new RuleImpl(rule); rr.setFilter(reprojected); return rr; }
public RuleBuilder reset(Rule rule) { if (rule == null) { return unset(); } name = rule.getName(); title = rule.getTitle(); ruleAbstract = rule.getAbstract(); minScaleDenominator = rule.getMinScaleDenominator(); maxScaleDenominator = rule.getMaxScaleDenominator(); filter = rule.getFilter(); elseFilter = rule.isElseFilter(); symbolizers.clear(); symbolizers.addAll(rule.symbolizers()); // TODO: unpack into builders in order to "copy" symbolizerBuilder = null; unset = false; legend.reset(rule.getLegend()); return this; }
Rule[] rule = fts.getRules(); Rule thisRule = rule[ruleIndex]; Filter filter = thisRule.getFilter();
@Test public void testFilterFunctionNoMarker() throws Exception { String yaml = "rules: \n" + "- filter: strEndsWith(foo,'bar') = true\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); Rule r = SLD.defaultStyle(sld).featureTypeStyles().get(0).rules().get(0); PropertyIsEqualTo f = (PropertyIsEqualTo) r.getFilter(); Function func = (Function) f.getExpression1(); assertEquals("strEndsWith", func.getName()); assertTrue(func.getParameters().get(0) instanceof PropertyName); assertTrue(func.getParameters().get(1) instanceof Literal); Literal lit = (Literal) f.getExpression2(); }
@Test public void testFilterFunctionWithMarker() throws Exception { String yaml = "rules: \n" + "- filter: ${strEndsWith(foo,'bar') = true}\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); Rule r = SLD.defaultStyle(sld).featureTypeStyles().get(0).rules().get(0); PropertyIsEqualTo f = (PropertyIsEqualTo) r.getFilter(); Function func = (Function) f.getExpression1(); assertEquals("strEndsWith", func.getName()); assertTrue(func.getParameters().get(0) instanceof PropertyName); assertTrue(func.getParameters().get(1) instanceof Literal); Literal lit = (Literal) f.getExpression2(); }
for (int t = 0; t < length; t++) { r = ruleList[t]; filter = r.getFilter();
@Test public void testFilterWithEscape() throws Exception { String yaml = "rules: \n" + "- filter: ${foo = '\\$\\}'}\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); Rule r = SLD.defaultStyle(sld).featureTypeStyles().get(0).rules().get(0); Filter f = r.getFilter(); assertThat(f, Matchers.instanceOf(PropertyIsEqualTo.class)); assertThat(((PropertyIsEqualTo) f).getExpression1(), attribute("foo")); assertThat(((PropertyIsEqualTo) f).getExpression2(), literal("$}")); }
@Test public void testFilterFunctionWithMarker2() throws Exception { String yaml = "rules: \n" + "- filter: ${scalerank < 4}\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); Rule r = SLD.defaultStyle(sld).featureTypeStyles().get(0).rules().get(0); Filter f = r.getFilter(); assertThat(f, Matchers.instanceOf(PropertyIsLessThan.class)); assertThat(((PropertyIsLessThan) f).getExpression1(), attribute("scalerank")); assertThat(((PropertyIsLessThan) f).getExpression2(), literal(4)); }
Rule rule = featureStyle.rules().get(0); assertEquals("local-road", rule.getName()); assertEquals("type = 'local-road'", ECQL.toCQL(rule.getFilter())); rule = featureStyle.rules().get(0); assertEquals("secondary", rule.getName()); assertEquals("type = 'secondary'", ECQL.toCQL(rule.getFilter())); rule = featureStyle.rules().get(0); assertEquals("highway", rule.getName()); assertEquals("type = 'highway'", ECQL.toCQL(rule.getFilter()));
Filter filter = rule.getFilter(); if (filter != null && filter != Filter.INCLUDE) { visit(filter);