package nl.ipo.cds.admin.ba.controller.beans; import static nl.ipo.cds.domain.AttributeType.DOUBLE; import static nl.ipo.cds.domain.AttributeType.GEOMETRY; import java.util.ArrayList; import java.util.Collections; import java.util.List; import nl.ipo.cds.domain.FeatureType; import nl.ipo.cds.domain.FeatureTypeAttribute; import nl.ipo.cds.etl.featuretype.DefaultQName; import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion; @JsonSerialize (include = Inclusion.ALWAYS) public class InputAttributesResponse { @JsonIgnore private final FeatureType featureType; public InputAttributesResponse (final FeatureType featureType) { this.featureType = featureType; } public QNameResponse getName () { return new QNameResponse (featureType.getName ()); } public List<InputAttributeResponse> getAttributes () { final List<InputAttributeResponse> result = new ArrayList<InputAttributeResponse> (); for (final FeatureTypeAttribute attr: featureType.getAttributes ()) { result.add (new InputAttributeResponse ( attr.getType ().getJavaType ().toString (), attr.getName(), attr.getName ().getLocalPart (), false )); if (attr.getType() == GEOMETRY) { addOppervlakteFilterAttribute(result, attr); } } return Collections.unmodifiableList (result); } private void addOppervlakteFilterAttribute( final List<InputAttributeResponse> result, final FeatureTypeAttribute attr) { final DefaultQName oppervlakteName = new DefaultQName(attr.getName().getNamespace(), attr.getName().getLocalPart() + "/area"); result.add (new InputAttributeResponse ( DOUBLE.getJavaType().toString(), oppervlakteName, String.format ("Oppervlakte %s", attr.getName ().getLocalPart ()), true )); } }