Refactoring PKs - Refactoring FirebirdSniffer and HSQLDBSniffer

Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/70880cab
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/70880cab
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/70880cab

Branch: refs/heads/master
Commit: 70880cabc771b12a27efcec6a0450d72758d3d3c
Parents: ac111c6
Author: Aleksey Pleshkanev <priest...@hotmail.com>
Authored: Sun Apr 1 19:42:04 2018 +0300
Committer: Aleksey Pleshkanev <priest...@hotmail.com>
Committed: Sun Apr 1 19:42:04 2018 +0300

----------------------------------------------------------------------
 .../cayenne/dba/firebird/FirebirdSniffer.java   | 36 ++++++++++++++++----
 .../cayenne/dba/hsqldb/HSQLDBSniffer.java       | 32 ++++++++++++-----
 2 files changed, 53 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/70880cab/cayenne-server/src/main/java/org/apache/cayenne/dba/firebird/FirebirdSniffer.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/dba/firebird/FirebirdSniffer.java
 
b/cayenne-server/src/main/java/org/apache/cayenne/dba/firebird/FirebirdSniffer.java
index de46542..6c69d94 100644
--- 
a/cayenne-server/src/main/java/org/apache/cayenne/dba/firebird/FirebirdSniffer.java
+++ 
b/cayenne-server/src/main/java/org/apache/cayenne/dba/firebird/FirebirdSniffer.java
@@ -16,28 +16,50 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
- 
-package org.apache.cayenne.dba.firebird;
 
-import java.sql.DatabaseMetaData;
-import java.sql.SQLException;
+package org.apache.cayenne.dba.firebird;
 
 import org.apache.cayenne.configuration.server.DbAdapterDetector;
+import org.apache.cayenne.configuration.server.PkGeneratorFactoryProvider;
 import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.JdbcAdapter;
+import org.apache.cayenne.dba.PkGenerator;
 import org.apache.cayenne.di.AdhocObjectFactory;
 import org.apache.cayenne.di.Inject;
 
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+import java.util.Objects;
+
 public class FirebirdSniffer implements DbAdapterDetector {
+
     protected AdhocObjectFactory objectFactory;
 
-    public FirebirdSniffer(@Inject AdhocObjectFactory objectFactory) {
+    protected PkGeneratorFactoryProvider pkGeneratorProvider;
+
+    public FirebirdSniffer(@Inject AdhocObjectFactory objectFactory,
+                           @Inject PkGeneratorFactoryProvider 
pkGeneratorProvider) {
         this.objectFactory = objectFactory;
+        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, 
"Null pkGeneratorProvider");
     }
 
     @Override
     public DbAdapter createAdapter(DatabaseMetaData md) throws SQLException {
         String dbName = md.getDatabaseProductName();
-        return dbName != null && dbName.toUpperCase().contains("FIREBIRD")
-                ? (DbAdapter) objectFactory.newInstance(DbAdapter.class, 
FirebirdAdapter.class.getName()) : null;
+        if (dbName == null || !dbName.toUpperCase().contains("FIREBIRD")) {
+            return null;
+        }
+
+        JdbcAdapter adapter = objectFactory.newInstance(
+                DbAdapter.class,
+                FirebirdAdapter.class.getName());
+
+        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
+
+        if (pkGenerator != null) {
+            adapter.setPkGenerator(pkGenerator);
+        }
+
+        return adapter;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/70880cab/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java 
b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java
index e385792..e098407 100644
--- 
a/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java
+++ 
b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java
@@ -19,25 +19,33 @@
 
 package org.apache.cayenne.dba.hsqldb;
 
-import java.sql.DatabaseMetaData;
-import java.sql.SQLException;
-
 import org.apache.cayenne.configuration.server.DbAdapterDetector;
+import org.apache.cayenne.configuration.server.PkGeneratorFactoryProvider;
 import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.JdbcAdapter;
+import org.apache.cayenne.dba.PkGenerator;
 import org.apache.cayenne.di.AdhocObjectFactory;
 import org.apache.cayenne.di.Inject;
 
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+import java.util.Objects;
+
 /**
  * Detects HSQLDB database from JDBC metadata.
- * 
+ *
  * @since 1.2
  */
 public class HSQLDBSniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    public HSQLDBSniffer(@Inject AdhocObjectFactory objectFactory) {
+    protected PkGeneratorFactoryProvider pkGeneratorProvider;
+
+    public HSQLDBSniffer(@Inject AdhocObjectFactory objectFactory,
+                         @Inject PkGeneratorFactoryProvider 
pkGeneratorProvider) {
         this.objectFactory = objectFactory;
+        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, 
"Null pkGeneratorProvider");
     }
 
     @Override
@@ -50,8 +58,16 @@ public class HSQLDBSniffer implements DbAdapterDetector {
         boolean supportsSchema = md.getDriverMajorVersion() < 1
                 || md.getDriverMajorVersion() == 1 && 
md.getDriverMinorVersion() <= 8;
 
-        return supportsSchema
-                    ? (DbAdapter) objectFactory.newInstance(DbAdapter.class, 
HSQLDBAdapter.class.getName())
-                    : (DbAdapter) objectFactory.newInstance(DbAdapter.class, 
HSQLDBNoSchemaAdapter.class.getName());
+        JdbcAdapter adapter = supportsSchema
+                ? objectFactory.newInstance(DbAdapter.class, 
HSQLDBAdapter.class.getName())
+                : objectFactory.newInstance(DbAdapter.class, 
HSQLDBNoSchemaAdapter.class.getName());
+
+        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
+
+        if (pkGenerator != null) {
+            adapter.setPkGenerator(pkGenerator);
+        }
+
+        return adapter;
     }
 }

Reply via email to