Repository: cayenne
Updated Branches:
  refs/heads/master 4dc4650c6 -> 8f3ac8b6a


CAY-2279 cdbimport: skip PK comparison for VIEWs


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

Branch: refs/heads/master
Commit: 770e3b579e1ad9b06c09a538c38a89867551a4e7
Parents: 5008dce
Author: Anton Dreka <drek...@gmail.com>
Authored: Mon Apr 10 12:28:06 2017 +0300
Committer: Anton Dreka <drek...@gmail.com>
Committed: Mon Apr 10 12:28:06 2017 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/dbsync/merge/DbAttributeMerger.java  | 7 +++++++
 .../org/apache/cayenne/dbsync/merge/DbEntityMerger.java     | 7 ++++++-
 .../apache/cayenne/dbsync/reverse/dbload/EntityLoader.java  | 2 ++
 .../main/java/org/apache/cayenne/map/DetectedDbEntity.java  | 9 +++++++++
 docs/doc/src/main/resources/RELEASE-NOTES.txt               | 2 ++
 5 files changed, 26 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/770e3b57/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java
----------------------------------------------------------------------
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java
index 4511dc5..d24dbe5 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java
@@ -30,6 +30,7 @@ import 
org.apache.cayenne.dbsync.merge.factory.MergerTokenFactory;
 import org.apache.cayenne.dbsync.merge.token.MergerToken;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.DetectedDbEntity;
 
 class DbAttributeMerger extends AbstractMerger<DbEntity, DbAttribute> {
 
@@ -66,6 +67,12 @@ class DbAttributeMerger extends AbstractMerger<DbEntity, 
DbAttribute> {
             
tokens.add(getTokenFactory().createSetNotNullToDb(originalDbEntity, original));
         }
 
+        if(original.isPrimaryKey()
+                && originalDbEntity instanceof DetectedDbEntity
+                && "VIEW".equals(((DetectedDbEntity) 
originalDbEntity).getType())) {
+            // Views doesn't has PKs in a database, but if the user selects 
some PKs in a model, we put these keys.
+            return null;
+        }
         return tokens;
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/770e3b57/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java
----------------------------------------------------------------------
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java
index 84d7b75..81d90b1 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java
@@ -110,13 +110,18 @@ class DbEntityMerger extends AbstractMerger<DataMap, 
DbEntity> {
         Collection<DbAttribute> primaryKeyNew = original.getPrimaryKeys();
 
         String primaryKeyName = null;
-        if (imported instanceof DetectedDbEntity) {
+        if (imported instanceof DetectedDbEntity){
+            if("VIEW".equals(((DetectedDbEntity) imported).getType())){
+                // Views doesn't has PKs in a database, but if the user 
selects some PKs in a model, we put these keys.
+                return null;
+            }
             primaryKeyName = ((DetectedDbEntity) imported).getPrimaryKeyName();
         }
 
         if 
(upperCaseEntityNames(primaryKeyOriginal).equals(upperCaseEntityNames(primaryKeyNew)))
 {
             return null;
         }
+
         return Collections.singleton(
                 getTokenFactory().createSetPrimaryKeyToDb(
                         original, primaryKeyOriginal, primaryKeyNew, 
primaryKeyName

http://git-wip-us.apache.org/repos/asf/cayenne/blob/770e3b57/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java
----------------------------------------------------------------------
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java
index 9f2afb2..2531a3f 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java
@@ -54,6 +54,7 @@ class EntityLoader extends PerCatalogAndSchemaLoader {
         String name = rs.getString("TABLE_NAME");
         String catalogName = rs.getString("TABLE_CAT");
         String schemaName = rs.getString("TABLE_SCHEM");
+        String type = rs.getString("TABLE_TYPE");
 
         // Oracle 9i and newer has a nifty recycle bin feature...
         // but we don't want dropped tables to be included here;
@@ -74,6 +75,7 @@ class EntityLoader extends PerCatalogAndSchemaLoader {
         DetectedDbEntity table = new DetectedDbEntity(name);
         table.setCatalog(catalogName);
         table.setSchema(schemaName);
+        table.setType(type);
         addDbEntityToMap(table, map);
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/770e3b57/cayenne-server/src/main/java/org/apache/cayenne/map/DetectedDbEntity.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/map/DetectedDbEntity.java 
b/cayenne-server/src/main/java/org/apache/cayenne/map/DetectedDbEntity.java
index 214f561..be95b95 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/DetectedDbEntity.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/DetectedDbEntity.java
@@ -24,11 +24,20 @@ package org.apache.cayenne.map;
 public class DetectedDbEntity extends DbEntity {
 
     protected String primaryKeyName;
+    protected String type;
 
     public DetectedDbEntity(String name) {
         super(name);
     }
 
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getType() {
+        return type;
+    }
+
     /**
      * Sets the optional primary key name of this DbEntity. This is not the 
same as the
      * name of the DbAttribute, but the name of the unique constraint.

http://git-wip-us.apache.org/repos/asf/cayenne/blob/770e3b57/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt 
b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index c5b1c56..db30053 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -30,6 +30,7 @@ CAY-2272 ColumnSelect: methods to manually control DISTINCT 
clause
 
 Bug Fixes:
 
+CAY-2021 cdbimport: detect when same FK constraint is defined twice
 CAY-2077 Bug in CayenneRuntimeException using wrong specified string in 
Formatter
 CAY-2094 SelectById query doesn't work from ROP client
 CAY-2240 Modeler: issue with cursor rendering for EJBQL query
@@ -40,6 +41,7 @@ CAY-2265 ServerRuntime.builder() fails to set default runtime 
name when a the pr
 CAY-2273 Modeler: default suggested cgen location is rooted in subpackage
 CAY-2275 Documentation: tutorial is out of sync with 4.0.M5 version
 CAY-2276 PrePersist listener registered as PostPersist in 
LifecycleCallbackRegistry.addListener(Class<?>, LifecycleListener)
+CAY-2279 cdbimport: skip PK comparison for VIEWs
 
 ----------------------------------
 Release: 4.0.M5

Reply via email to