/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2002-2015, 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.spatialite;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.NoSuchElementException;
import org.geotools.feature.IllegalAttributeException;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.jdbc.JDBCDataStoreAPIOnlineTest;
import org.geotools.jdbc.JDBCDataStoreAPITestSetup;
import org.geotools.referencing.CRS;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import com.vividsolutions.jts.geom.Point;
/**
*
*
* @source $URL$
*/
public class SpatiaLiteDataStoreAPIOnlineTest extends JDBCDataStoreAPIOnlineTest {
@Override
protected JDBCDataStoreAPITestSetup createTestSetup() {
return new SpatiaLiteDataStoreAPITestSetup();
}
public void testRecreateSchema() throws Exception {
String featureTypeName = tname("recreated");
CoordinateReferenceSystem crs = CRS.decode("EPSG:4326");
// Build feature type
SimpleFeatureTypeBuilder ftb = new SimpleFeatureTypeBuilder();
ftb.setName(featureTypeName);
ftb.add(aname("id"), Integer.class);
ftb.add(aname("name"), String.class);
ftb.add(aname("the_geom"), Point.class, crs);
SimpleFeatureType newFT = ftb.buildFeatureType();
// Crate a schema
dataStore.createSchema(newFT);
SimpleFeatureType newSchema = dataStore.getSchema(featureTypeName);
assertNotNull(newSchema);
// Delete it
dataStore.removeSchema(newFT.getTypeName());
try {
dataStore.getSchema(featureTypeName);
fail("Should have thrown an IOException because featureTypeName shouldn't exist");
} catch(IOException e) {
}
// Create the same schema again
dataStore.createSchema(newFT);
SimpleFeatureType recreatedSchema = dataStore.getSchema(featureTypeName);
assertNotNull(recreatedSchema);
}
@Override
public void testCreateSchema() throws Exception {
super.testCreateSchema();
String featureTypeName = tname("datatypes");
SimpleFeatureTypeBuilder ftb = new SimpleFeatureTypeBuilder();
ftb.setName(featureTypeName);
// All Java Classes from
// org.geotools.jdbc.SQLDialect.registerClassToSqlMappings()
ftb.add(aname("string"), String.class);
ftb.add(aname("boolean_class"), Boolean.class);
ftb.add(aname("boolean"), boolean.class);
ftb.add(aname("short_class"), Short.class);
ftb.add(aname("short"), short.class);
ftb.add(aname("integer_class"), Integer.class);
ftb.add(aname("int"), int.class);
ftb.add(aname("long_class"), Long.class);
ftb.add(aname("long"), long.class);
ftb.add(aname("float_class"), Float.class);
ftb.add(aname("float"), float.class);
ftb.add(aname("double_class"), Double.class);
ftb.add(aname("double"), double.class);
ftb.add(aname("bigdecimal"), BigDecimal.class);
ftb.add(aname("sql_date"), Date.class);
ftb.add(aname("time"), Time.class);
ftb.add(aname("java_util_date"), java.util.Date.class);
ftb.add(aname("timestamp"), Timestamp.class);
ftb.add(aname("byte_array"), byte[].class);
SimpleFeatureType newFT = ftb.buildFeatureType();
dataStore.createSchema(newFT);
SimpleFeatureType newSchema = dataStore.getSchema(featureTypeName);
assertNotNull(newSchema);
assertEquals(19, newSchema.getAttributeCount());
}
@Override
public void testTransactionIsolation() throws Exception {
//super.testTransactionIsolation();
//JD: In order to allow multiple connections from the same thread (which this test requires)
// we need to put the database in read_uncommitted mode, which means transaction isolation
// can not be achieved
}
@Override
public void testGetFeatureReaderFilterTransaction() throws NoSuchElementException, IOException,
IllegalAttributeException {
//super.testGetFeatureReaderFilterTransaction();
}
}