if ( toFilter.contains( attribute.getLocalName() ) ) {
continue;
}
XSDElementDeclaration element = f.createXSDElementDeclaration();
element.setName(attribute.getLocalName());
element.setNillable(attribute.isNillable());
//check for geometry
if ( attribute instanceof GeometryDescriptor ) {
Class binding = attribute.getType().getBinding();
if ( Point.class.isAssignableFrom( binding ) ) {
element.setTypeDefinition( schemaIndex.getTypeDefinition(gml.qName("PointPropertyType")));
}
else if ( LineString.class.isAssignableFrom( binding ) ) {
element.setTypeDefinition( schemaIndex.getTypeDefinition(gml.qName("LineStringPropertyType")));
}
else if ( Polygon.class.isAssignableFrom( binding) ) {
element.setTypeDefinition( schemaIndex.getTypeDefinition(gml.qName("PolygonPropertyType")));
}
else if ( MultiPoint.class.isAssignableFrom( binding ) ) {
element.setTypeDefinition( schemaIndex.getTypeDefinition(gml.qName("MultiPointPropertyType")));
}
else if ( MultiLineString.class.isAssignableFrom( binding ) ) {
element.setTypeDefinition( schemaIndex.getTypeDefinition(gml.qName("MultiLineStringPropertyType")));
}
else if ( MultiPolygon.class.isAssignableFrom( binding) ) {
element.setTypeDefinition( schemaIndex.getTypeDefinition(gml.qName("MultiPolygonPropertyType")));
}
else {
element.setTypeDefinition( schemaIndex.getTypeDefinition(gml.qName("GeometryPropertyType")));
}
}
else {
//TODO: do a proper mapping
element.setTypeDefinition(schemaIndex.getTypeDefinition(XS.STRING));
}
XSDParticle particle = f.createXSDParticle();
particle.setMinOccurs(attribute.getMinOccurs());