Revision: 4678
          http://sourceforge.net/p/jump-pilot/code/4678
Author:   edso
Date:     2015-12-26 22:12:58 +0000 (Sat, 26 Dec 2015)
Log Message:
-----------
- renamed some classes from *DataStore* to *DS* if others in the same package 
already used the same naming scheme
- adding H2 file db utilizes a filechooser now
- streamlined AbstractSpatialDatabasesDataStoreDriver.createJdbcConnection() 
for file and database datastores
- introduced AbstractSpatialDatabasesDSExtension collecting the basic routines 
used by all spatial database extensions
- postgis is now installed via PostgisDSExtension registered in 
default-plugins.xml
- removed obsolete JUMPConfiguration.configureDatastores() method

Modified Paths:
--------------
    core/trunk/ChangeLog
    core/trunk/scripts/default-plugins.xml
    core/trunk/src/com/vividsolutions/jump/datastore/DataStoreDriver.java
    core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DataStoreDriver.java
    
core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DataStoreExtension.java
    
core/trunk/src/com/vividsolutions/jump/datastore/h2/H2ServerDataStoreDriver.java
    
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDataStoreDriver.java
    
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDataStoreExtension.java
    
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MysqlDataStoreExtension.java
    
core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDataStoreDriver.java
    
core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDataStoreExtension.java
    
core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDataStoreDriver.java
    
core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDataStoreExtension.java
    core/trunk/src/com/vividsolutions/jump/workbench/JUMPConfiguration.java
    
core/trunk/src/org/openjump/core/ui/plugin/datastore/WritableDataStoreDataSource.java
    
core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis/SaveToPostGISDataSource.java
    
core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis2/PostGISDataStoreDataSource.java

Added Paths:
-----------
    
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSDriver.java
    
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSExtension.java
    
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDSDriver.java
    
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDSExtension.java

Removed Paths:
-------------
    
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDataStoreDriver.java
    
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDataStoreDriver.java

Modified: core/trunk/ChangeLog
===================================================================
--- core/trunk/ChangeLog        2015-12-26 22:05:59 UTC (rev 4677)
+++ core/trunk/ChangeLog        2015-12-26 22:12:58 UTC (rev 4678)
@@ -3,19 +3,25 @@
 # 2. make sure that lines break at 80 chars for constricted display situations
 #<-------------------------------- 80 chars 
---------------------------------->#
 
+2015-12-26 ede
+  * renamed some classes from *DataStore* to *DS* if others in the same package
+    already used the same naming scheme
+  * adding H2 file db utilizes a filechooser now
+  * streamlined AbstractSpatialDatabasesDataStoreDriver.createJdbcConnection()
+    for file and database datastores
+  * introduced AbstractSpatialDatabasesDSExtension collecting the basic 
routines
+    used by all spatial database extensions
+  * postgis is now installed via PostgisDSExtension registered in
+    default-plugins.xml
+  * removed obsolete empty JUMPConfiguration.configureDatastores() method
+
 2015-12-24 bertazza
   * Fixed broken 4666 commit
   * Info feature tool: fixed issue related to dirty url
-  
-2015-12-24 bertazza
-  * Removed IOExpcetion throw from TaskFrame
-
-2015-12-24 bertazza
+  * Removed IOException throw from TaskFrame method
   * Info feature tool for WMS: info shown only for visible layers, added
     &FEATURE_COUNT=10 parameter, and changed method to retrieve url as
     suggested by Jukka (should now support basic authentication).
-
-2015-12-24 bertazza
   * Fixed broken 4663 commit
 
 2015-12-23 bertazza

Modified: core/trunk/scripts/default-plugins.xml
===================================================================
--- core/trunk/scripts/default-plugins.xml      2015-12-26 22:05:59 UTC (rev 
4677)
+++ core/trunk/scripts/default-plugins.xml      2015-12-26 22:12:58 UTC (rev 
4678)
@@ -22,10 +22,10 @@
                <!-- shows selection summary in status bar time field -->
                org.openjump.core.ui.plugin.view.ShowFullPathPlugIn
        </plug-in>
+  <!--add Spatial databases datastore extensions-->
        <extension>
                
com.vividsolutions.jump.datastore.oracle.OracleDataStoreExtension
        </extension>
-       <!--adds other Spatial databases extensions-->
        <extension>
                
com.vividsolutions.jump.datastore.mariadb.MariadbDataStoreExtension
        </extension>
@@ -38,6 +38,9 @@
        <extension>
                com.vividsolutions.jump.datastore.h2.H2DataStoreExtension
        </extension>
+       <extension>
+               com.vividsolutions.jump.datastore.postgis.PostgisDSExtension
+       </extension>
        <plug-in>
                
org.openjump.core.ui.plugin.datastore.postgis.SaveToPostGISPlugIn
        </plug-in>

Modified: core/trunk/src/com/vividsolutions/jump/datastore/DataStoreDriver.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/datastore/DataStoreDriver.java       
2015-12-26 22:05:59 UTC (rev 4677)
+++ core/trunk/src/com/vividsolutions/jump/datastore/DataStoreDriver.java       
2015-12-26 22:12:58 UTC (rev 4678)
@@ -1,5 +1,7 @@
 package com.vividsolutions.jump.datastore;
 
+import java.sql.Driver;
+
 import com.vividsolutions.jump.parameter.ParameterList;
 import com.vividsolutions.jump.parameter.ParameterListSchema;
 
@@ -12,6 +14,12 @@
 
     String getName();
 
+    String getVersion();
+
+    Driver getJdbcDriver();
+
+    String getJdbcDriverVersion();
+
     ParameterListSchema getParameterListSchema();
 
     DataStoreConnection createConnection(ParameterList params) throws 
Exception;

Modified: 
core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DataStoreDriver.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DataStoreDriver.java  
2015-12-26 22:05:59 UTC (rev 4677)
+++ core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DataStoreDriver.java  
2015-12-26 22:12:58 UTC (rev 4678)
@@ -1,22 +1,19 @@
 package com.vividsolutions.jump.datastore.h2;
 
+import java.io.File;
 import java.sql.Connection;
-import java.sql.Driver;
-import java.sql.DriverManager;
 
 import com.vividsolutions.jump.datastore.DataStoreConnection;
-import com.vividsolutions.jump.datastore.jdbc.DelegatingDriver;
-import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDataStoreDriver;
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSDriver;
 import com.vividsolutions.jump.parameter.ParameterList;
 import com.vividsolutions.jump.parameter.ParameterListSchema;
-import com.vividsolutions.jump.workbench.JUMPWorkbench;
 
 /**
  * A driver for supplying
  * {@link 
com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesDSConnection}
  * s
  */
