/*
* 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 java.io.IOException;
import java.util.Properties;
import org.geotools.jdbc.JDBCDataStore;
import org.geotools.jdbc.JDBCDataStoreFactory;
import org.geotools.jdbc.JDBCTestSetup;
public class OracleTestSetup extends JDBCTestSetup {
@Override
protected String typeName(String raw) {
return raw.toUpperCase();
}
@Override
protected String attributeName(String raw) {
return raw.toUpperCase();
}
@Override
protected JDBCDataStoreFactory createDataStoreFactory() {
return new OracleNGDataStoreFactory();
}
protected void setUpDataStore(JDBCDataStore dataStore) {
super.setUpDataStore(dataStore);
// tests do assume the dialect is working in non loose mode
((OracleDialect) dataStore.getSQLDialect()).setLooseBBOXEnabled(false);
try {
Properties props = new Properties();
fillConnectionProperties(props);
dataStore.setDatabaseSchema(props.getProperty("username").toUpperCase());
} catch(IOException e) {
throw new RuntimeException("Failed to read the connection property file", e);
}
}
@Override
protected void setUpData() throws Exception {
//drop old data
try {
run("DROP TRIGGER ft1_pkey_trigger");
} catch (Exception e) {
}
try {
run("DROP TABLE ft1 purge");
} catch (Exception e) {
e.printStackTrace();
}
try {
run("DROP SEQUENCE ft1_pkey_seq");
} catch (Exception e) {
}
run("DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'FT1'");
try {
run("DROP TABLE ft2 purge");
} catch (Exception e) {
}
run("DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'FT2'");
String sql = "CREATE TABLE ft1 ("
+ "id INT, geometry MDSYS.SDO_GEOMETRY, intProperty INT, "
+ "doubleProperty FLOAT, stringProperty VARCHAR(255)"
+ ", PRIMARY KEY(id))";
run(sql);
sql = "CREATE SEQUENCE ft1_pkey_seq";
run(sql);
sql = "CREATE TRIGGER ft1_pkey_trigger " +
"BEFORE INSERT ON ft1 " +
"FOR EACH ROW " +
"BEGIN " +
"SELECT ft1_pkey_seq.nextval INTO :new.id FROM dual; " +
"END;";
run( sql );
sql = "INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID ) " +
"VALUES ('ft1','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 FT1_GEOMETRY_IDX ON FT1(GEOMETRY) INDEXTYPE IS MDSYS.SPATIAL_INDEX" //
+ " PARAMETERS ('SDO_INDX_DIMS=2 LAYER_GTYPE=\"POINT\"')";
run(sql);
sql = "INSERT INTO ft1 VALUES (0," +
"MDSYS.SDO_GEOMETRY(2001,4326,SDO_POINT_TYPE(0.0,0.0,NULL),NULL,NULL), 0, 0.0,'zero')";
run(sql);
sql = "INSERT INTO ft1 VALUES (1," +
"MDSYS.SDO_GEOMETRY(2001,4326,SDO_POINT_TYPE(1.0,1.0,NULL),NULL,NULL), 1, 1.1,'one')";
run(sql);
sql = "INSERT INTO ft1 VALUES (2," +
"MDSYS.SDO_GEOMETRY(2001,4326,SDO_POINT_TYPE(2.0,2.0,NULL),NULL,NULL), 2, 2.2,'two')";
run(sql);
}
}