/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2002-2008, Open Source Geospatial Foundation (OSGeo) * * 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.oracle; import org.geotools.jdbc.JDBCDataStore; import org.geotools.jdbc.JDBCGeometryTestSetup; /** * * * @source $URL$ */ public class OracleGeometryTestSetup extends JDBCGeometryTestSetup { protected OracleGeometryTestSetup() { super(new OracleTestSetup()); } @Override public void setUp() throws Exception { super.setUp(); // clean up runSafe("DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'COLA_MARKETS_CS'" ); runSafe("DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'GTMETA'" ); runSafe("DROP TABLE COLA_MARKETS_CS PURGE"); runSafe("DROP TABLE GTMETA PURGE"); runSafe("DROP TABLE GEOMETRY_COLUMNS PURGE"); // create the cola markets table run("CREATE TABLE cola_markets_cs (" + " mkt_id NUMBER PRIMARY KEY," + " name VARCHAR2(32)," + " shape SDO_GEOMETRY)"); // metadata run("INSERT INTO user_sdo_geom_metadata " + " (TABLE_NAME," + " COLUMN_NAME," + " DIMINFO," + " SRID)" + " VALUES (" + " 'cola_markets_cs'," + " 'shape'," + " SDO_DIM_ARRAY(" + " SDO_DIM_ELEMENT('Longitude', -180, 180, 10), " + " SDO_DIM_ELEMENT('Latitude', -90, 90, 10) " + " )," + " 8307)"); // index run("CREATE INDEX cola_spatial_idx_cs" + " ON cola_markets_cs(shape)" + " INDEXTYPE IS MDSYS.SPATIAL_INDEX"); // insert data with simple geometry fallback run("INSERT INTO cola_markets_cs VALUES(" + " 1," + " 'polyfallback'," + " SDO_GEOMETRY(" + " 2003," + " 8307," + " NULL," + " SDO_ELEM_INFO_ARRAY(1,0,57, 11,1003,3)," + " SDO_ORDINATE_ARRAY(6,6, 12,6, 9,8, 6,10, 12,10, 6,4, 12,12)" + " )" + ")"); String sql = "CREATE TABLE gtmeta (" + "id INT, geometry MDSYS.SDO_GEOMETRY, intProperty INT, " + "doubleProperty FLOAT, stringProperty VARCHAR(255))"; run(sql); sql = "INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID ) " + "VALUES ('GTMETA','GEOMETRY',MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.5), " + "MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.5)), 4326)"; run(sql); sql = "CREATE INDEX GTMETA_GEOMETRY_IDX ON GTMETA(GEOMETRY) INDEXTYPE IS MDSYS.SPATIAL_INDEX"; run(sql); sql = "INSERT INTO GTMETA VALUES (0," + "MDSYS.SDO_GEOMETRY(2001,4326,SDO_POINT_TYPE(0.0,0.0,NULL),NULL,NULL), 0, 0.0,'zero')"; run(sql); } @Override protected void dropSpatialTable(String tableName) throws Exception { runSafe("DROP TABLE " + tableName + " PURGE"); run("DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = '" + tableName.toUpperCase() + "'"); } public void setupGeometryColumns(JDBCDataStore dataStore) throws Exception { String schema = dataStore.getDatabaseSchema(); String sql = "CREATE TABLE GEOMETRY_COLUMNS(F_TABLE_SCHEMA VARCHAR(30), F_TABLE_NAME VARCHAR(30), " + "F_GEOMETRY_COLUMN VARCHAR(30), COORD_DIMENSION INTEGER, SRID INTEGER, TYPE VARCHAR(30))"; run(sql); // register it in the override table with a different srs, so that we're sure it's getting read sql = "INSERT INTO GEOMETRY_COLUMNS (F_TABLE_SCHEMA, F_TABLE_NAME, F_GEOMETRY_COLUMN, COORD_DIMENSION, SRID, TYPE) " + "VALUES ('" + schema + "', 'GTMETA','GEOMETRY', 2, 4269, 'POINT')"; run(sql); ((OracleDialect) dataStore.getSQLDialect()).setGeometryMetadataTable("GEOMETRY_COLUMNS"); } }