|
From: <svn...@os...> - 2012-01-17 17:15:00
|
Author: aaime
Date: 2012-01-17 09:14:52 -0800 (Tue, 17 Jan 2012)
New Revision: 38499
Added:
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureReaderTest.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureSourceExposePkTest.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureStoreExposedPkTest.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerLobTest.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerLobTestSetup.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerNoPrimaryKeyTest.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerNoPrimaryKeyTestSetup.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerSkipColumnTest.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerSkipColumnTestSetup.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerViewTest.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerViewTestSetup.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerVirtualTableTest.java
Modified:
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/main/java/org/geotools/data/sqlserver/SQLServerDialect.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerDataStoreAPITestSetup.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerJoinTestSetup.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerPrimaryKeyTestSetup.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerTestSetup.java
Log:
[GEOT-4021] Increase test coverage for SQL server store
Modified: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/main/java/org/geotools/data/sqlserver/SQLServerDialect.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/main/java/org/geotools/data/sqlserver/SQLServerDialect.java 2012-01-17 17:14:14 UTC (rev 38498)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/main/java/org/geotools/data/sqlserver/SQLServerDialect.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -370,4 +370,19 @@
}
}
+ @Override
+ public void encodeValue(Object value, Class type, StringBuffer sql) {
+ if(byte[].class.equals(type)) {
+ byte[] b = (byte[]) value;
+
+ //encode as hex string
+ sql.append("0x");
+ for (int i=0; i < b.length; i++) {
+ sql.append(Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 ));
+ }
+ } else {
+ super.encodeValue(value, type, sql);
+ }
+ }
+
}
Modified: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerDataStoreAPITestSetup.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerDataStoreAPITestSetup.java 2012-01-17 17:14:14 UTC (rev 38498)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerDataStoreAPITestSetup.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -39,6 +39,8 @@
+ "geometry::STGeomFromText('LINESTRING(3 0, 3 2, 3 3, 3 4)',4326)," + "'r2')");
run("INSERT INTO road (id,geom,name) VALUES ( 2,"
+ "geometry::STGeomFromText('LINESTRING(3 2, 4 2, 5 3)',4326)," + "'r3')");
+
+ run("CREATE SPATIAL INDEX _road_geometry_index on road(geom) WITH (BOUNDING_BOX = (-10, -10, 10, 10))");
}
@Override
@@ -51,6 +53,8 @@
+ "'rv1', 4.5)");
run("INSERT INTO river (id,geom,river, flow) VALUES ( 1,"
+ "geometry::STGeomFromText('MULTILINESTRING((4 6, 4 8, 6 10))',4326)," + "'rv2', 3.0)");
+
+ run("CREATE SPATIAL INDEX _river_geometry_index on river(geom) WITH (BOUNDING_BOX = (-10, -10, 10, 10))");
}
@Override
@@ -60,6 +64,8 @@
run("INSERT INTO lake (id,geom,name) VALUES ( 0,"
+ "geometry::STGeomFromText('POLYGON((12 6, 14 8, 16 6, 16 4, 14 4, 12 6))',4326)," + "'muddy')");
+
+ run("CREATE SPATIAL INDEX _lake_geometry_index on lake(geom) WITH (BOUNDING_BOX = (-100, -100, 100, 100))");
}
@Override
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureReaderTest.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureReaderTest.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureReaderTest.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,13 @@
+package org.geotools.data.sqlserver;
+
+import org.geotools.jdbc.JDBCFeatureReaderTest;
+import org.geotools.jdbc.JDBCTestSetup;
+
+public class SQLServerFeatureReaderTest extends JDBCFeatureReaderTest {
+
+ @Override
+ protected JDBCTestSetup createTestSetup() {
+ return new SQLServerTestSetup();
+ }
+
+}
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureSourceExposePkTest.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureSourceExposePkTest.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureSourceExposePkTest.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,13 @@
+package org.geotools.data.sqlserver;
+
+import org.geotools.jdbc.JDBCFeatureSourceExposePkTest;
+import org.geotools.jdbc.JDBCTestSetup;
+
+public class SQLServerFeatureSourceExposePkTest extends JDBCFeatureSourceExposePkTest {
+
+ @Override
+ protected JDBCTestSetup createTestSetup() {
+ return new SQLServerTestSetup();
+ }
+
+}
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureStoreExposedPkTest.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureStoreExposedPkTest.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerFeatureStoreExposedPkTest.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,63 @@
+package org.geotools.data.sqlserver;
+
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import org.geotools.data.Transaction;
+import org.geotools.jdbc.JDBCFeatureStoreExposePkTest;
+import org.geotools.jdbc.JDBCTestSetup;
+
+public class SQLServerFeatureStoreExposedPkTest extends JDBCFeatureStoreExposePkTest {
+
+ @Override
+ protected JDBCTestSetup createTestSetup() {
+ return new SQLServerTestSetup();
+ }
+
+ @Override
+ public void testAddInTransaction() throws IOException {
+ // does not work, see GEOT-2832
+ }
+
+ public void testAddFeaturesUseProvidedFid() throws IOException {
+ // cannot work in general since the primary column is an identity:
+ // - it is not possible to insert into an indentity column unless the IDENTITY_INSERT
+ // property is set on it
+ // - however if IDENTITY_INSERT is setup, then the column stops generating values and
+ // requires one to insert values manually, which breaks other tests
+ }
+
+ @Override
+ public void testExternalConnection() throws IOException, SQLException {
+ // MVCC is not enabled by default in SQL Server, to do that one has to
+ // use something like:
+ // ALTER DATABASE ' + DB_NAME() + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE ;
+ // ALTER DATABASE ' + DB_NAME() + ' SET READ_COMMITTED_SNAPSHOT ON;
+ // ALTER DATABASE ' + DB_NAME() + ' SET MULTI_USER;'
+ // However this requires having admin access to the database, so we cannot
+ // assume we can run it, thus we just check if it's possible at all
+ // When the above is set the test passes, verified against SQL Server 2008
+
+ Connection cx = null;
+ Statement st = null;
+ ResultSet rs = null;
+ try {
+ cx = dataStore.getConnection(Transaction.AUTO_COMMIT);
+ st = cx.createStatement();
+ rs = st.executeQuery("SELECT is_read_committed_snapshot_on FROM sys.databases WHERE name= db_name()");
+ if(rs.next()) {
+ if(rs.getBoolean(1)) {
+ super.testExternalConnection();
+ }
+ }
+ } finally {
+ dataStore.closeSafe(rs);
+ dataStore.closeSafe(st);
+ dataStore.closeSafe(cx);
+ }
+
+ }
+}
Modified: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerJoinTestSetup.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerJoinTestSetup.java 2012-01-17 17:14:14 UTC (rev 38498)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerJoinTestSetup.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -28,12 +28,14 @@
protected void createJoinTable() throws Exception {
run( "CREATE TABLE ftjoin ( id int, name VARCHAR(10), geom GEOMETRY)" );
- //run("CALL AddGeometryColumn('geotools', 'ftjoin', 'geom', 4326, 'GEOMETRY', 2)");
run("ALTER TABLE ftjoin ALTER COLUMN name VARCHAR(255) COLLATE Latin1_General_CS_AS");
run( "INSERT INTO ftjoin VALUES (0, 'zero', geometry::STGeomFromText('POLYGON ((-0.1 -0.1, -0.1 0.1, 0.1 0.1, 0.1 -0.1, -0.1 -0.1))', 4326))");
run( "INSERT INTO ftjoin VALUES (1, 'one', geometry::STGeomFromText('POLYGON ((-1.1 -1.1, -1.1 1.1, 1.1 1.1, 1.1 -1.1, -1.1 -1.1))', 4326))");
run( "INSERT INTO ftjoin VALUES (2, 'two', geometry::STGeomFromText('POLYGON ((-10 -10, -10 10, 10 10, 10 -10, -10 -10))', 4326))");
run( "INSERT INTO ftjoin VALUES (3, 'three', NULL)");
+
+ // won't work in sql server since the table has no primary key
+ // run("CREATE SPATIAL INDEX _ftjoin_geometry_index on ftjoin(geom) WITH (BOUNDING_BOX = (-10, -10, 10, 10))");
}
@Override
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerLobTest.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerLobTest.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerLobTest.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,13 @@
+package org.geotools.data.sqlserver;
+
+import org.geotools.jdbc.JDBCLobTest;
+import org.geotools.jdbc.JDBCLobTestSetup;
+
+public class SQLServerLobTest extends JDBCLobTest {
+
+ @Override
+ protected JDBCLobTestSetup createTestSetup() {
+ return new SQLServerLobTestSetup(new SQLServerTestSetup());
+ }
+
+}
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerLobTestSetup.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerLobTestSetup.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerLobTestSetup.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,37 @@
+package org.geotools.data.sqlserver;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+
+import org.geotools.jdbc.JDBCLobTestSetup;
+import org.geotools.jdbc.JDBCTestSetup;
+
+public class SQLServerLobTestSetup extends JDBCLobTestSetup {
+
+ protected SQLServerLobTestSetup(JDBCTestSetup delegate) {
+ super(delegate);
+ }
+
+ @Override
+ protected void createLobTable() throws Exception {
+
+ Connection con = getDataSource().getConnection();
+ con.prepareStatement("create table \"testlob\" (\"fid\" int identity(0, 1) primary key, " +
+ "\"blob_field\" VARBINARY(50), \"clob_field\" TEXT, \"raw_field\" VARBINARY(50))").execute();
+
+ PreparedStatement ps =con.prepareStatement( "INSERT INTO \"testlob\" (\"blob_field\",\"clob_field\",\"raw_field\") VALUES (?,?,?)");
+ ps.setBytes(1, new byte[] {1,2,3,4,5});
+ ps.setString(2, "small clob");
+ ps.setBytes(3, new byte[] {6,7,8,9,10});
+ ps.execute();
+ ps.close();
+ con.close();
+ }
+
+ @Override
+ protected void dropLobTable() throws Exception {
+ runSafe("DROP TABLE \"testlob\"");
+ }
+
+
+}
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerNoPrimaryKeyTest.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerNoPrimaryKeyTest.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerNoPrimaryKeyTest.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,13 @@
+package org.geotools.data.sqlserver;
+
+import org.geotools.jdbc.JDBCNoPrimaryKeyTest;
+import org.geotools.jdbc.JDBCNoPrimaryKeyTestSetup;
+
+public class SQLServerNoPrimaryKeyTest extends JDBCNoPrimaryKeyTest {
+
+ @Override
+ protected JDBCNoPrimaryKeyTestSetup createTestSetup() {
+ return new SQLServerNoPrimaryKeyTestSetup(new SQLServerTestSetup());
+ }
+
+}
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerNoPrimaryKeyTestSetup.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerNoPrimaryKeyTestSetup.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerNoPrimaryKeyTestSetup.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,30 @@
+package org.geotools.data.sqlserver;
+
+import org.geotools.jdbc.JDBCNoPrimaryKeyTestSetup;
+import org.geotools.jdbc.JDBCTestSetup;
+
+public class SQLServerNoPrimaryKeyTestSetup extends JDBCNoPrimaryKeyTestSetup {
+
+ protected SQLServerNoPrimaryKeyTestSetup(JDBCTestSetup delegate) {
+ super(delegate);
+ }
+
+ @Override
+ protected void createLakeTable() throws Exception {
+ run("CREATE TABLE \"lake\"(\"id\" int, "
+ + "\"geom\" geometry, \"name\" varchar(255) )");
+
+ run("INSERT INTO \"lake\" (\"id\",\"geom\",\"name\") VALUES (0,"
+ + "geometry::STGeomFromText('POLYGON((12 6, 14 8, 16 6, 16 4, 14 4, 12 6))',4326),"
+ + "'muddy')");
+
+ // can't do this, sql server requires a primary key to use spatial indexes
+ // run("CREATE SPATIAL INDEX _lake_geometry_index on lake(geom) WITH (BOUNDING_BOX = (-10, -10, 10, 10))");
+ }
+
+ @Override
+ protected void dropLakeTable() throws Exception {
+ runSafe("DROP TABLE \"lake\"");
+ }
+
+}
Modified: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerPrimaryKeyTestSetup.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerPrimaryKeyTestSetup.java 2012-01-17 17:14:14 UTC (rev 38498)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerPrimaryKeyTestSetup.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -37,6 +37,8 @@
run( "INSERT INTO auto (name,geom ) VALUES ('one',geometry::STGeomFromText('POINT(1 1)',4326))");
run( "INSERT INTO auto (name,geom ) VALUES ('two',geometry::STGeomFromText('POINT(2 2)',4326))");
run( "INSERT INTO auto (name,geom ) VALUES ('three',geometry::STGeomFromText('POINT(3 3)',4326))");
+
+ run("CREATE SPATIAL INDEX _auto_geometry_index on auto(geom) WITH (BOUNDING_BOX = (-10, -10, 10, 10))");
}
@Override
@@ -51,6 +53,8 @@
run( "INSERT INTO noninc VALUES (1, 'one', geometry::STGeomFromText('POINT(1 1)',4326))");
run( "INSERT INTO noninc VALUES (2, 'two', geometry::STGeomFromText('POINT(2 2)',4326))");
run( "INSERT INTO noninc VALUES (3, 'three', geometry::STGeomFromText('POINT(3 3)',4326))");
+
+ run("CREATE SPATIAL INDEX _noninc_geometry_index on noninc(geom) WITH (BOUNDING_BOX = (-10, -10, 10, 10))");
}
@Override
@@ -62,6 +66,8 @@
run( "INSERT INTO multi VALUES (1, 'x', 'one', geometry::STGeomFromText('POINT(1 1)',4326))");
run( "INSERT INTO multi VALUES (2, 'y', 'two', geometry::STGeomFromText('POINT(2 2)',4326))");
run( "INSERT INTO multi VALUES (3, 'z', 'three', geometry::STGeomFromText('POINT(3 3)',4326))");
+
+ run("CREATE SPATIAL INDEX _multi_geometry_index on multi(geom) WITH (BOUNDING_BOX = (-10, -10, 10, 10))");
}
@Override
@@ -80,6 +86,9 @@
run( "INSERT INTO uniq VALUES (1, 'one',geometry::STGeomFromText('POINT(1 1)',4326))");
run( "INSERT INTO uniq VALUES (2, 'two',geometry::STGeomFromText('POINT(2 2)',4326))");
run( "INSERT INTO uniq VALUES (3, 'three',geometry::STGeomFromText('POINT(3 3)',4326))");
+
+ // spatial indexes in sql server require a primary key
+ // run("CREATE SPATIAL INDEX _uniq_geometry_index on uniq(geom) WITH (BOUNDING_BOX = (-10, -10, 10, 10))");
}
@Override
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerSkipColumnTest.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerSkipColumnTest.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerSkipColumnTest.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,22 @@
+package org.geotools.data.sqlserver;
+
+import org.geotools.geometry.jts.ReferencedEnvelope;
+import org.geotools.jdbc.JDBCSkipColumnTest;
+import org.geotools.jdbc.JDBCSkipColumnTestSetup;
+
+public class SQLServerSkipColumnTest extends JDBCSkipColumnTest {
+
+ @Override
+ protected JDBCSkipColumnTestSetup createTestSetup() {
+ return new SQLServerSkipColumnTestSetup();
+ }
+
+ public void testGetBounds() throws Exception {
+ // sql server does not return empty bounds for a single point, but a very smal one instead
+ ReferencedEnvelope env = dataStore.getFeatureSource(tname(SKIPCOLUMN)).getBounds();
+ assertEquals(0.0, env.getMinX(), 1e-6);
+ assertEquals(0.0, env.getMinY(), 1e-6);
+ assertEquals(0.0, env.getMaxX(), 1e-6);
+ assertEquals(0.0, env.getMaxY(), 1e-6);
+ }
+}
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerSkipColumnTestSetup.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerSkipColumnTestSetup.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerSkipColumnTestSetup.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,28 @@
+package org.geotools.data.sqlserver;
+
+import org.geotools.jdbc.JDBCSkipColumnTestSetup;
+
+public class SQLServerSkipColumnTestSetup extends JDBCSkipColumnTestSetup {
+
+ protected SQLServerSkipColumnTestSetup() {
+ super(new SQLServerTestSetup());
+ }
+
+ @Override
+ protected void createSkipColumnTable() throws Exception {
+ run("CREATE TABLE \"skipcolumn\"(" //
+ + "\"fid\" int identity(0, 1) primary key, " //
+ + "\"id\" integer, " //
+ + "\"geom\" geometry, " //
+ + "\"weirdproperty\" xml," //
+ + "\"name\" varchar(255))");
+ run("INSERT INTO \"skipcolumn\" VALUES( 0, geometry::STGeomFromText('POINT(0 0)', 4326), null, 'GeoTools')");
+ }
+
+ @Override
+ protected void dropSkipColumnTable() throws Exception {
+ runSafe("DELETE FROM GEOMETRY_COLUMNS WHERE F_TABLE_NAME = 'skipcolumn'");
+ runSafe("DROP TABLE \"skipcolumn\"");
+ }
+
+}
Modified: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerTestSetup.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerTestSetup.java 2012-01-17 17:14:14 UTC (rev 38498)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerTestSetup.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -86,6 +86,9 @@
sql = "INSERT INTO ft1 (geometry,intProperty,doubleProperty,stringProperty) VALUES ("
+ "geometry::STGeomFromText('POINT(2 2)',4326), 2, 2.2,'two');";
run(sql);
+
+ // create the spatial index
+ run("CREATE SPATIAL INDEX _ft1_geometry_index on ft1(geometry) WITH (BOUNDING_BOX = (-10, -10, 10, 10))");
}
@Override
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerViewTest.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerViewTest.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerViewTest.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,41 @@
+package org.geotools.data.sqlserver;
+
+import org.geotools.jdbc.JDBCViewTest;
+import org.geotools.jdbc.JDBCViewTestSetup;
+import org.opengis.feature.type.AttributeDescriptor;
+import org.opengis.feature.type.AttributeType;
+
+import com.vividsolutions.jts.geom.Geometry;
+
+public class SQLServerViewTest extends JDBCViewTest {
+
+ @Override
+ protected JDBCViewTestSetup createTestSetup() {
+ return new SQLServerViewTestSetup();
+ }
+
+
+ /**
+ * Override since sql server metadata over nullability over views works differently than in other databases
+ */
+ protected void assertAttributesEqual(AttributeDescriptor expected, AttributeDescriptor actual) {
+ assertEquals(aname(expected.getName()), actual.getName());
+ // assertEquals(expected.getMinOccurs(), actual.getMinOccurs());
+ assertEquals(expected.getMaxOccurs(), actual.getMaxOccurs());
+ // assertEquals(expected.isNillable(), actual.isNillable());
+ assertEquals(expected.getDefaultValue(), actual.getDefaultValue());
+
+ AttributeType texpected = expected.getType();
+ AttributeType tactual = actual.getType();
+
+ if ( Number.class.isAssignableFrom( texpected.getBinding() ) ) {
+ assertTrue( Number.class.isAssignableFrom( tactual.getBinding() ) );
+ }
+ else if ( Geometry.class.isAssignableFrom( texpected.getBinding())) {
+ assertTrue( Geometry.class.isAssignableFrom( tactual.getBinding()));
+ }
+ else {
+ assertTrue(texpected.getBinding().isAssignableFrom(tactual.getBinding()));
+ }
+ }
+}
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerViewTestSetup.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerViewTestSetup.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerViewTestSetup.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,50 @@
+package org.geotools.data.sqlserver;
+
+import org.geotools.jdbc.JDBCViewTestSetup;
+
+public class SQLServerViewTestSetup extends JDBCViewTestSetup {
+
+ protected SQLServerViewTestSetup() {
+ super(new SQLServerTestSetup());
+ }
+
+ @Override
+ protected void createLakesTable() throws Exception {
+ run("CREATE TABLE lakes(fid int IDENTITY(0,1) PRIMARY KEY, id int, "
+ + "geom geometry, name varchar(255) )");
+
+ run("INSERT INTO lakes (id,geom,name) VALUES ( 0,"
+ + "geometry::STGeomFromText('POLYGON((12 6, 14 8, 16 6, 16 4, 14 4, 12 6))',4326),"
+ + "'muddy')");
+
+ run("CREATE SPATIAL INDEX _lakes_geometry_index on lakes(geom) WITH (BOUNDING_BOX = (-100, -100, 100, 100))");
+ }
+
+ @Override
+ protected void dropLakesTable() throws Exception {
+ runSafe("DROP TABLE \"lakes\"");
+ }
+
+ @Override
+ protected void createLakesView() throws Exception {
+ run("create view \"lakesview\" as select * from \"lakes\"");
+ }
+
+ @Override
+ protected void dropLakesView() throws Exception {
+ runSafe("DROP VIEW \"lakesview\"");
+ }
+
+ @Override
+ protected void createLakesViewPk() throws Exception {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ protected void dropLakesViewPk() throws Exception {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Added: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerVirtualTableTest.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerVirtualTableTest.java (rev 0)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/test/java/org/geotools/data/sqlserver/SQLServerVirtualTableTest.java 2012-01-17 17:14:52 UTC (rev 38499)
@@ -0,0 +1,14 @@
+package org.geotools.data.sqlserver;
+
+import org.geotools.jdbc.JDBCDataStoreAPITestSetup;
+import org.geotools.jdbc.JDBCVirtualTableTest;
+
+
+public class SQLServerVirtualTableTest extends JDBCVirtualTableTest {
+
+ @Override
+ protected JDBCDataStoreAPITestSetup createTestSetup() {
+ return new SQLServerDataStoreAPITestSetup();
+ }
+
+}
|