/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.kml.utils; import java.util.ArrayList; import java.util.List; import org.geotools.styling.AbstractStyleVisitor; import org.geotools.styling.Rule; import org.geotools.styling.Symbolizer; import org.opengis.feature.simple.SimpleFeature; /** * Collects the symbolizers active on the specified simple feature * * @author Andrea Aime - GeoSolutions */ public class SymbolizerCollector extends AbstractStyleVisitor { SimpleFeature sf; List<Symbolizer> symbolizers = new ArrayList<Symbolizer>(); List<Symbolizer> elseSymbolizers = new ArrayList<Symbolizer>(); public SymbolizerCollector(SimpleFeature sf) { this.sf = sf; } @Override public void visit(Rule rule) { if (rule.isElseFilter()) { elseSymbolizers.addAll(rule.symbolizers()); } else if (rule.getFilter() == null || rule.getFilter().evaluate(sf)) { symbolizers.addAll(rule.symbolizers()); } } public List<Symbolizer> getSymbolizers() { // the else filters are activated only if the regular rules are not catching the style if(symbolizers.size() == 0) { return elseSymbolizers; } else { return symbolizers; } } }