Package org.geotools.data.wfs.v1_0_0

Source Code of org.geotools.data.wfs.v1_0_0.WFSDataStoreReadTest

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2004-2008, Open Source Geospatial Foundation (OSGeo)
*    (C) 2005, David Zwiers
*
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation;
*    version 2.1 of the License.
*
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*/
package org.geotools.data.wfs.v1_0_0;

import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.logging.Level;
import java.util.logging.Logger;

import junit.framework.TestCase;

import org.geotools.data.FeatureReader;
import org.geotools.data.Query;
import org.geotools.data.Transaction;
import org.geotools.data.wfs.WFSDataStoreFactory;
import org.geotools.factory.CommonFactoryFinder;
import org.geotools.filter.IllegalFilterException;
import org.opengis.feature.IllegalAttributeException;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.filter.Filter;
import org.opengis.filter.FilterFactory2;
import org.opengis.filter.expression.PropertyName;
import org.xml.sax.SAXException;

import com.vividsolutions.jts.geom.Envelope;

/**
* <p>
* DOCUMENT ME!
* </p>
* @author dzwiers
*
*
*
*
* @source $URL$
*/
public class WFSDataStoreReadTest extends TestCase {
   
    public WFSDataStoreReadTest(){
        Logger.global.setLevel(Level.SEVERE);
    }
   
    public void testEmpty(){/**/}

    public static WFS_1_0_0_DataStore getDataStore(URL server) throws IOException{
        try{
        Map m = new HashMap();
        m.put(WFSDataStoreFactory.URL.key,server);
        m.put(WFSDataStoreFactory.TIMEOUT.key,new Integer(10000)); // not debug
        //m.put(WFSDataStoreFactory.TIMEOUT.key,new Integer(1000000)); //for debug
        return (WFS_1_0_0_DataStore)(new WFSDataStoreFactory()).createDataStore(m);

        }catch(java.net.SocketException se){
            se.printStackTrace();
            return null;
        }
    }
       
    public static void doFeatureType(URL url,boolean get, boolean post, int i) throws IOException, SAXException{
      if( url == null) return;
        try{
        WFS_1_0_0_DataStore wfs = getDataStore(url);
        System.out.println("FeatureTypeTest + "+url);
        assertNotNull("No featureTypes",wfs.getTypeNames());
       
        String typeName = wfs.getTypeNames()[i];
        assertNotNull("Null featureType in ["+i+"]",typeName);
       
        //System.out.println("FT name = "+typeName);
        if(get){
            // get
            SimpleFeatureType ft = wfs.getSchemaGet(typeName);
            assertNotNull("GET DescribeFeatureType for "+typeName+" was null",ft);
            assertTrue("GET "+typeName+" must have 1 geom and atleast 1 other attribute -- fair assumption",ft.getGeometryDescriptor()!=null && ft.getAttributeDescriptors()!=null && ft.getAttributeCount()>0);
        }
        if(post){
            // post
            SimpleFeatureType ft = wfs.getSchemaPost(typeName);
            assertNotNull("POST DescribeFeatureType for "+typeName+" resulted in null",ft);
            assertTrue("POST "+typeName+" must have 1 geom and atleast 1 other attribute -- fair assumption",ft.getGeometryDescriptor()!=null && ft.getAttributeDescriptors()!=null && ft.getAttributeCount()>0);
        }
        }catch(java.net.SocketException se){
            se.printStackTrace();
        }
    }
   