-public class H2DataStoreDriver extends AbstractSpatialDatabasesDataStoreDriver 
{
+public class H2DataStoreDriver extends AbstractSpatialDatabasesDSDriver {
 
   public final static String JDBC_CLASS = "org.h2.Driver";
 
@@ -26,13 +23,13 @@
     this.urlPrefix = "jdbc:h2:";
 
     paramNames = new String[]{
-            PARAM_Instance,
+            PARAM_DB_File,
             PARAM_User,
             PARAM_Password
     };
     paramClasses = new Class[]{
+            File.class,
             String.class,
-            String.class,
             String.class
     };
     schema = new ParameterListSchema(paramNames, paramClasses);
@@ -48,60 +45,21 @@
   @Override
   public DataStoreConnection createConnection(ParameterList params)
       throws Exception {
-    Connection conn = createJdbcConnection(params);
+    Connection conn = super.createJdbcConnection(params);
     return new H2DSConnection(conn);
   }
 
-  protected Connection createJdbcConnection(ParameterList params) throws 
Exception {
-    String database = params.getParameterString(PARAM_Instance);
-    String user = params.getParameterString(PARAM_User);
-    String password = params.getParameterString(PARAM_Password);
+  @Override
+  protected String createJdbcUrl(ParameterList params) {
+    // PARAM_DB_File is a fileChooser: the default mechanism used will store a
+    // DefaultAwtShell on OSX. Do not cast to this internal type but gets its
+    // toString() method
+    // returning the choosen filename.
+    String database = params.getParameter(PARAM_DB_File).toString();
+    // remove possibly existing file extension
+    database = database.replaceAll("(?i)\\.\\w+\\.db$", "");
+    // only open already existing database files, _don't_ create
+    return getUrlPrefix() + database + ";IFEXISTS=TRUE;";
+  }
 
-    String url = String.valueOf(new StringBuffer(urlPrefix).append(database));
-
-    // only register once per driver
-    if (!this.registered) {
-      // we always use the plugin classloader to find jdbc jars
-      // under lib/ext/<subfolder>/
-      ClassLoader cl = JUMPWorkbench.getInstance().getPlugInManager()
-              .getClassLoader();
-      Driver driver = (Driver) Class.forName(this.getJdbcClass(), true, cl)
-              .newInstance();
-      // DriverManager insists on jdbc drivers loaded with the default
-      // classloader, so we wrap our foreign one into a simple wrapper
-      // see
-      // 
https://stackoverflow.com/questions/288828/how-to-use-a-jdbc-driver-from-an-arbitrary-location
-      DriverManager.registerDriver(new DelegatingDriver(driver));
-      this.registered = true;
-    }
-
-    // some helpful debugging output
-    // DriverManager.setLogWriter(new PrintWriter(System.out));
-    // Enumeration<Driver> ds = DriverManager.getDrivers();
-    // while (ds.hasMoreElements()) {
-    // Driver d = ds.nextElement();
-    // System.out.println(d);
-    // System.out.println(url);
-    // System.out.println(d.acceptsURL(url));
-    // }
-
-    // workaround a bug in DriverManager.getConnection() when used like this:
-    //   Connection conn = DriverManager.getConnection(url, user, password);
-    // getConnection() blindly connects to each driver and memorizes only
-    // the _first_ Exception that occurs. this includes "invalid database 
address"
-    // errors, which is stupid as connect would have only to ask the driver
-    // if it supports the given url scheme. funny enough getDriver() does, so
-    // we add a bit of code and get the connection ourself w/ the proper 
driver.
-    Driver d = DriverManager.getDriver(url);
-    java.util.Properties info = new java.util.Properties();
-    if (user != null) {
-      info.put("user", user);
-    }
-    if (password != null) {
-      info.put("password", password);
-    }
-    Connection conn = d.connect(url, info);
-
-    return conn;
-  }
 }

Modified: 
core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DataStoreExtension.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DataStoreExtension.java   
    2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DataStoreExtension.java   
    2015-12-26 22:12:58 UTC (rev 4678)
@@ -1,59 +1,30 @@
 package com.vividsolutions.jump.datastore.h2;
 
-import com.vividsolutions.jump.datastore.DataStoreDriver;
-import com.vividsolutions.jump.workbench.WorkbenchContext;
-import com.vividsolutions.jump.workbench.plugin.Extension;
-import com.vividsolutions.jump.workbench.plugin.PlugInContext;
+import java.util.Collections;
+import java.util.HashMap;
 
-import java.sql.Driver;
-import java.sql.DriverManager;
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSExtension;
 
-import static 
com.vividsolutions.jump.datastore.h2.H2DataStoreDriver.JDBC_CLASS;
-
 /**
  * Extension for H2GIS Support
  */
-public class H2DataStoreExtension extends Extension {
-    private static boolean disabled = false;
+public class H2DataStoreExtension extends AbstractSpatialDatabasesDSExtension {
 
-    public String getName() {
-        return "H2GIS Datastore Extension";
-    }
+  /**
+   * customize the abstract implementation
+   */
+  public H2DataStoreExtension() {
+    super(
+        new Class[] { H2DataStoreDriver.class, H2ServerDataStoreDriver.class },
+        Collections.unmodifiableMap(new HashMap<String, String>() {
+          {
+            put(H2DataStoreDriver.JDBC_CLASS, "h2-<version>.jar");
+          }
+        }));
+  }
 
-    public String getVersion() {
-        return "0.1 (2015-12-20)";
-    }
+  public String getName() {
+    return "H2GIS Datastore Extension";
+  }
 
-    public String getMessage() {
-        return disabled ? "Disabled: Missing h2-<version>.jar in classpath"
-                : "";
-    }
-
-    public void configure(PlugInContext context) throws Exception {
-        WorkbenchContext wbc = context.getWorkbenchContext();
-
-        // registers the H2DataStore driver to the system:
-        try {
-            ClassLoader pluginLoader = wbc.getWorkbench().getPlugInManager()
-                    .getClassLoader();
-            // check for h2-<version>.jar
-            DriverManager.registerDriver(
-                    (Driver) Class.forName(JDBC_CLASS, true, 
pluginLoader).newInstance());
-
-            // register the datastore
-            
wbc.getRegistry().createEntry(DataStoreDriver.REGISTRY_CLASSIFICATION,
-                    new H2DataStoreDriver());
-
-            
wbc.getRegistry().createEntry(DataStoreDriver.REGISTRY_CLASSIFICATION,
-                    new H2ServerDataStoreDriver());
-        } catch (Exception e) {
-            disabled = true;
-            wbc.getWorkbench()
-                    .getFrame()
-                    .log(
-                            "H2GIS Data Store disabled:\n\t" + e.toString()
-                                    + "\n\tH2 JDBC Driver (h2-<version>.jar) 
must exist in the classpath !", this.getClass());
-        }
-    }
-
 }
\ No newline at end of file

Modified: 
core/trunk/src/com/vividsolutions/jump/datastore/h2/H2ServerDataStoreDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/h2/H2ServerDataStoreDriver.java
    2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/h2/H2ServerDataStoreDriver.java
    2015-12-26 22:12:58 UTC (rev 4678)
@@ -3,7 +3,7 @@
 import java.sql.Connection;
 
 import com.vividsolutions.jump.datastore.DataStoreConnection;
-import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDataStoreDriver;
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSDriver;
 import com.vividsolutions.jump.parameter.ParameterList;
 
 /**
@@ -12,7 +12,7 @@
  * s
  */
 public class H2ServerDataStoreDriver extends
-    AbstractSpatialDatabasesDataStoreDriver {
+    AbstractSpatialDatabasesDSDriver {
 
   public final static String JDBC_CLASS = "org.h2.Driver";
 

Modified: 
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDataStoreDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDataStoreDriver.java
        2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDataStoreDriver.java
        2015-12-26 22:12:58 UTC (rev 4678)
@@ -3,14 +3,14 @@
 import java.sql.Connection;
 
 import com.vividsolutions.jump.datastore.DataStoreConnection;
-import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDataStoreDriver;
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSDriver;
 import com.vividsolutions.jump.parameter.ParameterList;
 
 /**
  * A driver for supplying {@link SpatialDatabaseDSConnection}s
  */
 public class MariadbDataStoreDriver
-    extends AbstractSpatialDatabasesDataStoreDriver {
+    extends AbstractSpatialDatabasesDSDriver {
 
       // TODO: uniformize
     public final static String JDBC_CLASS = "org.mariadb.jdbc.Driver";

Modified: 
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDataStoreExtension.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDataStoreExtension.java
     2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MariadbDataStoreExtension.java
     2015-12-26 22:12:58 UTC (rev 4678)
@@ -1,55 +1,33 @@
 package com.vividsolutions.jump.datastore.mariadb;
 
-import static 
com.vividsolutions.jump.datastore.mariadb.MariadbDataStoreDriver.JDBC_CLASS;
+import java.util.Collections;
+import java.util.HashMap;
 
-import com.vividsolutions.jump.datastore.DataStoreDriver;
-import com.vividsolutions.jump.workbench.WorkbenchContext;
-import com.vividsolutions.jump.workbench.plugin.Extension;
-import com.vividsolutions.jump.workbench.plugin.PlugInContext;
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSExtension;
 
 /**
- * 
- * @author nicolas ribot
+ * a database datastore extension for accessing MariaDB and MySQL w/ the 
MariaDB
+ * JDBC driver
  */
-public class MariadbDataStoreExtension extends Extension {
-  private static boolean disabled = false;
+public class MariadbDataStoreExtension extends
+    AbstractSpatialDatabasesDSExtension {
 
+  /**
+   * customize the abstract implementation
+   */
+  public MariadbDataStoreExtension() {
+    super(new Class[] { MariadbDataStoreDriver.class,
+        MysqlMariadbDataStoreDriver.class }, Collections
+        .unmodifiableMap(new HashMap<String, String>() {
+          {
+            put(MariadbDataStoreDriver.JDBC_CLASS,
+                "mariadb-java-client-<version>.jar");
+          }
+        }));
+  }
+
   public String getName() {
     return "MariaDB/MySQL Spatial Datastore Extension";
   }
 
-  public String getVersion() {
-    return "0.3 (2015-12-04)";
-  }
-
-  public String getMessage() {
-    return disabled ? "Disabled: Missing mariadb-java-client-<version>.jar in 
classpath"
-        : "";
-  }
-
-  public void configure(PlugInContext context) throws Exception {
-    WorkbenchContext wbc = context.getWorkbenchContext();
-
-    // registers the MariaDBDataStore driver to the system:
-    try {
-      ClassLoader pluginLoader = wbc.getWorkbench().getPlugInManager()
-          .getClassLoader();
-      // check for jar
-      Class.forName(JDBC_CLASS, false, pluginLoader);
-
-      // register the datastore
-      wbc.getRegistry().createEntry(DataStoreDriver.REGISTRY_CLASSIFICATION,
-          new MariadbDataStoreDriver());
-      wbc.getRegistry().createEntry(DataStoreDriver.REGISTRY_CLASSIFICATION,
-          new MysqlMariadbDataStoreDriver());
-      
-    } catch (Exception e) {
-      disabled = true;
-      wbc.getWorkbench()
-          .getFrame()
-          .log(
-              getName() +" " + getMessage() +"\n\t" + e.toString(), 
this.getClass());
-    }
-  }
-
 }

Modified: 
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MysqlDataStoreExtension.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MysqlDataStoreExtension.java
       2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/mariadb/MysqlDataStoreExtension.java
       2015-12-26 22:12:58 UTC (rev 4678)
@@ -1,52 +1,31 @@
 package com.vividsolutions.jump.datastore.mariadb;
 
-import static 
com.vividsolutions.jump.datastore.mariadb.MysqlDataStoreDriver.JDBC_CLASS;
+import java.util.Collections;
+import java.util.HashMap;
 
-import com.vividsolutions.jump.datastore.DataStoreDriver;
-import com.vividsolutions.jump.workbench.WorkbenchContext;
-import com.vividsolutions.jump.workbench.plugin.PlugInContext;
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSExtension;
 
 /**
- * 
- * @author nicolas ribot
+ * installs the MySQL database datastore driver if available
  */
-public class MysqlDataStoreExtension extends MariadbDataStoreExtension {
-  private static boolean disabled = false;
+public class MysqlDataStoreExtension extends
+    AbstractSpatialDatabasesDSExtension {
 
+  /**
+   * customize the abstract implementation
+   */
+  public MysqlDataStoreExtension() {
+    super(MysqlDataStoreDriver.class, Collections
+        .unmodifiableMap(new HashMap<String, String>() {
+          {
+            put(MysqlDataStoreDriver.JDBC_CLASS,
+                "mysql-connector-java-<version>.jar");
+          }
+        }));
+  }
+
   public String getName() {
     return "MySQL Spatial Datastore Extension";
   }
 
-  public String getVersion() {
-    return super.getVersion();
-  }
-
-  public String getMessage() {
-    return disabled ? "Disabled: Missing mysql-connector-java-<version>.jar in 
classpath"
-        : "";
-  }
-
-  public void configure(PlugInContext context) throws Exception {
-    WorkbenchContext wbc = context.getWorkbenchContext();
-
-    // registers the MariaDBDataStore driver to the system:
-    try {
-      ClassLoader pluginLoader = wbc.getWorkbench().getPlugInManager()
-          .getClassLoader();
-      // check for jar
-      Class.forName(JDBC_CLASS, false, pluginLoader);
-
-      // register the datastore
-      wbc.getRegistry().createEntry(DataStoreDriver.REGISTRY_CLASSIFICATION,
-          new MysqlDataStoreDriver());
-
-    } catch (Exception e) {
-      disabled = true;
-      wbc.getWorkbench()
-          .getFrame()
-          .log(
-              getName() +" " + getMessage() +"\n\t" + e.toString(), 
this.getClass());
-    }
-  }
-
 }

Modified: 
core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDataStoreDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDataStoreDriver.java
  2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDataStoreDriver.java
  2015-12-26 22:12:58 UTC (rev 4678)
@@ -3,14 +3,14 @@
 import java.sql.Connection;
 
 import com.vividsolutions.jump.datastore.DataStoreConnection;
-import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDataStoreDriver;
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSDriver;
 import com.vividsolutions.jump.parameter.ParameterList;
 
 /**
  * A driver for supplying {@link SpatialDatabaseDSConnection}s
  */
 public class OracleDataStoreDriver
-    extends AbstractSpatialDatabasesDataStoreDriver {
+    extends AbstractSpatialDatabasesDSDriver {
     // TODO: uniformize
     public final static String JDBC_CLASS = "oracle.jdbc.driver.OracleDriver";
     public static final String GT_SDO_CLASS_NAME = 
"org.geotools.data.oracle.sdo.SDO";

Modified: 
core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDataStoreExtension.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDataStoreExtension.java
       2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/oracle/OracleDataStoreExtension.java
       2015-12-26 22:12:58 UTC (rev 4678)
@@ -1,59 +1,25 @@
 package com.vividsolutions.jump.datastore.oracle;
 
-import com.vividsolutions.jump.datastore.DataStoreDriver;
-import static 
com.vividsolutions.jump.datastore.oracle.OracleDataStoreDriver.JDBC_CLASS;
-import static 
com.vividsolutions.jump.datastore.oracle.OracleDataStoreDriver.GT_SDO_CLASS_NAME;
+import java.util.Collections;
+import java.util.HashMap;
 
-import com.vividsolutions.jump.workbench.WorkbenchContext;
-import com.vividsolutions.jump.workbench.plugin.Extension;
-import com.vividsolutions.jump.workbench.plugin.PlugInContext;
-import java.sql.Driver;
-import java.sql.DriverManager;
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSExtension;
 
-/**
- * 
- * @author nicolas ribot
- */
-public class OracleDataStoreExtension extends Extension {
-  private static boolean disabled = false;
+public class OracleDataStoreExtension extends 
AbstractSpatialDatabasesDSExtension {
 
+  /**
+   * customize the abstract implementation
+   */
+  public OracleDataStoreExtension() {
+    super(OracleDataStoreDriver.class, Collections.unmodifiableMap(
+        new HashMap<String, String>() {{
+          put(OracleDataStoreDriver.JDBC_CLASS,"ojdbc6.jar");
+          put(OracleDataStoreDriver.GT_SDO_CLASS_NAME, 
"gt2-oracle-spatial-2.x.jar");
+      }}) );
+  }
+
   public String getName() {
     return "Oracle Spatial Datastore Extension";
   }
 
-  public String getVersion() {
-    return "0.3 (2015-12-04)";
-  }
-
-  public String getMessage() {
-    return disabled ? "Disabled: Missing either ojdbc6.jar or 
gt2-oracle-spatial-2.x.jar in classpath"
-        : "";
-  }
-
-  public void configure(PlugInContext context) throws Exception {
-    WorkbenchContext wbc = context.getWorkbenchContext();
-
-    // registers the OracleDataStore driver to the system:
-    try {
-      ClassLoader pluginLoader = wbc.getWorkbench().getPlugInManager()
-          .getClassLoader();
-      // check for ojdbc6.jar
-      Class.forName(JDBC_CLASS, false, pluginLoader);
-
-      // check for gt2-oracle-spatial-2.x.jar
-      Class.forName(GT_SDO_CLASS_NAME, true, pluginLoader)
-          .newInstance();
-      // register the datastore
-      wbc.getRegistry().createEntry(DataStoreDriver.REGISTRY_CLASSIFICATION,
-          new OracleDataStoreDriver());
-    } catch (Exception e) {
-      disabled = true;
-      wbc.getWorkbench()
-          .getFrame()
-          .log(
-              "Oracle Spatial Data Store disabled:\n\t" + e.toString() 
-            + "\n\tOracle JDBC Driver and gt2-oracle-spatial-2.x.jar must 
exist in the classpath !", this.getClass());
-    }
-  }
-
 }

Copied: 
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSDriver.java 
(from rev 4667, 
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDataStoreDriver.java)
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSDriver.java   
                            (rev 0)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSDriver.java   
    2015-12-26 22:12:58 UTC (rev 4678)
@@ -0,0 +1,35 @@
+package com.vividsolutions.jump.datastore.postgis;
+
+import java.sql.Connection;
+
+import com.vividsolutions.jump.datastore.DataStoreConnection;
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSDriver;
+import com.vividsolutions.jump.parameter.ParameterList;
+
+/**
+ * A driver for supplying {@link SpatialDatabaseDSConnection}s
+ */
+public class PostgisDSDriver
+    extends AbstractSpatialDatabasesDSDriver {
+
+    public final static String JDBC_CLASS = "org.postgresql.Driver";
+
+    public PostgisDSDriver() {
+        this.driverName = "PostGIS";
+        this.jdbcClass = JDBC_CLASS;
+        this.urlPrefix = "jdbc:postgresql://";
+    }
+    
+    /**
+     * returns the right type of DataStoreConnection
+     * @param params
+     * @return
+     * @throws Exception 
+     */
+    @Override
+    public DataStoreConnection createConnection(ParameterList params)
+        throws Exception {
+        Connection conn = super.createJdbcConnection(params);
+        return new PostgisDSConnection(conn);
+    }
+}

Added: 
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSExtension.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSExtension.java
                            (rev 0)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSExtension.java
    2015-12-26 22:12:58 UTC (rev 4678)
@@ -0,0 +1,29 @@
+package com.vividsolutions.jump.datastore.postgis;
+
+import java.util.Collections;
+import java.util.HashMap;
+
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSExtension;
+
+/**
+ * installs spatialite datastore into OJ
+ */
+public class PostgisDSExtension extends AbstractSpatialDatabasesDSExtension {
+
+  /**
+   * customize the abstract implementation
+   */
+  public PostgisDSExtension() {
+    super(PostgisDSDriver.class, Collections
+        .unmodifiableMap(new HashMap<String, String>() {
+          {
+            put(PostgisDSDriver.JDBC_CLASS, "postgresql-<version>.jdbc4.jar");
+          }
+        }));
+  }
+
+  public String getName() {
+    return "Postgis Datastore Extension";
+  }
+
+}


Property changes on: 
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDSExtension.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Deleted: 
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDataStoreDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDataStoreDriver.java
        2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/postgis/PostgisDataStoreDriver.java
        2015-12-26 22:12:58 UTC (rev 4678)
@@ -1,35 +0,0 @@
-package com.vividsolutions.jump.datastore.postgis;
-
-import java.sql.Connection;
-
-import com.vividsolutions.jump.datastore.DataStoreConnection;
-import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDataStoreDriver;
-import com.vividsolutions.jump.parameter.ParameterList;
-
-/**
- * A driver for supplying {@link SpatialDatabaseDSConnection}s
- */
-public class PostgisDataStoreDriver
-    extends AbstractSpatialDatabasesDataStoreDriver {
-
-    public final static String JDBC_CLASS = "org.postgresql.Driver";
-
-    public PostgisDataStoreDriver() {
-        this.driverName = "PostGIS";
-        this.jdbcClass = "org.postgresql.Driver";
-        this.urlPrefix = "jdbc:postgresql://";
-    }
-    
-    /**
-     * returns the right type of DataStoreConnection
-     * @param params
-     * @return
-     * @throws Exception 
-     */
-    @Override
-    public DataStoreConnection createConnection(ParameterList params)
-        throws Exception {
-        Connection conn = super.createJdbcConnection(params);
-        return new PostgisDSConnection(conn);
-    }
-}

Copied: 
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDSDriver.java
 (from rev 4667, 
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDataStoreDriver.java)
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDSDriver.java
                             (rev 0)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDSDriver.java
     2015-12-26 22:12:58 UTC (rev 4678)
@@ -0,0 +1,254 @@
+package com.vividsolutions.jump.datastore.spatialdatabases;
+
+import java.sql.Connection;
+import java.sql.Driver;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.Properties;
+
+import com.vividsolutions.jump.JUMPException;
+import com.vividsolutions.jump.datastore.DataStoreConnection;
+import com.vividsolutions.jump.datastore.DataStoreDriver;
+import com.vividsolutions.jump.datastore.jdbc.DelegatingDriver;
+import com.vividsolutions.jump.parameter.ParameterList;
+import com.vividsolutions.jump.parameter.ParameterListSchema;
+import com.vividsolutions.jump.workbench.JUMPWorkbench;
+
+/**
+ * A driver for supplying {@link SpatialDatabaseDSConnection}s
+ */
+public abstract class AbstractSpatialDatabasesDSDriver implements
+    DataStoreDriver {
+
+  public static final String PARAM_Server = "Server";
+  public static final String PARAM_Port = "Port";
+  public static final String PARAM_Instance = "Database";
+  public static final String PARAM_User = "User";
+  public static final String PARAM_Password = "Password";
+  // For file based databases eg. Spatialite
+  public static final String PARAM_DB_File = "DB file";
+
+  protected String driverName = null;
+  protected String jdbcClass = null;
+  protected Driver jdbcDriver = null;
+  protected String urlPrefix = null;
+
+  protected String[] paramNames = null;
+  protected Class[] paramClasses = null;
+  protected ParameterListSchema schema = null;
+
+  public AbstractSpatialDatabasesDSDriver() {
+    // Nicolas Ribot:
+    // paramNames are no more static now they can be overloaded by child 
classes
+    // @link SpatialiteDataStoreDriver for instance
+    paramNames = new String[] { PARAM_Server, PARAM_Port, PARAM_Instance,
+        PARAM_User, PARAM_Password };
+    // Nicolas Ribot: passed protected and not final to allow
+    // spatialiteDataStoreDriver to overload it
+    paramClasses = new Class[] { String.class, Integer.class, String.class,
+        String.class, String.class };
+    // Nicolas Ribot: passed protected and not final to allow
+    // spatialiteDataStoreDriver to overload it
+    schema = new ParameterListSchema(paramNames, paramClasses);
+  }
+
+  public Driver getJdbcDriver() {
+    if (jdbcDriver == null)
+      try {
+        initializeJdbcDriver();
+      } catch (Exception e) {
+        // eat it
+      }
+    return jdbcDriver;
+  }
+
+  public String getJdbcDriverVersion() {
+    if (jdbcDriver == null)
+      try {
+        initializeJdbcDriver();
+      } catch (Exception e) {
+        return "";
+      }
+    return jdbcDriver.getMajorVersion() + "." + jdbcDriver.getMinorVersion();
+  }
+
+  public String getJdbcClass() {
+    return jdbcClass;
+  }
+
+  public String getUrlPrefix() {
+    return urlPrefix;
+  }
+
+  public String[] getParamNames() {
+    return paramNames;
+  }
+
+  public Class[] getParamClasses() {
+    return paramClasses;
+  }
+
+  public ParameterListSchema getSchema() {
+    return schema;
+  }
+
+  @Override
+  public String getName() {
+    return driverName;
+  }
+
+  @Override
+  public String getVersion() {
+    return getJdbcClass() + " v" + getJdbcDriverVersion();
+  }
+
+  @Override
+  public ParameterListSchema getParameterListSchema() {
+    return schema;
+  }
+
+  protected void initializeJdbcDriver() throws SQLException,
+      InstantiationException, IllegalAccessException, ClassNotFoundException {
+    // we always use the plugin classloader to find jdbc jars
+    // under lib/ext/<subfolder>/
+    ClassLoader cl = JUMPWorkbench.getInstance().getPlugInManager()
+        .getClassLoader();
+    jdbcDriver = (Driver) Class.forName(this.getJdbcClass(), true, cl)
+        .newInstance();
+    // DriverManager insists on jdbc drivers loaded with the default
+    // classloader, so we wrap our foreign one into a simple wrapper
+    // see
+    // 
https://stackoverflow.com/questions/288828/how-to-use-a-jdbc-driver-from-an-arbitrary-location
+    DriverManager.registerDriver(new DelegatingDriver(jdbcDriver));
+  }
+
+  /**
+   * overwrite this method if you have some fancy url scheme and
+   * createJdbcConnection() will use that instead of the default implementation
+   * 
+   * @param params
+   * @return
+   */
+  protected String createJdbcUrl(ParameterList params) {
+    String url;
+    if (params.containsParameter(PARAM_DB_File)) {
+      String database = params.getParameter(PARAM_DB_File).toString();
+      url = String.valueOf(new StringBuffer(getUrlPrefix()).append(database));
+    } else {
+      String host = params.getParameterString(PARAM_Server);
+      int port = params.getParameterInt(PARAM_Port);
+      String database = params.getParameterString(PARAM_Instance);
+      url = String.valueOf(new StringBuffer(getUrlPrefix()).append(host)
+          .append(":").append(port).append("/").append(database));
+    }
+
+    return url;
+  }
+
+  /**
+   * convenience wrapper for the
+   * {@link #createJdbcConnection(ParameterList, Properties)} below
+   * 
+   * @param params
+   * @return
+   * @throws Exception
+   */
+  protected Connection createJdbcConnection(ParameterList params)
+      throws Exception {
+    return createJdbcConnection(params, null);
+  }
+
+  /**
+   * use this method in your implementation to create the actual JDBC 
connection
+   */
+  protected Connection createJdbcConnection(ParameterList params,
+      Properties connProps) throws Exception {
+
+    String url = createJdbcUrl(params);
+
+    // only register once per driver
+    if (jdbcDriver == null)
+      initializeJdbcDriver();
+
+    // some helpful debugging output
+    // DriverManager.setLogWriter(new java.io.PrintWriter(System.out));
+    // java.util.Enumeration<Driver> ds = DriverManager.getDrivers();
+    // while (ds.hasMoreElements()) {
+    // Driver d = ds.nextElement();
+    // System.out.println(d.toString());
+    // System.out.println(url);
+    // System.out.println(d.acceptsURL(url));
+    // }
+
+    // mmichaud 2013-08-27 workaround for ticket #330
+    String savePreferIPv4Stack = 
System.getProperty("java.net.preferIPv4Stack");
+    String savePreferIPv6Addresses = System
+        .getProperty("java.net.preferIPv6Addresses");
+    System.setProperty("java.net.preferIPv4Stack", "true");
+    System.setProperty("java.net.preferIPv6Addresses", "false");
+
+    // workaround a bug in DriverManager.getConnection() when used like this:
+    // Connection conn = DriverManager.getConnection(url, user, password);
+    // getConnection() blindly connects to each driver and memorizes only
+    // the _first_ Exception that occurs. this includes
+    // "invalid database address"
+    // errors, which is stupid as connect would have only to ask the driver
+    // if it supports the given url scheme. funny enough getDriver() does, so
+    // we add a bit of code and get the connection ourself w/ the proper 
driver.
+    // finally, as mysql & mariadb both support 'jdbc:mysql' we iterate through
+    // all registered drivers now and find exactly the instance of our
+    // JDBC_CLASS
+    Driver driver = null;
+    java.util.Enumeration<Driver> drivers = DriverManager.getDrivers();
+    while (drivers.hasMoreElements()) {
+      Driver d = drivers.nextElement();
+      if (d instanceof DelegatingDriver)
+        d = ((DelegatingDriver) d).getDriver();
+      // look for exactly _our_ driver
+      if (d.getClass().getName().equals(getJdbcClass())) {
+        driver = d;
+        break;
+      }
+    }
+    // something went wrong
+    if (driver == null)
+      throw new JUMPException(getJdbcClass()
+          + " is not registered with driver manager.");
+
+    String user = params.getParameterString(PARAM_User);
+    String password = params.getParameterString(PARAM_Password);
+    Properties info = connProps != null ? new Properties(connProps)
+        : new Properties();
+    if (user != null) {
+      info.put("user", user);
+    }
+    if (password != null) {
+      info.put("password", password);
+    }
+    Connection conn = driver.connect(url, info);
+
+    if (savePreferIPv4Stack == null) {
+      System.getProperties().remove("java.net.preferIPv4Stack");
+    } else {
+      System.setProperty("java.net.preferIPv4Stack", savePreferIPv4Stack);
+    }
+    if (savePreferIPv6Addresses == null) {
+      System.getProperties().remove("java.net.preferIPv6Addresses");
+    } else {
+      System.setProperty("java.net.preferIPv6Addresses",
+          savePreferIPv6Addresses);
+    }
+
+    return conn;
+  }
+
+  @Override
+  public abstract DataStoreConnection createConnection(ParameterList params)
+      throws Exception;
+
+  @Override
+  public boolean isAdHocQuerySupported() {
+    return true;
+  }
+
+}

Added: 
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDSExtension.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDSExtension.java
                          (rev 0)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDSExtension.java
  2015-12-26 22:12:58 UTC (rev 4678)
@@ -0,0 +1,166 @@
+package com.vividsolutions.jump.datastore.spatialdatabases;
+
+import java.util.Map;
+
+import com.vividsolutions.jump.I18N;
+import com.vividsolutions.jump.datastore.DataStoreDriver;
+import com.vividsolutions.jump.workbench.JUMPWorkbench;
+import com.vividsolutions.jump.workbench.WorkbenchContext;
+import com.vividsolutions.jump.workbench.plugin.Extension;
+import com.vividsolutions.jump.workbench.plugin.PlugInContext;
+
+/**
+ * basic implementation for db datastore extensions
+ */
+abstract public class AbstractSpatialDatabasesDSExtension extends Extension {
+
+  protected String errorMessage = null;
+  protected DataStoreDriver driver = null;
+
+  protected Class[] dsDriverClasses = null;
+  // a map w/ entries like "oracle.jdbc.driver.OracleDriver"->"ojdb6.jar"
+  protected Map<String, String> classNameToJarName = null;
+
+  /**
+   * private, use {@link #AbstractSpatialDatabasesDSExtension(Class, Map)}
+   * instead
+   */
+  private AbstractSpatialDatabasesDSExtension() {
+  }
+
+  /**
+   * instantiate a new extension capable of registering a database datastore
+   * driver
+   * 
+   * @param dsDriverClass
+   *          - the class implementing {@link DataStoreDriver}
+   * @param classesToJar
+   *          - a map with class name entries mapping to jar file names eg.
+   *          "oracle.jdbc.driver.OracleDriver"->"ojdb6.jar"
+   */
+  public AbstractSpatialDatabasesDSExtension(Class[] dsDriverClasses,
+      Map<String, String> classesToJar) {
+    super();
+    if (classesToJar == null
+        || checkArray(dsDriverClasses, DataStoreDriver.class))
+      throw new IllegalArgumentException();
+    this.dsDriverClasses = dsDriverClasses;
+    this.classNameToJarName = classesToJar;
+  }
+
+  /**
+   * convenience method for
+   * {@link #AbstractSpatialDatabasesDSExtension(Class[], Map)}
+   * 
+   * @param dsDriverClass
+   * @param classesToJar
+   */
+  public AbstractSpatialDatabasesDSExtension(Class dsDriverClass,
+      Map<String, String> classesToJar) {
+    this(new Class[] { dsDriverClass }, classesToJar);
+  }
+
+  private boolean checkArray(Class[] classes, Class derivedFrom) {
+    if (!(dsDriverClasses instanceof Class[]))
+      return false;
+
+    for (Class clazz : classes) {
+      if (!clazz.isAssignableFrom(derivedFrom))
+        return false;
+    }
+    return true;
+  }
+
+  /**
+   * implement to assign a readable name to the datastore driver extension
+   * 
+   * @Override
+   */
+  abstract public String getName();
+
+  /**
+   * the default version is 'svn revision (build date)'
+   */
+  public String getVersion() {
+    return "rev." + I18N.get("JUMPWorkbench.version.revision") + "("
+        + I18N.get("JUMPWorkbench.version.buildDate") + ")";
+  }
+
+  /**
+   * override to check dependencies on your own
+   * 
+   * @return "" on success, "errormessage" on failure
+   */
+  protected String isAvailable() {
+    // only run this test once
+    if (errorMessage != null)
+      return errorMessage;
+
+    ClassLoader pluginLoader = JUMPWorkbench.getInstance().getPlugInManager()
+        .getClassLoader();
+    String msg = "";
+    for (Map.Entry<String, String> entry : classNameToJarName.entrySet()) {
+      String clazz = entry.getKey();
+      String jar = entry.getValue();
+      // check for jar
+      try {
+        Class.forName(clazz, false, pluginLoader);
+      } catch (ClassNotFoundException e) {
+        msg = msg.isEmpty() ? jar : msg + ", " + jar;
+      }
+    }
+    if (!msg.isEmpty())
+      msg = I18N.getMessage(getClass().getName()
+          + ".missing-dependency-jars {0}", msg);
+
+    return errorMessage = msg;
+  }
+
+  /**
+   * by default show error messages or loaded JDBC driver versions
+   */
+  public String getMessage() {
+    String msg = isAvailable();
+    if (!msg.isEmpty())
+      return msg;
+
+    if (driver != null)
+      return driver.getVersion();
+
+    return "";
+  }
+
+  /**
+   * installs the database datastore driver defined as first parameter in
+   * {@link #AbstractSpatialDatabasesDSExtension(Class, Map)} if
+   * {@link #isAvailable()} returns an empty String
+   */
+  public void configure(PlugInContext context) throws Exception {
+    WorkbenchContext wbc = context.getWorkbenchContext();
+
+    // conditionally register the DataStore drivers to the system:
+    if (isAvailable().isEmpty()) {
+      for (Class dsDriverClass : dsDriverClasses) {
+        DataStoreDriver dsDriver = (DataStoreDriver) dsDriverClass
+            .newInstance();
+
+        // cache the first driver for version output above
+        // all others are presumably aliases for different protocols
+        if (driver == null)
+          driver = dsDriver;
+
+        // register the datastore
+        wbc.getRegistry().createEntry(DataStoreDriver.REGISTRY_CLASSIFICATION,
+            dsDriver);
+      }
+    } else {
+      wbc.getWorkbench()
+          .getFrame()
+          .log(
+              I18N.getMessage(getClass().getName()
+                  + ".datastore-{0}-disabled:-{1}", getName(), isAvailable()),
+              this.getClass());
+    }
+  }
+
+}


Property changes on: 
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDSExtension.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Deleted: 
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDataStoreDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDataStoreDriver.java
      2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/spatialdatabases/AbstractSpatialDatabasesDataStoreDriver.java
      2015-12-26 22:12:58 UTC (rev 4678)
@@ -1,199 +0,0 @@
-package com.vividsolutions.jump.datastore.spatialdatabases;
-
-import java.sql.Connection;
-import java.sql.Driver;
-import java.sql.DriverManager;
-
-import com.vividsolutions.jump.JUMPException;
-import com.vividsolutions.jump.datastore.DataStoreConnection;
-import com.vividsolutions.jump.datastore.DataStoreDriver;
-import com.vividsolutions.jump.datastore.jdbc.DelegatingDriver;
-import com.vividsolutions.jump.parameter.ParameterList;
-import com.vividsolutions.jump.parameter.ParameterListSchema;
-import com.vividsolutions.jump.workbench.JUMPWorkbench;
-
-/**
- * A driver for supplying {@link SpatialDatabaseDSConnection}s
- */
-public abstract class AbstractSpatialDatabasesDataStoreDriver
-    implements DataStoreDriver {
-
-  /** TODO: I18N */
-  public static final String PARAM_Server = "Server";
-  public static final String PARAM_Port = "Port";
-  public static final String PARAM_Instance = "Database";
-  public static final String PARAM_User = "User";
-  public static final String PARAM_Password = "Password";
-  // For Spatialite
-  public static final String PARAM_DB_File = "DB file";
-
-  protected String driverName = null;
-  protected String jdbcClass = null;
-  protected String urlPrefix = null;
-
-  protected String[] paramNames = null;
-  protected Class[] paramClasses = null;
-  protected ParameterListSchema schema = null;
-  
-  protected boolean registered = false;
-
-  public AbstractSpatialDatabasesDataStoreDriver() {
-    // Nicolas Ribot:
-    //paramNames are no more static now they can be overloaded by child 
classes @link SpatialiteDataStoreDriver for instance
-    paramNames = new String[]{
-        PARAM_Server,
-        PARAM_Port,
-        PARAM_Instance,
-        PARAM_User,
-        PARAM_Password
-      };
-  // Nicolas Ribot: passed protected and not final to allow 
spatialiteDataStoreDriver to overload it
-    paramClasses = new Class[]{
-        String.class,
-        Integer.class,
-        String.class,
-        String.class,
-        String.class
-      };
-    // Nicolas Ribot: passed protected and not final to allow 
spatialiteDataStoreDriver to overload it
-    schema = new ParameterListSchema(paramNames, paramClasses);
-  }
-
-  public String getDriverName() {
-    return driverName;
-  }
-
-  public String getJdbcClass() {
-    return jdbcClass;
-  }
-
-  public String getUrlPrefix() {
-    return urlPrefix;
-  }
-
-  public String[] getParamNames() {
-    return paramNames;
-  }
-
-  public Class[] getParamClasses() {
-    return paramClasses;
-  }
-
-  public ParameterListSchema getSchema() {
-    return schema;
-  }
-
-  @Override
-  public String getName() {
-    return driverName;
-  }
-
-  @Override
-  public ParameterListSchema getParameterListSchema() {
-    return schema;
-  }
-
-  /**
-   * use this method in your implementation to create the actual JDBC 
connection
-   */
-  protected Connection createJdbcConnection(ParameterList params)
-      throws Exception {
-    String host = params.getParameterString(PARAM_Server);
-    int port = params.getParameterInt(PARAM_Port);
-    String database = params.getParameterString(PARAM_Instance);
-    String user = params.getParameterString(PARAM_User);
-    String password = params.getParameterString(PARAM_Password);
-
-    String url
-        = String.valueOf(new 
StringBuffer(getUrlPrefix()).append(host).append(":").append(port).append("/").append(database));
-
-    // only register once per driver
-    if (!this.registered) {
-      // we always use the plugin classloader to find jdbc jars
-      // under lib/ext/<subfolder>/
-      ClassLoader cl = JUMPWorkbench.getInstance().getPlugInManager()
-          .getClassLoader();
-      Driver driver = (Driver) Class.forName(this.getJdbcClass(), true, cl)
-          .newInstance();
-      // DriverManager insists on jdbc drivers loaded with the default
-      // classloader, so we wrap our foreign one into a simple wrapper
-      // see
-      // 
https://stackoverflow.com/questions/288828/how-to-use-a-jdbc-driver-from-an-arbitrary-location
-      DriverManager.registerDriver(new DelegatingDriver(driver));
-      this.registered = true;
-    }
-
-    // some helpful debugging output
-//    DriverManager.setLogWriter(new java.io.PrintWriter(System.out));
-//    java.util.Enumeration<Driver> ds = DriverManager.getDrivers();
-//    while (ds.hasMoreElements()) {
-//      Driver d = ds.nextElement();
-//      System.out.println(d.toString());
-//      System.out.println(url);
-//      System.out.println(d.acceptsURL(url));
-//    }
-    
-    // mmichaud 2013-08-27 workaround for ticket #330
-    String savePreferIPv4Stack = 
System.getProperty("java.net.preferIPv4Stack");
-    String savePreferIPv6Addresses = 
System.getProperty("java.net.preferIPv6Addresses");
-    System.setProperty("java.net.preferIPv4Stack", "true");
-    System.setProperty("java.net.preferIPv6Addresses", "false");
-
-    // workaround a bug in DriverManager.getConnection() when used like this:
-    //   Connection conn = DriverManager.getConnection(url, user, password);
-    // getConnection() blindly connects to each driver and memorizes only
-    // the _first_ Exception that occurs. this includes "invalid database 
address"
-    // errors, which is stupid as connect would have only to ask the driver
-    // if it supports the given url scheme. funny enough getDriver() does, so
-    // we add a bit of code and get the connection ourself w/ the proper 
driver.
-    // finally, as mysql & mariadb both support 'jdbc:mysql' we iterate through
-    // all registered drivers now and find exactly the instance of our 
JDBC_CLASS
-    Driver driver = null;
-    java.util.Enumeration<Driver> drivers = DriverManager.getDrivers();
-    while (drivers.hasMoreElements()) {
-      Driver d = drivers.nextElement();
-      if (d instanceof DelegatingDriver)
-        d = ((DelegatingDriver) d).getDriver();
-      // look for exactly _our_ driver
-      if (d.getClass().getName().equals(getJdbcClass())) {
-        driver = d;
-        break;
-      }
-    }
-    // something went wrong
-    if (driver == null)
-      throw new JUMPException(getJdbcClass()+" is not registered with driver 
manager.");
-    
-    java.util.Properties info = new java.util.Properties();
-    if (user != null) {
-      info.put("user", user);
-    }
-    if (password != null) {
-      info.put("password", password);
-    }
-    Connection conn = driver.connect(url, info);
-
-    if (savePreferIPv4Stack == null) {
-      System.getProperties().remove("java.net.preferIPv4Stack");
-    } else {
-      System.setProperty("java.net.preferIPv4Stack", savePreferIPv4Stack);
-    }
-    if (savePreferIPv6Addresses == null) {
-      System.getProperties().remove("java.net.preferIPv6Addresses");
-    } else {
-      System.setProperty("java.net.preferIPv6Addresses", 
savePreferIPv6Addresses);
-    }
-
-    return conn;
-  }
-
-  @Override
-  public abstract DataStoreConnection createConnection(ParameterList params)
-      throws Exception;
-
-  @Override
-  public boolean isAdHocQuerySupported() {
-    return true;
-  }
-
-}

Modified: 
core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDataStoreDriver.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDataStoreDriver.java
  2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDataStoreDriver.java
  2015-12-26 22:12:58 UTC (rev 4678)
@@ -3,13 +3,10 @@
 import java.io.File;
 import java.lang.reflect.Method;
 import java.sql.Connection;
-import java.sql.Driver;
-import java.sql.DriverManager;
 import java.util.Properties;
 
 import com.vividsolutions.jump.datastore.DataStoreConnection;
-import com.vividsolutions.jump.datastore.jdbc.DelegatingDriver;
-import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDataStoreDriver;
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSDriver;
 import com.vividsolutions.jump.parameter.ParameterList;
 import com.vividsolutions.jump.parameter.ParameterListSchema;
 import com.vividsolutions.jump.workbench.JUMPWorkbench;
@@ -19,15 +16,14 @@
 /**
  * A driver for supplying {@link SpatialDatabaseDSConnection}s
  */
-public class SpatialiteDataStoreDriver extends 
AbstractSpatialDatabasesDataStoreDriver {
+public class SpatialiteDataStoreDriver extends 
AbstractSpatialDatabasesDSDriver {
 
   public final static String JDBC_CLASS = "org.sqlite.JDBC";
-  private static boolean initialized = false;
+  private String spatialiteVersion = "not connected";
 
   public SpatialiteDataStoreDriver() {
     this.driverName = "Spatialite";
     this.jdbcClass = JDBC_CLASS;
-    // TODO: prompt for filename
     this.urlPrefix = "jdbc:sqlite:";
 
     // Panel parameters: adds a file chooser for db name
@@ -37,6 +33,13 @@
   }
 
   /**
+   * additionally report spatialite version if connection exists
+   */
+  public String getVersion() {
+    return super.getVersion() + " (Spatialite " + spatialiteVersion + ")";
+  }
+
+  /**
    * returns a spatialite JDBC connection with spatialite extension loaded if
    * possible if not, a property will tell so
    * 
@@ -63,25 +66,9 @@
           + " does not exist. cannot create connection");
     }
 
-    String url = String.valueOf(new StringBuffer(urlPrefix).append(database));
-
     ClassLoader cl = JUMPWorkbench.getInstance().getPlugInManager()
         .getClassLoader();
 
-    // we register only once
-    if (!initialized) {
-      Driver driver = (Driver) cl.loadClass(this.getJdbcClass()).newInstance();
-      // DriverManager insists on jdbc drivers loaded with the default
-      // classloader, so we wrap our foreign one into a simple wrapper
-      // see 
https://stackoverflow.com/questions/288828/how-to-use-a-jdbc-driver-from-an-arbitrary-location
-      DriverManager.registerDriver(new DelegatingDriver(driver));
-      initialized = true;
-//      Enumeration<Driver> ds = DriverManager.getDrivers();
-//      while (ds.hasMoreElements()) {
-//        System.out.println(ds.nextElement());
-//      }
-    }
-
     // mandatory to enable loading extensions
     Class configClazz = cl.loadClass("org.sqlite.SQLiteConfig");
     Method enableMethod = configClazz.getMethod("enableLoadExtension",
@@ -97,9 +84,18 @@
 
     Method getPropsMethod = configClazz.getMethod("toProperties");
     Properties props = (Properties) getPropsMethod.invoke(config);
-    Connection conn = DriverManager.getConnection(url, props);
 
-    return new SpatialiteDSConnection(conn);
+    Connection conn = super.createJdbcConnection(params, props);
+    SpatialiteDSConnection dsConn = new SpatialiteDSConnection(conn);
+
+    // memorize spatialite version for displaying later
+    this.spatialiteVersion = ((SpatialiteDSMetadata) dsConn.getMetadata())
+        .getSpatialiteVersion();
+    // report if spatialite could not be loaded
+    if (this.spatialiteVersion.isEmpty())
+      this.spatialiteVersion = "missing";
+
+    return dsConn;
   }
-  
+
 }

Modified: 
core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDataStoreExtension.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDataStoreExtension.java
       2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/com/vividsolutions/jump/datastore/spatialite/SpatialiteDataStoreExtension.java
       2015-12-26 22:12:58 UTC (rev 4678)
@@ -1,55 +1,31 @@
 package com.vividsolutions.jump.datastore.spatialite;
 
-import com.vividsolutions.jump.datastore.DataStoreDriver;
-import static 
com.vividsolutions.jump.datastore.spatialite.SpatialiteDataStoreDriver.JDBC_CLASS;
+import java.util.Collections;
+import java.util.HashMap;
 
-import com.vividsolutions.jump.workbench.WorkbenchContext;
-import com.vividsolutions.jump.workbench.plugin.Extension;
-import com.vividsolutions.jump.workbench.plugin.PlugInContext;
-import java.sql.Driver;
-import java.sql.DriverManager;
+import 
com.vividsolutions.jump.datastore.spatialdatabases.AbstractSpatialDatabasesDSExtension;
 
 /**
- * 
- * @author nicolas ribot
+ * installs spatialite datastore into OJ
  */
-public class SpatialiteDataStoreExtension extends Extension {
-  private static boolean disabled = false;
+public class SpatialiteDataStoreExtension extends
+    AbstractSpatialDatabasesDSExtension {
 
-  public String getName() {
-    return "Spatialite Spatial Datastore Extension";
+  /**
+   * customize the abstract implementation
+   */
+  public SpatialiteDataStoreExtension() {
+    super(SpatialiteDataStoreDriver.class, Collections
+        .unmodifiableMap(new HashMap<String, String>() {
+          {
+            put(SpatialiteDataStoreDriver.JDBC_CLASS,
+                "sqlite-jdbc-<version>.jar");
+          }
+        }));
   }
 
-  public String getVersion() {
-    return "0.3 (2015-12-04)";
+  public String getName() {
+    return "Spatialite Datastore Extension";
   }
 
-  public String getMessage() {
-    return disabled ? "Disabled: Missing sqlite-jdbc-<version>.jar in 
classpath"
-        : "";
-  }
-  // TODO: refactor in a base class.
-  public void configure(PlugInContext context) throws Exception {
-    WorkbenchContext wbc = context.getWorkbenchContext();
-
-    // registers the MariaDBDataStore driver to the system:
-    try {
-      ClassLoader pluginLoader = wbc.getWorkbench().getPlugInManager()
-          .getClassLoader();
-      // check for sqlite jar
-      Class.forName(JDBC_CLASS, false, pluginLoader);
-
-      // register the datastore
-      wbc.getRegistry().createEntry(DataStoreDriver.REGISTRY_CLASSIFICATION,
-          new SpatialiteDataStoreDriver());
-    } catch (Exception e) {
-      disabled = true;
-      wbc.getWorkbench()
-          .getFrame()
-          .log(
-              "Sqlite/Spatialite Spatial Data Store disabled:\n\t" + 
e.toString() 
-            + "\n\tSqlite JDBC Driver (sqlite-jdbc-<version>.jar) must exist 
in the classpath !", this.getClass());
-    }
-  }
-
 }

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/JUMPConfiguration.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/workbench/JUMPConfiguration.java     
2015-12-26 22:05:59 UTC (rev 4677)
+++ core/trunk/src/com/vividsolutions/jump/workbench/JUMPConfiguration.java     
2015-12-26 22:12:58 UTC (rev 4678)
@@ -36,7 +36,6 @@
 import java.awt.event.ComponentEvent;
 import java.lang.reflect.Field;
 
-import javax.swing.JFrame;
 import javax.swing.JPopupMenu;
 import javax.swing.JToggleButton;
 
@@ -67,14 +66,6 @@
 
 import com.vividsolutions.jts.util.Assert;
 import com.vividsolutions.jump.I18N;
-import com.vividsolutions.jump.datastore.DataStoreDriver;
-import com.vividsolutions.jump.datastore.DataStoreException;
-import com.vividsolutions.jump.datastore.postgis.PostgisDataStoreDriver;
-//import 
com.vividsolutions.jump.workbench.datasource.AbstractSaveDatasetAsPlugIn;
-//import 
com.vividsolutions.jump.workbench.datasource.InstallStandardDataSourceQueryChoosersPlugIn;
-//import com.vividsolutions.jump.workbench.datasource.LoadDatasetPlugIn;
-//import com.vividsolutions.jump.workbench.datasource.SaveDatasetAsPlugIn;
-import com.vividsolutions.jump.workbench.datastore.ConnectionManager;
 import com.vividsolutions.jump.workbench.model.Layer;
 import com.vividsolutions.jump.workbench.model.WMSLayer;
 import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
@@ -83,7 +74,6 @@
 import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
 import com.vividsolutions.jump.workbench.plugin.PlugIn;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
-import com.vividsolutions.jump.workbench.ui.ApplicationExitHandler;
 //import com.vividsolutions.jump.workbench.ui.AttributeTab;
 //import com.vividsolutions.jump.workbench.ui.GUIUtil;
 import com.vividsolutions.jump.workbench.ui.LayerViewPanel;
@@ -182,9 +172,11 @@
 //import com.vividsolutions.jump.workbench.ui.zoom.ZoomToLayerPlugIn;
 import com.vividsolutions.jump.workbench.ui.zoom.ZoomToSelectedItemsPlugIn;
 import com.vividsolutions.jump.workbench.ui.zoom.ZoomTool;
+//import 
com.vividsolutions.jump.workbench.datasource.AbstractSaveDatasetAsPlugIn;
+//import 
com.vividsolutions.jump.workbench.datasource.InstallStandardDataSourceQueryChoosersPlugIn;
+//import com.vividsolutions.jump.workbench.datasource.LoadDatasetPlugIn;
+//import com.vividsolutions.jump.workbench.datasource.SaveDatasetAsPlugIn;
 
-import de.latlon.deejump.plugin.style.DeeChangeStylesPlugIn;
-
 /**
  * Initializes the Workbench with various menus and cursor tools. Accesses the
  * Workbench structure through a WorkbenchContext.
@@ -379,7 +371,6 @@
   public void setup(WorkbenchContext workbenchContext) throws Exception {
 
     configureStyles(workbenchContext);
-    configureDatastores(workbenchContext);
 
     workbenchContext.getWorkbench().getBlackboard()
         .put(SnapToVerticesPolicy.ENABLED_KEY, true);
@@ -1064,40 +1055,6 @@
 //    featureInstaller.addMenuSeparator(MENU_LAYER); // ===================
   }
 
-  public void configureDatastores(final WorkbenchContext context)
-      throws Exception {
-
-    context.getRegistry().createEntry(DataStoreDriver.REGISTRY_CLASSIFICATION,
-        new PostgisDataStoreDriver());
-
-    // Nicolas Ribot, 01 fev 2015: tries to add oracle DataStore support
-    // add the driver only if oracle driver class if found
-    /*
-    try {
-        Driver driver = (Driver) Class.forName(JDBC_CLASS).newInstance();
-        
context.getRegistry().createEntry(DataStoreDriver.REGISTRY_CLASSIFICATION,
-            new OracleDataStoreDriver());
-    } catch (Exception e) {
-        // TODO: replace by log ?
-        System.out.println("oracle driver not found: " + e.toString() + ". 
dataStore NOT added");
-    }
-    */
-//    // update exit handler
-//    final ApplicationExitHandler oldApplicationExitHandler = context
-//        .getWorkbench().getFrame().getApplicationExitHandler();
-//    context.getWorkbench().getFrame()
-//        .setApplicationExitHandler(new ApplicationExitHandler() {
-//          public void exitApplication(JFrame mainFrame) {
-//            try {
-//              ConnectionManager.instance(context).closeConnections();
-//            } catch (DataStoreException e) {
-//              throw new RuntimeException(e);
-//            }
-//            oldApplicationExitHandler.exitApplication(mainFrame);
-//          }
-//        });
-  }
-
   private void configureStyles(WorkbenchContext workbenchContext) {
     WorkbenchFrame frame = workbenchContext.getWorkbench().getFrame();
     frame.addChoosableStyleClass(VertexXYLineSegmentStyle.VertexXY.class);

Modified: 
core/trunk/src/org/openjump/core/ui/plugin/datastore/WritableDataStoreDataSource.java
===================================================================
--- 
core/trunk/src/org/openjump/core/ui/plugin/datastore/WritableDataStoreDataSource.java
       2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/org/openjump/core/ui/plugin/datastore/WritableDataStoreDataSource.java
       2015-12-26 22:12:58 UTC (rev 4678)
@@ -1,41 +1,47 @@
 package org.openjump.core.ui.plugin.datastore;
 
+import static 
org.openjump.core.ui.plugin.datastore.postgis.PostGISQueryUtil.compose;
+import static 
org.openjump.core.ui.plugin.datastore.postgis.PostGISQueryUtil.getGeometryDimension;
+
+import java.sql.DatabaseMetaData;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.swing.JOptionPane;
+
+import org.apache.log4j.Logger;
+import org.openjump.core.ui.plugin.datastore.postgis.PostGISConnectionUtil;
+import org.openjump.core.ui.plugin.datastore.postgis.PostGISQueryUtil;
+import 
org.openjump.core.ui.plugin.datastore.transaction.DataStoreTransactionManager;
+import org.openjump.core.ui.plugin.datastore.transaction.Evolution;
+import 
org.openjump.core.ui.plugin.datastore.transaction.EvolutionOperationException;
+
 import com.vividsolutions.jts.geom.Geometry;
 import com.vividsolutions.jts.geom.GeometryFactory;
 import com.vividsolutions.jump.I18N;
-import com.vividsolutions.jump.datastore.AdhocQuery;
-import com.vividsolutions.jump.datastore.DataStoreConnection;
-import com.vividsolutions.jump.datastore.DataStoreDriver;
 import com.vividsolutions.jump.datastore.postgis.PostgisDSConnection;
-import com.vividsolutions.jump.datastore.postgis.PostgisDataStoreDriver;
-import com.vividsolutions.jump.feature.*;
-import com.vividsolutions.jump.io.FeatureInputStream;
+import com.vividsolutions.jump.datastore.postgis.PostgisDSDriver;
+import com.vividsolutions.jump.feature.AttributeType;
+import com.vividsolutions.jump.feature.Feature;
+import com.vividsolutions.jump.feature.FeatureCollection;
+import com.vividsolutions.jump.feature.FeatureSchema;
 import com.vividsolutions.jump.io.datasource.Connection;
-import com.vividsolutions.jump.io.datasource.DataSourceQuery;
-import com.vividsolutions.jump.parameter.ParameterList;
-import com.vividsolutions.jump.parameter.ParameterListSchema;
 import com.vividsolutions.jump.task.TaskMonitor;
 import com.vividsolutions.jump.util.CollectionUtil;
 import com.vividsolutions.jump.workbench.JUMPWorkbench;
-import com.vividsolutions.jump.workbench.WorkbenchContext;
 import com.vividsolutions.jump.workbench.datastore.ConnectionDescriptor;
-import com.vividsolutions.jump.workbench.datastore.ConnectionManager;
 import com.vividsolutions.jump.workbench.model.Layer;
 import 
com.vividsolutions.jump.workbench.ui.plugin.datastore.DataStoreDataSource;
-import org.apache.log4j.Logger;
-import org.openjump.core.ui.plugin.datastore.postgis.PostGISConnectionUtil;
-import org.openjump.core.ui.plugin.datastore.postgis.PostGISQueryUtil;
-import 
org.openjump.core.ui.plugin.datastore.transaction.DataStoreTransactionManager;
-import org.openjump.core.ui.plugin.datastore.transaction.Evolution;
-import 
org.openjump.core.ui.plugin.datastore.transaction.EvolutionOperationException;
 
-import javax.swing.*;
-import java.sql.*;
-import java.util.*;
-import java.util.Date;
-
-import static org.openjump.core.ui.plugin.datastore.postgis.PostGISQueryUtil.*;
-
 /**
  * Extension of DataBaseDataSource adding write capabilities.
  */
@@ -191,7 +197,7 @@
                         (Integer)getProperties().get(GEOM_DIM_KEY);
 
                 PostgisDSConnection pgConnection =
-                        (PostgisDSConnection)new PostgisDataStoreDriver()
+                        (PostgisDSConnection)new PostgisDSDriver()
                                 
.createConnection(connectionDescriptor.getParameterList());
                 java.sql.Connection conn = pgConnection.getJdbcConnection();
                 try {

Modified: 
core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis/SaveToPostGISDataSource.java
===================================================================
--- 
core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis/SaveToPostGISDataSource.java
   2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis/SaveToPostGISDataSource.java
   2015-12-26 22:12:58 UTC (rev 4678)
@@ -3,7 +3,7 @@
 import com.vividsolutions.jts.geom.Geometry;
 import com.vividsolutions.jump.I18N;
 import com.vividsolutions.jump.datastore.postgis.PostgisDSConnection;
-import com.vividsolutions.jump.datastore.postgis.PostgisDataStoreDriver;
+import com.vividsolutions.jump.datastore.postgis.PostgisDSDriver;
 import com.vividsolutions.jump.feature.AttributeType;
 import com.vividsolutions.jump.feature.Feature;
 import com.vividsolutions.jump.feature.FeatureCollection;
@@ -149,7 +149,7 @@
                 int dim = getGeometryDimension(featureCollection, 3);
 
                 PostgisDSConnection pgConnection = 
-                        (PostgisDSConnection)new PostgisDataStoreDriver()
+                        (PostgisDSConnection)new PostgisDSDriver()
                         
.createConnection(connectionDescriptor.getParameterList());
                 java.sql.Connection conn = pgConnection.getJdbcConnection();
                 PostGISConnectionUtil connUtil = new 
PostGISConnectionUtil(conn);

Modified: 
core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis2/PostGISDataStoreDataSource.java
===================================================================
--- 
core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis2/PostGISDataStoreDataSource.java
       2015-12-26 22:05:59 UTC (rev 4677)
+++ 
core/trunk/src/org/openjump/core/ui/plugin/datastore/postgis2/PostGISDataStoreDataSource.java
       2015-12-26 22:12:58 UTC (rev 4678)
@@ -4,7 +4,7 @@
 import com.vividsolutions.jump.datastore.AdhocQuery;
 import com.vividsolutions.jump.datastore.postgis.PostgisDSConnection;
 import com.vividsolutions.jump.datastore.postgis.PostgisDSMetadata;
-import com.vividsolutions.jump.datastore.postgis.PostgisDataStoreDriver;
+import com.vividsolutions.jump.datastore.postgis.PostgisDSDriver;
 import com.vividsolutions.jump.feature.Feature;
 import com.vividsolutions.jump.feature.FeatureCollection;
 import com.vividsolutions.jump.feature.FeatureDataset;
@@ -66,7 +66,7 @@
                 
(ConnectionDescriptor)getProperties().get(CONNECTION_DESCRIPTOR_KEY);
 
         PostgisDSConnection pgConnection =
-                (PostgisDSConnection)new PostgisDataStoreDriver()
+                (PostgisDSConnection)new PostgisDSDriver()
                         
.createConnection(connectionDescriptor.getParameterList());
 
         boolean hasPK = getProperties().get(EXTERNAL_PK_KEY) != null;


------------------------------------------------------------------------------
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to