/** * Inspects the <code>MapLayer</code>'s style and retrieves it's needed attribute names, * returning at least the default geometry attribute name. * * @param query DOCUMENT ME! * @param style the <code>Style</code> to determine the needed attributes from * @param schema the featuresource schema * @return the minimun set of attribute names needed to render <code>layer</code> */ private String[] findStyleAttributes( final Query query, Style style, FeatureType schema ) { StyleAttributeExtractor sae = new StyleAttributeExtractor(){ public void visit( Rule rule ) { DuplicatingStyleVisitor dupeStyleVisitor = new DuplicatingStyleVisitor(); dupeStyleVisitor.visit(rule); Rule clone = (Rule) dupeStyleVisitor.getCopy(); super.visit(clone); } }; sae.visit(style); FilterAttributeExtractor qae = new FilterAttributeExtractor(); query.getFilter().accept(qae,null); Set ftsAttributes=new HashSet(sae.getAttributeNameSet()); ftsAttributes.addAll(qae.getAttributeNameSet()); // the code following assumes we won't extract the default geometry, and that's // most of the time true, but fails if the filter or the style uses it. ftsAttributes.remove(schema.getDefaultGeometry().getLocalName()); return (String[]) ftsAttributes.toArray(new String[0]); }
/** * Inspects the <code>MapLayer</code>'s style and retrieves it's needed attribute names, * returning at least the default geometry attribute name. * * @param query DOCUMENT ME! * @param style the <code>Style</code> to determine the needed attributes from * @param schema the SimpleFeatureSource schema * @return the minimun set of attribute names needed to render <code>layer</code> */ private String[] findStyleAttributes( final Query query, Style style, SimpleFeatureType schema ) { StyleAttributeExtractor sae = new StyleAttributeExtractor(); sae.visit(style); FilterAttributeExtractor qae = new FilterAttributeExtractor(); query.getFilter().accept(qae,null); Set ftsAttributes = new LinkedHashSet(sae.getAttributeNameSet()); ftsAttributes.addAll(qae.getAttributeNameSet()); if (sae.getDefaultGeometryUsed() && (!ftsAttributes.contains(schema.getGeometryDescriptor().getLocalName()))) { ftsAttributes.add(schema.getGeometryDescriptor().getLocalName()); } else { // the code following assumes the geometry column is the last one // make sure it's the last for good ftsAttributes.remove(schema.getGeometryDescriptor().getLocalName()); ftsAttributes.add(schema.getGeometryDescriptor().getLocalName()); } return (String[]) ftsAttributes.toArray(new String[0]); }
extractor.clear(); g.accept(extractor, null); Set<String> attributes = extractor.getAttributeNameSet(); for (String attribute : attributes) { if(plainGeometries.contains(attribute))
Set<String> attributeNames = sae.getAttributeNameSet();
style.accept(atts); assertTrue(atts.getAttributeNameSet().contains("CAT_ID"));