    public static void doFeatureReader(URL url, boolean get, boolean post, int i) throws NoSuchElementException, IOException, IllegalAttributeException, SAXException{
      if( url == null) return;
      try{
        System.out.println("FeatureReaderTest + "+url);
        WFS_1_0_0_DataStore wfs = getDataStore(url);
        assertNotNull("No featureTypes",wfs.getTypeNames());
        assertNotNull("Null featureType in [0]",wfs.getTypeNames()[i]);
        Query query = new Query(wfs.getTypeNames()[i]);
       
        if(post){
        //   post
             FeatureReader<SimpleFeatureType, SimpleFeature> ft = wfs.getFeatureReaderPost(query,Transaction.AUTO_COMMIT);
            assertNotNull("FeatureType was null",ft);
            assertTrue("must have 1 feature -- fair assumption",ft.hasNext() && ft.getFeatureType()!=null && ft.next()!=null);
            // disable for now
//            assertNotNull("CRS missing ",ft.getFeatureType().getDefaultGeometry().getCoordinateSystem());
            ft.close();
        }
        if(get){
        //   get
             FeatureReader<SimpleFeatureType, SimpleFeature> ft = wfs.getFeatureReaderGet(query,Transaction.AUTO_COMMIT);
            assertNotNull("FeatureType was null",ft);
            assertTrue("must have 1 feature -- fair assumption",ft.hasNext() && ft.getFeatureType()!=null && ft.next()!=null);
            // disable for now
//            assertNotNull("CRS missing ",ft.getFeatureType().getDefaultGeometry().getCoordinateSystem());
            ft.close();}
        }catch(java.net.SocketException se){
            se.printStackTrace();
        }
    }
   
