package nl.ipo.cds.etl.featuretype; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.net.URL; import nl.ipo.cds.domain.AttributeType; import nl.ipo.cds.domain.FeatureType; import nl.ipo.cds.domain.FeatureTypeAttribute; import org.deegree.gml.GMLVersion; import org.junit.Test; public class TestGMLFeatureTypeParser { @Test public void testLimburgEHS () throws Exception { final GMLFeatureTypeParser parser = new GMLFeatureTypeParser (GMLVersion.GML_31); final FeatureType ft = parser.parseSchema ( getClass ().getClassLoader().getResourceAsStream ("nl/ipo/cds/etl/featuretype/schemas/limburg-ehs.xsd"), "EcologischeHoofdstructuur", "ISO-8859-1" ); assertFeatureTypeName (ft, "EcologischeHoofdstructuur", "http://mapserver.gis.umn.edu/mapserver"); assertHasAttribute (ft, "geometry", AttributeType.GEOMETRY); assertHasAttribute (ft, "OBJECTID", AttributeType.STRING); assertHasAttribute (ft, "GFID", AttributeType.STRING); assertHasAttribute (ft, "applicationSchema", AttributeType.STRING); assertHasAttribute (ft, "legalFoundationDate", AttributeType.STRING); assertHasAttribute (ft, "legalFoundationDocument", AttributeType.STRING); assertHasAttribute (ft, "inspireID", AttributeType.STRING); assertHasAttribute (ft, "siteName", AttributeType.STRING); assertHasAttribute (ft, "siteDesignation", AttributeType.STRING); assertHasAttribute (ft, "siteProtectionClassification", AttributeType.STRING); assertHasAttribute (ft, "percentageUnderDesignation", AttributeType.STRING); } @Test public void testOverijsselEHS () throws Exception { final GMLFeatureTypeParser parser = new GMLFeatureTypeParser (null);//GMLVersion.GML_31); final FeatureType ft = parser.parseSchema ( getClass ().getClassLoader().getResourceAsStream ("nl/ipo/cds/etl/featuretype/schemas/overijssel-ehs.xsd"), "EcologischeHoofdstructuur", "UTF-8" ); assertFeatureTypeName (ft, "EcologischeHoofdstructuur", "http://gisopenbaar.overijssel.nl/arcgis/services/Beschermde_gebieden/MapServer/WFSServer"); assertHasAttribute (ft, "OBJECTID_1", AttributeType.INTEGER); assertHasAttribute (ft, "OBJECTID", AttributeType.DOUBLE); assertHasAttribute (ft, "GFID", AttributeType.STRING); assertHasAttribute (ft, "applicationSchema", AttributeType.STRING); assertHasAttribute (ft, "legalFoundationDate", AttributeType.DATE_TIME); assertHasAttribute (ft, "legalFoundationDocument", AttributeType.STRING); assertHasAttribute (ft, "inspireID", AttributeType.STRING); assertHasAttribute (ft, "siteName", AttributeType.STRING); assertHasAttribute (ft, "siteDesignation", AttributeType.STRING); assertHasAttribute (ft, "siteProtectionClassification", AttributeType.STRING); assertHasAttribute (ft, "percentageUnderDesignation", AttributeType.DOUBLE); assertHasAttribute (ft, "omschrijving", AttributeType.STRING); assertHasAttribute (ft, "CODE", AttributeType.DOUBLE); assertHasAttribute (ft, "OPMERKING", AttributeType.STRING); assertHasAttribute (ft, "geometry", AttributeType.GEOMETRY); assertHasAttribute (ft, "SHAPE.AREA", AttributeType.DOUBLE); assertHasAttribute (ft, "SHAPE.LEN", AttributeType.DOUBLE); } @Test public void testAttributeTypes () throws Exception { final GMLFeatureTypeParser parser = new GMLFeatureTypeParser (GMLVersion.GML_31); final FeatureType ft = parser.parseSchema ( getClass ().getClassLoader().getResourceAsStream ("nl/ipo/cds/etl/featuretype/schemas/attributetypes.xsd"), "EcologischeHoofdstructuur", "ISO-8859-1" ); assertFeatureTypeName (ft, "EcologischeHoofdstructuur", "http://mapserver.gis.umn.edu/mapserver"); assertHasAttribute (ft, "geometryValue", AttributeType.GEOMETRY); assertHasAttribute (ft, "booleanValue", AttributeType.BOOLEAN); assertHasAttribute (ft, "decimalValue", AttributeType.DECIMAL); assertHasAttribute (ft, "doubleValue", AttributeType.DOUBLE); assertHasAttribute (ft, "integerValue", AttributeType.INTEGER); assertHasAttribute (ft, "integerValue2", AttributeType.INTEGER); assertHasAttribute (ft, "dateValue", AttributeType.DATE); assertHasAttribute (ft, "dateTimeValue", AttributeType.DATE_TIME); assertHasAttribute (ft, "timeValue", AttributeType.TIME); assertHasAttribute (ft, "floatValue", AttributeType.FLOAT); } @Test public void testDrentheAW () throws Exception { final GMLFeatureTypeParser parser = new GMLFeatureTypeParser (null);//GMLVersion.GML_31); parser.parseSchema ( getClass ().getClassLoader().getResourceAsStream ("nl/ipo/cds/etl/featuretype/schemas/drenthe-aw.xsd"), "AW-AW", "UTF-8" ); } @Test public void testZuidHollandST () throws Exception { final GMLFeatureTypeParser parser = new GMLFeatureTypeParser (null);//GMLVersion.GML_31); parser.parseSchema ( getClass ().getClassLoader().getResourceAsStream ("nl/ipo/cds/etl/featuretype/schemas/zuidholland-st.xsd"), "StilteGebieden", "UTF-8" ); } private static void assertFeatureTypeName (final FeatureType featureType, final String localPart, final String namespace) { assertEquals (localPart, featureType.getName ().getLocalPart ()); assertEquals (namespace, featureType.getName ().getNamespace ()); } private static void assertHasAttribute (final FeatureType featureType, final String localPart, final AttributeType type) { for (final FeatureTypeAttribute attribute: featureType.getAttributes ()) { if (localPart.equals (attribute.getName ().getLocalPart()) && type.equals (attribute.getType ())) { return; } } fail (String.format ("Attribute %s: %s not found", localPart, type)); } }