You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/04/18 09:59:15 UTC
[11/19] cayenne git commit: Refactoring PKs - Refactoring
FirebirdSniffer and HSQLDBSniffer
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 <pr...@hotmail.com>
Authored: Sun Apr 1 19:42:04 2018 +0300
Committer: Aleksey Pleshkanev <pr...@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;
}
}