    public static void doFeatureReaderWithQuery(URL url, boolean get, boolean post, int i) throws NoSuchElementException, IllegalAttributeException, IOException, SAXException{
      if( url == null) return;
      try{
        System.out.println("FeatureReaderWithFilterTest + "+url);
        WFS_1_0_0_DataStore wfs = getDataStore(url);
        assertNotNull("No featureTypes",wfs.getTypeNames());
        assertNotNull("Null featureType in [0]",wfs.getTypeNames()[i]);
        SimpleFeatureType ft = wfs.getSchema(wfs.getTypeNames()[i]);
        // take atleast attributeType 3 to avoid the undeclared one .. inherited optional attrs
       
        String[] props;
        props = new String[] {ft.getGeometryDescriptor().getLocalName()};
       
        Query query = new Query(ft.getTypeName());
        query.setPropertyNames(props);
        String fid=null;
        if(get){
            //   get
             FeatureReader<SimpleFeatureType, SimpleFeature> fr = wfs.getFeatureReaderGet(query,Transaction.AUTO_COMMIT);
            try{
                assertNotNull("FeatureType was null",ft);
               
                SimpleFeatureType featureType = fr.getFeatureType();
                if( ft.getAttributeCount()>1 ){
                    assertEquals("Query must restrict feature type to only having 1 AttributeType", 1, featureType.getAttributeCount() );
                }
                assertTrue("must have 1 feature -- fair assumption",fr.hasNext() && featureType!=null );
                SimpleFeature feature = fr.next();
                featureType=feature.getFeatureType();
                if( ft.getAttributeCount()>1 ){
                    assertEquals("Query must restrict feature type to only having 1 AttributeType", 1, featureType.getAttributeCount() );
                }
                assertNotNull( "must have 1 feature ", feature);
                fid=feature.getID();
                int j=0;while(fr.hasNext()){
                    fr.next();
                    j++;
                }
                System.out.println(j+" Features");
            }finally{
                fr.close();
            }
        }if(post){
            //   post

             FeatureReader<SimpleFeatureType, SimpleFeature> fr = wfs.getFeatureReaderPost(query,Transaction.AUTO_COMMIT);
            try{
                assertNotNull("FeatureType was null",ft);
                SimpleFeatureType featureType = fr.getFeatureType();
                if( ft.getAttributeCount()>1 ){
                    assertEquals("Query must restrict feature type to only having 1 AttributeType", 1, featureType.getAttributeCount() );
                }
                assertTrue("must have 1 feature -- fair assumption",fr.hasNext() && featureType!=null );
                SimpleFeature feature = fr.next();
                featureType=feature.getFeatureType();
                if( ft.getAttributeCount()>1 ){
                    assertEquals("Query must restrict feature type to only having 1 AttributeType", 1, featureType.getAttributeCount() );
                }
                assertNotNull( "must have 1 feature ", feature);
                fid=feature.getID();
                int j=0;while(fr.hasNext()){
                    fr.next();
                    j++;
                }
                System.out.println(j+" Features");
            }finally{
                fr.close();
            }
        }

        // test fid filter
        FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
        query.setFilter( ff.id( ff.featureId(fid)));
        if( get ){
             FeatureReader<SimpleFeatureType, SimpleFeature> fr = wfs.getFeatureReaderGet(query,Transaction.AUTO_COMMIT);
            try{
                assertNotNull("FeatureType was null",ft);
                int j=0;while(fr.hasNext()){ assertEquals(fid,fr.next().getID());j++;}
                assertEquals( 1,j );
            }finally{
                fr.close();
            }
        }if (post){
             FeatureReader<SimpleFeatureType, SimpleFeature> fr = wfs.getFeatureReaderPost(query,Transaction.AUTO_COMMIT);
            try{
                assertNotNull("FeatureType was null",ft);
                int j=0;while(fr.hasNext()){ assertEquals(fid,fr.next().getID());j++;}
                assertEquals( 1,j );
            }finally{
                fr.close();
            }
        }
        }catch(java.net.SocketException se){
            se.printStackTrace();
        }
       
    }
       /** Request a subset of available properties
     * @throws IllegalFilterException */
    public static void doFeatureReaderWithBBox(URL url, boolean get, boolean post, int i, Envelope bbox) throws NoSuchElementException, IllegalAttributeException, IOException, SAXException, IllegalFilterException{
        if( url == null ) return; // test disabled (must be site specific)               
        try{
        System.out.println("FeatureReaderWithFilterTest + "+url);
        WFS_1_0_0_DataStore wfs = getDataStore(url);
        assertNotNull("No featureTypes",wfs.getTypeNames());
       
        String typeName = wfs.getTypeNames()[i];
        assertNotNull("Null featureType in [0]",typeName);
        SimpleFeatureType featureType = wfs.getSchema(typeName);
       
        // take atleast attributeType 3 to avoid the undeclared one .. inherited optional attrs
        FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(null);
        Query query = new Query(featureType.getTypeName());
        PropertyName theGeom = ff.property( featureType.getGeometryDescriptor().getName() );
        Filter filter = ff.bbox( theGeom, bbox.getMinX(), bbox.getMinY(), bbox.getMaxX(), bbox.getMaxY(), "EPSG:4326" );
               
        query.setFilter( filter );
        //query.setMaxFeatures(3);
        if(get){
            //  get
            FeatureReader<SimpleFeatureType, SimpleFeature> fr = wfs.getFeatureReaderGet(query,Transaction.AUTO_COMMIT);
            assertNotNull("GET "+typeName+" FeatureType was null",featureType);
                       
            assertTrue("GET " + typeName + " has next?", fr.hasNext());
            assertNotNull("GET " + typeName + " has feature type", fr.getFeatureType());

            SimpleFeature feature = fr.next();

            assertNotNull("GET " + typeName + " has non null feature", feature);

            int j = 0;
            while (fr.hasNext()) {
                fr.next();
                j++;
            }
            System.out.println("bbox selected " + j + " Features");
            fr.close();
        }if(post){
            //  post

            FeatureReader<SimpleFeatureType, SimpleFeature> fr = wfs.getFeatureReaderPost(query,Transaction.AUTO_COMMIT);
            assertNotNull("POST "+typeName+"FeatureType was null",featureType);
            assertTrue("POST "+typeName+"must have 1 feature -- fair assumption",fr.hasNext() && fr.getFeatureType()!=null && fr.next()!=null);
            int j=0;while(fr.hasNext()){fr.next();j++;}
            System.out.println("bbox selected "+j+" Features");
            fr.close();
        }
        }catch(java.net.SocketException se){
            se.printStackTrace();
        }
    }
}
TOP

Related Classes of org.geotools.data.wfs.v1_0_0.WFSDataStoreReadTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.