/*
* 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.JDBCPrimaryKeyFinderTestSetup;
public class OraclePrimaryKeyFinderTestSetup extends JDBCPrimaryKeyFinderTestSetup {
protected OraclePrimaryKeyFinderTestSetup() {
super(new OracleTestSetup());
}
@Override
protected void createMetadataTable() throws Exception {
run("CREATE TABLE gt_pk_metadata ( " + "table_schema VARCHAR(32), "
+ "table_name VARCHAR(32) NOT NULL, " + "pk_column VARCHAR(32) NOT NULL, "
+ "pk_column_idx INTEGER, " + "pk_policy VARCHAR(32), " + "pk_sequence VARCHAR(64),"
+ "unique (table_schema, table_name, pk_column),"
+ "check (pk_policy in ('sequence', 'assigned', 'autoincrement')))");
}
@Override
protected void dropMetadataTable() throws Exception {
runSafe("DROP TABLE gt_pk_metadata");
}
@Override
protected void createSequencedPrimaryKeyTable() throws Exception {
run("CREATE TABLE seqtable ( key integer PRIMARY KEY, "
+ "name VARCHAR(256), geom MDSYS.SDO_GEOMETRY)");
run( "INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID )" +
" VALUES ('seqtable','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 pksequence START WITH 1");
run( "INSERT INTO seqtable VALUES (pksequence.NEXTVAL,'one',NULL)" );
run( "INSERT INTO seqtable VALUES (pksequence.NEXTVAL,'two',NULL)" );
run( "INSERT INTO seqtable VALUES (pksequence.NEXTVAL,'three',NULL)" );
run("INSERT INTO gt_pk_metadata VALUES"
+ "(NULL, 'SEQTABLE', 'KEY', 0, 'sequence', 'PKSEQUENCE')");
}
@Override
protected void dropSequencedPrimaryKeyTable() throws Exception {
runSafe( "DROP TABLE seqtable PURGE");
runSafe( "DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'SEQTABLE'");
runSafe( "DROP SEQUENCE pksequence");
}
@Override
protected void createPlainTable() throws Exception {
run("CREATE TABLE plaintable ( key1 int, key2 int, "
+ "name VARCHAR(256), geom MDSYS.SDO_GEOMETRY )");
run( "INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID )" +
" VALUES ('plaintable','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 plaintable VALUES (1, 2, 'one', NULL)");
run("INSERT INTO plaintable VALUES (2, 3, 'two', NULL)");
run("INSERT INTO plaintable VALUES (3, 4, 'three', NULL)");
}
@Override
protected void dropPlainTable() throws Exception {
runSafe("DROP TABLE plaintable");
runSafe( "DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'PLAINTABLE'");
}
@Override
protected void createAssignedSinglePkView() throws Exception {
run("CREATE VIEW assignedsinglepk AS SELECT * FROM plaintable");
run("INSERT INTO gt_pk_metadata VALUES"
+ "(NULL, 'ASSIGNEDSINGLEPK', 'KEY1', 0, 'assigned', NULL)");
}
@Override
protected void dropAssignedSinglePkView() throws Exception {
runSafe("DROP VIEW assignedsinglepk");
}
@Override
protected void createAssignedMultiPkView() throws Exception {
run("CREATE VIEW assignedmultipk AS SELECT * FROM plaintable");
run("INSERT INTO gt_pk_metadata VALUES"
+ "(NULL, 'ASSIGNEDMULTIPK', 'KEY1', 0, 'assigned', NULL)");
run("INSERT INTO gt_pk_metadata VALUES"
+ "(NULL, 'ASSIGNEDMULTIPK', 'KEY2', 1, 'assigned', NULL)");
}
@Override
protected void dropAssignedMultiPkView() throws Exception {
runSafe("DROP VIEW assignedmultipk");
}
}