/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2003-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.jdbc;
import java.io.IOException;
import java.sql.ResultSet;
import javax.sql.DataSource;
import org.geotools.data.jdbc.fidmapper.FIDMapperFactory;
import org.opengis.filter.Filter;
/**
* Abstract class for JDBC (level2) based DataStore implementations.
* This a convenience class that just extends JDBC2DataStore to keep
* current datastores that use it happy.
* Eventually datastores should extend one of JDBC1DataStore, or
* JDBC2DataStore.
* <p>
* This class provides a default implementation of a JDBC data store. Support
* for vendor specific JDBC data stores can be easily added to Geotools by
* subclassing this class and overriding the hooks provided.
* </p>
*
* <p>
* At a minimum subclasses should implement the following methods:
*
* <ul>
* <li>
* {@link #buildAttributeType(ResultSet) buildAttributeType(ResultSet)} - This
* should be overriden to construct an attribute type that represents any
* column types not supported by the default implementation, such as geometry
* columns.
* </li>
* <li>
* {@link #getGeometryAttributeIO(AttributeType, QueryData)
* getGeometryAttributeIO(AttributeType, QueryData)} - Should be overriden to
* provide a way to read/write geometries into the format of the database
* </li>
* </ul>
* </p>
*
* <p>
* Additionally subclasses can optionally override the following:
*
* <ul>
* <li>
* Use a specific FIDMapperFactory by overriding the {@link
* #buildFIDMapperFactory(JDBCDataStoreConfig)
* buildFIDMapperFactory(JDBCDataStoreConfig)} method, and eventually disallow
* user overrides by throwing an {@link
* java.lang.UnsupportedOperationException UnsupportedOperationException} in
* the {@link #setFIDMapperFactory(FIDMapperFactory) setFidMapperFactory()}
* method.
* </li>
* <li>
* {@link #allowTable(String) allowTable} - Used to determine whether a table
* name should be exposed as a feature type.
* </li>
* <li>
* {@link #determineSRID(String,String) determineSRID} - Used to determine the
* SpatialReference ID of a geometry column in a table.
* </li>
* <li>
* {@link #buildSQLQuery(String,AttributeType[],Filter,boolean)
* buildSQLQuery()} - Sub classes can override this to build a custom SQL
* query.
* </li>
* <li>
* {@link #getResultSetType(boolean) getResultSetType} if the standard result
* set type is not satisfactory/does not work with a normal FORWARD_ONLY
* resultset type
* </li>
* <li>
* {@link #getConcurrency(boolean) getConcurrency} to set the level of
* concurrency for the result set used to read/write the database
* </li>
* </ul>
* </p>
*
* <p>
* Additionally subclasses may want to set the value of:
*
* <ul>
* <li>
* sqlNameEscape - character (String) to surround names of SQL objects to
* support mixed-case and non-English names.
* </li>
* </ul>
* </p>
*
* @author Amr Alam, Refractions Research
* @author Sean Geoghegan, Defence Science and Technology Organisation
* @author Chris Holmes, TOPP
* @author Andrea Aime
* @source $URL$
* @version $Id$
*
* @deprecated scheduled for removal in 2.7, use classes in org.geotools.jdbc
*/
public abstract class JDBCDataStore extends JDBC2DataStore {
protected JDBCDataStore( DataSource dataSource, JDBCDataStoreConfig config ) throws IOException {
super( dataSource, config );
}
}