package org.geotools.data.ingres;
import java.io.IOException;
import java.io.Serializable;
import java.util.Map;
import org.apache.commons.dbcp.BasicDataSource;
import org.geotools.data.DataStore;
import org.geotools.data.DataAccessFactory.Param;
import org.geotools.jdbc.JDBCDataStore;
import org.geotools.jdbc.JDBCDataStoreFactory;
import org.geotools.jdbc.SQLDialect;
public class IngresDataStoreFactory extends JDBCDataStoreFactory {
/** parameter for database type */
public static final Param DBTYPE = new Param("dbtype", String.class, "Type", true, "ingres");
/** parameter for namespace of the datastore */
public static final Param LOOSEBBOX = new Param("Loose bbox", Boolean.class, "Perform only primary filter on bbox", false, Boolean.TRUE);
/** parameter for database port */
public static final Param PORT = new Param("port", Integer.class, "Port", true, 5432);
/** parameter for database schema */
public static final Param SCHEMA = new Param("schema", String.class, "Schema", false, null);
/**
* Wheter a prepared statements based dialect should be used, or not
*/
public static final Param PREPARED_STATEMENTS = new Param("preparedStatements", Boolean.class, "Use prepared statements", false, Boolean.FALSE);
@Override
protected SQLDialect createSQLDialect(JDBCDataStore dataStore) {
return new IngresDialect(dataStore);
}
@Override
protected String getDatabaseID() {
return (String)DBTYPE.sample;
}
@Override
protected String getDriverClassName() {
return "com.ingres.jdbc.IngresDriver";
}
@Override
protected String getValidationQuery() {
return "select date('now')";
}
// public DataStore createDataStore(Map<String, Serializable> params) throws IOException {
// return null;
// }
/* public BasicDataSource createDataSource(Map params) throws IOException {
try {
SCHEMA.parse((String) USER.lookUp(params));
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return super.createDataSource(params);
}*/
@Override
protected void setupParameters(Map parameters) {
super.setupParameters(parameters);
parameters.put(DBTYPE.key, DBTYPE);
parameters.put(SCHEMA.key, SCHEMA);
parameters.put(LOOSEBBOX.key, LOOSEBBOX);
parameters.put(PORT.key, PORT);
}
public String getDescription() {
return "Ingres Database";
}
}