Package org.geoserver.catalog.rest

Source Code of org.geoserver.catalog.rest.JDBCTest

/* Copyright (c) 2001 - 2009 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.catalog.rest;

import java.util.HashMap;

import org.geoserver.catalog.DataStoreInfo;
import org.geoserver.data.test.MockData;
import org.geotools.data.DataStore;
import org.geotools.data.FeatureWriter;
import org.geotools.data.Transaction;
import org.geotools.data.h2.H2DataStoreFactory;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.jdbc.JDBCDataStore;
import org.geotools.jdbc.JDBCDataStoreFactory;
import org.opengis.feature.simple.SimpleFeature;
import org.w3c.dom.Document;

import com.mockrunner.mock.web.MockHttpServletResponse;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;

public class JDBCTest extends CatalogRESTTestSupport {

    @Override
    protected void setUpInternal() throws Exception {
        super.setUpInternal();
       
        HashMap params = new HashMap();
        params.put( JDBCDataStoreFactory.NAMESPACE.key, MockData.DEFAULT_URI);
        params.put( JDBCDataStoreFactory.DATABASE.key, "acme");
        params.put( JDBCDataStoreFactory.DBTYPE.key, "h2");
       
        H2DataStoreFactory fac =  new H2DataStoreFactory();
        fac.setBaseDirectory( getTestData().getDataDirectoryRoot() );
       
        JDBCDataStore ds = fac.createDataStore(params);
        try {
            if ( ds.getSchema("widgets") != null ) {
                return;
            }
        }
        catch( Exception e ) {
           
        }
       
        SimpleFeatureTypeBuilder tb = new SimpleFeatureTypeBuilder();
        tb.setName( "widgets" );
        tb.setSRS( "EPSG:4326");
        tb.add( "g", Point.class );
        tb.add( "name", String.class );
       
        ds.createSchema( tb.buildFeatureType() );
       
        FeatureWriter fw = ds.getFeatureWriterAppend( "widgets", Transaction.AUTO_COMMIT );
        fw.hasNext();
        SimpleFeature sf = (SimpleFeature) fw.next();
        sf.setAttribute("g", new GeometryFactory().createPoint( new Coordinate(1,1)));
        sf.setAttribute( "name", "one");
        fw.write();
       
        fw.hasNext();
        sf = (SimpleFeature) fw.next();
        sf.setAttribute("g", new GeometryFactory().createPoint( new Coordinate(2,2)));
        sf.setAttribute( "name", "two");
        fw.write();
       
        fw.close();
        ds.dispose();
    }
   
    public void testCreateDataStore() throws Exception {
        assertNull( catalog.getDataStoreByName( "gs", "acme") );
       
        String xml =
            "<dataStore>" +
              "<name>acme</name>" +
              "<connectionParameters>" +
                "<namespace>" + MockData.DEFAULT_URI + "</namespace>" +
                "<database>acme</database>" +
                "<dbtype>h2</dbtype>" +
              "</connectionParameters>" +
            "</dataStore>";
       
        MockHttpServletResponse resp =
            postAsServletResponse("/rest/workspaces/gs/datastores", xml );
        assertEquals( 201, resp.getStatusCode() );
       
        assertNotNull( catalog.getDataStoreByName( "gs", "acme") );
    }
   
    public void testCreateFeatureType() throws Exception {
        testCreateDataStore();
        DataStoreInfo ds = catalog.getDataStoreByName( "gs", "acme");
        assertNull( catalog.getFeatureTypeByDataStore(ds, "widgets"));
       
        String xml =
            "<featureType>" +
              "<name>widgets</name>" +
            "</featureType>";
       
        MockHttpServletResponse resp =
            postAsServletResponse("/rest/workspaces/gs/datastores/acme/featuretypes", xml );
        assertEquals( 201, resp.getStatusCode() );
       
        assertNotNull( catalog.getFeatureTypeByDataStore(ds, "widgets"));
       
        //do a get feature for a sanity check
        Document dom = getAsDOM( "wfs?request=getfeature&typename=gs:widgets");
        assertEquals( 2, dom.getElementsByTagName( "gs:widgets" ).getLength() );
    }
   
    public void testCreateGeometrylessFeatureType() throws Exception {
        testCreateDataStore();
       
        DataStoreInfo dsinfo = catalog.getDataStoreByName( "gs", "acme");
        assertNull( catalog.getFeatureTypeByDataStore(dsinfo, "widgetsNG"));
       
        DataStore ds = (DataStore) dsinfo.getDataStore(null);
        try {
            if ( ds.getSchema("widgetsNG") != null ) {
                return;
            }
        }
        catch( Exception e ) {}
       
        SimpleFeatureTypeBuilder tb = new SimpleFeatureTypeBuilder();
        tb.setName( "widgetsNG" );
        tb.add( "name", String.class );
       
        ds.createSchema( tb.buildFeatureType() );
       
        FeatureWriter fw = ds.getFeatureWriterAppend( "widgetsNG", Transaction.AUTO_COMMIT );
        fw.hasNext();
        SimpleFeature sf = (SimpleFeature) fw.next();
        sf.setAttribute( "name", "one");
        fw.write();
       
        fw.hasNext();
        sf = (SimpleFeature) fw.next();
        sf.setAttribute( "name", "two");
        fw.write();
       
        fw.close();
       
        String xml =
            "<featureType>" +
              "<name>widgetsNG</name>" +
            "</featureType>";
       
        MockHttpServletResponse resp =
            postAsServletResponse("/rest/workspaces/gs/datastores/acme/featuretypes", xml );
        assertEquals( 201, resp.getStatusCode() );
       
        assertNotNull( catalog.getFeatureTypeByDataStore(dsinfo, "widgetsNG"));
       
        //do a get feature for a sanity check
        Document dom = getAsDOM( "wfs?request=getfeature&typename=gs:widgetsNG");
        assertEquals( 2, dom.getElementsByTagName( "gs:widgetsNG" ).getLength() );
    }
}
TOP

Related Classes of org.geoserver.catalog.rest.JDBCTest

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.