/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2002-2009, 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.geopkg;
import org.geotools.geometry.jts.GeometryBuilder;
import org.geotools.jdbc.JDBCPrimaryKeyFinderTestSetup;
import com.vividsolutions.jts.geom.Polygon;
/**
*
*
* @source $URL$
*/
public class GeoPkgPrimaryKeyFinderTestSetup extends JDBCPrimaryKeyFinderTestSetup {
public GeoPkgPrimaryKeyFinderTestSetup() {
super(new GeoPkgTestSetup());
}
@Override
protected void createMetadataTable() throws Exception {
run("CREATE TABLE gt_pk_metadata (table_schema varchar(255), table_name varchar(255), pk_column varchar(255), " +
"pk_column_idx int, pk_policy varchar(255), pk_sequence varchar(255))");
}
@Override
protected void dropMetadataTable() throws Exception {
runSafe("DROP TABLE gt_pk_metadata");
}
@Override
protected void createPlainTable() throws Exception {
run("CREATE TABLE plaintable (key1 integer primary key, key2 int, name varchar(255),geom BLOB)");
//run("SELECT AddGeometryColumn('plaintable', 'geom', 4326, 'POINT', 2)");
String sql = "INSERT INTO gpkg_contents (table_name, data_type, identifier, srs_id) VALUES " +
"('plaintable', 'features', 'plaintable', 4326)";
run(sql);
sql = "INSERT INTO gpkg_geometry_columns VALUES ('plaintable', 'geom', 'POINT', 4326, 0, 0)";
run(sql);
GeometryBuilder gb = new GeometryBuilder();
GeoPkgTestSetup setup = (GeoPkgTestSetup)delegate;
run("INSERT INTO plaintable VALUES (1, 2, 'one', X'"+setup.toString(gb.point(0,0))+"')");
run("INSERT INTO plaintable VALUES (2, 3, 'two', X'"+setup.toString(gb.point(1,1))+"')");
run("INSERT INTO plaintable VALUES (3, 4, 'three', X'"+setup.toString(gb.point(2,2))+"')");
}
@Override
protected void dropPlainTable() throws Exception {
((GeoPkgTestSetup)delegate).removeTable("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)");
String sql = "INSERT INTO gpkg_contents (table_name, data_type, identifier, srs_id) VALUES " +
"('assignedsinglepk', 'features', 'assignedsinglepk', 4326)";
run(sql);
}
@Override
protected void dropAssignedSinglePkView() throws Exception {
((GeoPkgTestSetup)delegate).removeTable("assignedsinglepk");
}
@Override
protected void createAssignedMultiPkView() throws Exception {
run("CREATE VIEW assignedmultipk AS SELECT * from plaintable");
String sql = "INSERT INTO gpkg_contents (table_name, data_type, identifier, srs_id) VALUES " +
"('assignedmultipk', 'features', 'assignedmultipk', 4326)";
run(sql);
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 {
((GeoPkgTestSetup)delegate).removeTable("assignedmultipk");
}
@Override
protected void createSequencedPrimaryKeyTable() throws Exception {
}
@Override
protected void dropSequencedPrimaryKeyTable() throws Exception {
}
}