package nl.ipo.cds.etl.test; import java.beans.PropertyDescriptor; import java.io.InputStream; import java.lang.reflect.InvocationTargetException; import java.sql.Date; import java.util.ArrayList; import java.util.List; import javax.xml.bind.DatatypeConverter; import javax.xml.bind.JAXBException; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import nl.ipo.cds.etl.GenericFeature; import nl.ipo.cds.etl.featurecollection.FeatureCollection; import nl.ipo.cds.etl.featurecollection.WFSResponse; import nl.ipo.cds.etl.featurecollection.WFSResponseReader; import nl.ipo.cds.etl.featuretype.FeatureTypeNotFoundException; import nl.ipo.cds.etl.theme.protectedSite.ProtectedSite; import nl.ipo.cds.etl.util.LSInputUtils; import org.deegree.commons.xml.XMLParsingException; import org.deegree.cs.exceptions.UnknownCRSException; import org.deegree.feature.types.AppSchema; import org.deegree.gml.GMLVersion; import org.deegree.gml.schema.GMLAppSchemaReader; import org.junit.Test; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; public class TestData { private XMLInputFactory inputFactory; public TestData() { inputFactory = XMLInputFactory.newInstance(); } public InputStream getInputStream() { return getClass().getResourceAsStream("featureCollection.xml"); } @Test public void dummy(){ } public XMLStreamReader getXMLStreamReader() throws XMLStreamException { return inputFactory.createXMLStreamReader(getInputStream()); } public String getFeatureTypeName () { return "StilteGebieden"; } public AppSchema getAppSchema () throws ClassCastException, ClassNotFoundException, InstantiationException, IllegalAccessException { final InputStream stream = getClass ().getClassLoader ().getResourceAsStream ("nl/ipo/cds/etl/test/appschema.xsd"); final GMLAppSchemaReader appSchemaReader = new GMLAppSchemaReader (GMLVersion.GML_31, null, LSInputUtils.createInput (stream, "UTF-8")); return appSchemaReader.extractAppSchema (); } public FeatureCollection getFeatureCollection() throws XMLStreamException, JAXBException, XMLParsingException, UnknownCRSException, ClassCastException, ClassNotFoundException, InstantiationException, IllegalAccessException, FeatureTypeNotFoundException { final WFSResponseReader wfsResponseReader = new WFSResponseReader(); final WFSResponse wfsResponse = wfsResponseReader.parseWFSResponse(getXMLStreamReader (), getAppSchema (), getFeatureTypeName ()); return wfsResponse.getFeatureCollection(); } public List<ProtectedSite> getProtectedSites () throws XMLParsingException, ClassCastException, XMLStreamException, JAXBException, UnknownCRSException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, FeatureTypeNotFoundException { final List<ProtectedSite> protectedSites = new ArrayList<ProtectedSite> (); for (final GenericFeature feature: getFeatureCollection ()) { final ProtectedSite protectedSite = new ProtectedSite (); final BeanWrapper wrapper = new BeanWrapperImpl (protectedSite); protectedSite.setId (feature.getId ()); for (final PropertyDescriptor pd: wrapper.getPropertyDescriptors ()) { if (pd.getName ().equals ("id")) { continue; } if (pd.getWriteMethod () == null) { continue; } final Object value; if (pd.getPropertyType ().equals (String[].class)) { value = feature.get (pd.getName ()).toString ().split ("\\|"); } else if (pd.getPropertyType ().equals (Date.class)) { value = new Date (DatatypeConverter.parseDate (feature.get (pd.getName ()).toString ()).getTime ().getTime ()); } else { value = feature.get (pd.getName ()); } pd.getWriteMethod ().invoke (protectedSite, value); } protectedSites.add (protectedSite); } return protectedSites; } }