/* * 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.JDBCPrimaryKeyTestSetup; public class OraclePrimaryKeyTestSetup extends JDBCPrimaryKeyTestSetup { protected OraclePrimaryKeyTestSetup() { super(new OracleTestSetup()); } @Override protected void createAutoGeneratedPrimaryKeyTable() throws Exception { } @Override protected void createSequencedPrimaryKeyTable() throws Exception { run( "CREATE TABLE seq (key INT, name VARCHAR(255)," + " geom MDSYS.SDO_GEOMETRY, PRIMARY KEY(key))"); run( "INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID )" + " VALUES ('seq','geom',MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.5), " + "MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.5)), 4326)"); run( "CREATE SEQUENCE seq_key_sequence START WITH 1"); run( "INSERT INTO seq VALUES (seq_key_sequence.NEXTVAL,'one',NULL)" ); run( "INSERT INTO seq VALUES (seq_key_sequence.NEXTVAL,'two',NULL)" ); run( "INSERT INTO seq VALUES (seq_key_sequence.NEXTVAL,'three',NULL)" ); } @Override protected void createNonIncrementingPrimaryKeyTable() throws Exception { run( "CREATE TABLE noninc (key INT, name VARCHAR(255)," + " geom MDSYS.SDO_GEOMETRY, PRIMARY KEY(key))"); run( "INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID )" + " VALUES ('noninc','geom',MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.5), " + "MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.5)), 4326)"); run( "INSERT INTO noninc VALUES (1,'one',NULL)" ); run( "INSERT INTO noninc VALUES (2,'two',NULL)" ); run( "INSERT INTO noninc VALUES (3,'three',NULL)" ); } @Override protected void createMultiColumnPrimaryKeyTable() throws Exception { run( "CREATE TABLE multi (key1 INT, key2 VARCHAR(255), name VARCHAR(255)," + " geom MDSYS.SDO_GEOMETRY, PRIMARY KEY(key1,key2))"); run( "INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID )" + " VALUES ('multi','geom',MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.5), " + "MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.5)), 4326)"); run( "INSERT INTO multi VALUES (1,'x','one',NULL)" ); run( "INSERT INTO multi VALUES (2,'y','two',NULL)" ); run( "INSERT INTO multi VALUES (3,'z','three',NULL)" ); } @Override protected void createNullPrimaryKeyTable() throws Exception { run( "CREATE TABLE nokey (name VARCHAR(255))"); run( "INSERT INTO nokey VALUES ('one')" ); run( "INSERT INTO nokey VALUES ('two')" ); run( "INSERT INTO nokey VALUES ('three')" ); } @Override protected void createUniqueIndexTable() throws Exception { run( "CREATE TABLE uniq (key INT, name VARCHAR(255)," + " geom MDSYS.SDO_GEOMETRY)"); run( "INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID )" + " VALUES ('uniq','geom',MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.5), " + "MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.5)), 4326)"); run( "CREATE UNIQUE INDEX uniq_key_index ON uniq(key)"); run( "INSERT INTO uniq VALUES (1,'one',NULL)" ); run( "INSERT INTO uniq VALUES (2,'two',NULL)" ); run( "INSERT INTO uniq VALUES (3,'three',NULL)" ); } @Override protected void dropAutoGeneratedPrimaryKeyTable() throws Exception { } @Override protected void dropSequencedPrimaryKeyTable() throws Exception { runSafe( "DROP TABLE seq PURGE"); runSafe( "DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'SEQ'"); runSafe( "DROP SEQUENCE seq_key_sequence"); } @Override protected void dropNonIncrementingPrimaryKeyTable() throws Exception { runSafe( "DROP TABLE noninc PURGE"); runSafe( "DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'NONINC'"); } @Override protected void dropMultiColumnPrimaryKeyTable() throws Exception { runSafe( "DROP TABLE multi PURGE"); runSafe( "DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'MULTI'"); } @Override protected void dropNullPrimaryKeyTable() throws Exception { runSafe( "DROP TABLE nokey PURGE"); runSafe( "DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'NOKEY'"); } @Override protected void dropUniqueIndexTable() throws Exception { runSafe( "DROP INDEX uniq_key_index"); runSafe( "DROP TABLE uniq PURGE"); runSafe( "DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'UNIQ'"); } }