Repository: cayenne
Updated Branches:
  refs/heads/master 4920e53c1 -> 67282fb6d


cleanup


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

Branch: refs/heads/master
Commit: 67282fb6d79e18267021d718a467f7ba22938ae2
Parents: 4920e53
Author: Nikita Timofeev <stari...@gmail.com>
Authored: Thu Feb 2 14:27:16 2017 +0300
Committer: Nikita Timofeev <stari...@gmail.com>
Committed: Thu Feb 2 14:27:16 2017 +0300

----------------------------------------------------------------------
 .../merge/context/EntityMergeSupport.java       | 90 +++++++-------------
 .../merge/token/db/AbstractToDbToken.java       |  5 +-
 .../reverse/dbimport/DefaultDbImportAction.java | 42 +++------
 .../org/apache/cayenne/dba/TypesMapping.java    |  4 +-
 .../org/apache/cayenne/dba/TypesMappingIT.java  | 21 +----
 .../action/ReverseEngineeringAction.java        |  9 +-
 .../dialog/db/load/ModelerDbImportAction.java   |  3 +-
 7 files changed, 54 insertions(+), 120 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/67282fb6/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
----------------------------------------------------------------------
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
index ef6c3f3..7f86dd2 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
@@ -245,8 +245,7 @@ public class EntityMergeSupport {
             }
 
             if (dbRelationship.getTargetEntityName() != null) {
-                boolean needGeneratedEntity = createObjRelationship(entity, 
dbRelationship,
-                        nameGenerator.objEntityName(targetEntity));
+                boolean needGeneratedEntity = createObjRelationship(entity, 
dbRelationship, nameGenerator.objEntityName(targetEntity));
                 if (needGeneratedEntity) {
                     LOGGER.warn("Can't find ObjEntity for " + 
dbRelationship.getTargetEntityName());
                     LOGGER.warn("Db Relationship (" + dbRelationship + ") will 
have GUESSED Obj Relationship reflection. ");
@@ -261,24 +260,23 @@ public class EntityMergeSupport {
 
     private void addMissingAttribute(ObjEntity entity, DbAttribute da) {
         ObjAttribute oa = new ObjAttribute();
-        oa.setName(NameBuilder.builder(oa, entity)
-                .baseName(nameGenerator.objAttributeName(da))
-                .name());
+        oa.setName(NameBuilder.builder(oa, 
entity).baseName(nameGenerator.objAttributeName(da)).name());
         oa.setEntity(entity);
-
-        String type = TypesMapping.getJavaBySqlType(da.getType());
-        if (usingPrimitives) {
-            String primitive = CLASS_TO_PRIMITIVE.get(type);
-            if (primitive != null) {
-                type = primitive;
-            }
-        }
-        oa.setType(type);
+        oa.setType(getTypeForObjAttribute(da));
         oa.setDbAttributePath(da.getName());
         entity.addAttribute(oa);
         fireAttributeAdded(oa);
     }
 
+    private String getTypeForObjAttribute(DbAttribute dbAttribute) {
+        String type = TypesMapping.getJavaBySqlType(dbAttribute.getType());
+        String primitiveType;
+        if (usingPrimitives && (primitiveType = CLASS_TO_PRIMITIVE.get(type)) 
!= null) {
+            return primitiveType;
+        }
+        return type;
+    }
+
     private boolean 
getRidOfAttributesThatAreNowSrcAttributesForRelationships(ObjEntity entity) {
         boolean changed = false;
         for (DbAttribute da : getMeaningfulFKs(entity)) {
@@ -317,14 +315,13 @@ public class EntityMergeSupport {
      * Returns a list of attributes that exist in the DbEntity, but are missing
      * from the ObjEntity.
      */
-    protected List<DbAttribute> getAttributesToAdd(ObjEntity objEntity) {
+    private List<DbAttribute> getAttributesToAdd(ObjEntity objEntity) {
         DbEntity dbEntity = objEntity.getDbEntity();
 
         List<DbAttribute> missing = new ArrayList<>();
         Collection<DbRelationship> incomingRels = 
getIncomingRelationships(dbEntity);
 
         for (DbAttribute dba : dbEntity.getAttributes()) {
-
             if (shouldAddToObjEntity(objEntity, dba, incomingRels)) {
                 missing.add(dba);
             }
@@ -333,64 +330,35 @@ public class EntityMergeSupport {
         return missing;
     }
 
-    protected boolean shouldAddToObjEntity(ObjEntity entity, DbAttribute 
dbAttribute, Collection<DbRelationship> incomingRels) {
-
+    private boolean shouldAddToObjEntity(ObjEntity entity, DbAttribute 
dbAttribute, Collection<DbRelationship> incomingRels) {
         if (dbAttribute.getName() == null || 
entity.getAttributeForDbAttribute(dbAttribute) != null) {
             return false;
         }
 
         boolean addMeaningfulPK = 
meaningfulPKsFilter.isIncluded(entity.getDbEntityName());
-
-        if (dbAttribute.isPrimaryKey() && !addMeaningfulPK) {
-            return false;
+        if (dbAttribute.isPrimaryKey()) {
+            return addMeaningfulPK;
         }
 
         // check FK's
-        boolean isFK = false;
-        Iterator<DbRelationship> rit = 
dbAttribute.getEntity().getRelationships().iterator();
-        while (!isFK && rit.hasNext()) {
-            DbRelationship rel = rit.next();
-            for (DbJoin join : rel.getJoins()) {
-                if (join.getSource() == dbAttribute) {
-                    isFK = true;
-                    break;
-                }
-            }
-        }
-
-        if (addMeaningfulPK) {
-            if (!dbAttribute.isPrimaryKey() && isFK) {
-                return false;
-            }
-        } else {
-            if (isFK) {
-                return false;
-            }
+        if(isFK(dbAttribute, dbAttribute.getEntity().getRelationships(), 
true)) {
+            return false;
         }
-
         // check incoming relationships
-        rit = incomingRels.iterator();
-        while (!isFK && rit.hasNext()) {
-            DbRelationship rel = rit.next();
+        return !isFK(dbAttribute, incomingRels, false);
+    }
+
+    private boolean isFK(DbAttribute dbAttribute, Collection<DbRelationship> 
collection, boolean source) {
+        for (DbRelationship rel : collection) {
             for (DbJoin join : rel.getJoins()) {
-                if (join.getTarget() == dbAttribute) {
-                    isFK = true;
-                    break;
+                DbAttribute joinAttribute = source ? join.getSource() : 
join.getTarget();
+                if (joinAttribute == dbAttribute) {
+                    return true;
                 }
             }
         }
 
-        if (addMeaningfulPK) {
-            if (!dbAttribute.isPrimaryKey() && isFK) {
-                return false;
-            }
-        } else {
-            if (isFK) {
-                return false;
-            }
-        }
-
-        return true;
+        return false;
     }
 
     private boolean shouldAddToObjEntity(ObjEntity entity, DbRelationship 
dbRelationship) {
@@ -502,7 +470,7 @@ public class EntityMergeSupport {
     /**
      * Notifies all listeners that an ObjAttribute was added
      */
-    protected void fireAttributeAdded(ObjAttribute attr) {
+    private void fireAttributeAdded(ObjAttribute attr) {
         for (EntityMergeListener listener : listeners) {
             listener.objAttributeAdded(attr);
         }
@@ -511,7 +479,7 @@ public class EntityMergeSupport {
     /**
      * Notifies all listeners that an ObjRelationship was added
      */
-    protected void fireRelationshipAdded(ObjRelationship rel) {
+    private void fireRelationshipAdded(ObjRelationship rel) {
         for (EntityMergeListener listener : listeners) {
             listener.objRelationshipAdded(rel);
         }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/67282fb6/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/db/AbstractToDbToken.java
----------------------------------------------------------------------
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/db/AbstractToDbToken.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/db/AbstractToDbToken.java
index 8370a9d..d336198 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/db/AbstractToDbToken.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/db/AbstractToDbToken.java
@@ -55,9 +55,8 @@ public abstract class AbstractToDbToken extends 
AbstractMergerToken {
                JdbcEventLogger logger = 
mergerContext.getDataNode().getJdbcEventLogger();
                logger.log(sql);
 
-               try (Connection conn = 
mergerContext.getDataNode().getDataSource().getConnection();) {
-
-                       try (Statement st = conn.createStatement();) {
+               try (Connection conn = 
mergerContext.getDataNode().getDataSource().getConnection()) {
+                       try (Statement st = conn.createStatement()) {
                                st.execute(sql);
                        }
                } catch (SQLException e) {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/67282fb6/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
----------------------------------------------------------------------
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
index 3278dc4..c7f9ceb 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
@@ -137,7 +137,6 @@ public class DefaultDbImportAction implements 
DbImportAction {
         DataNodeDescriptor dataNodeDescriptor = 
config.createDataNodeDescriptor();
         DataSource dataSource = 
dataSourceFactory.getDataSource(dataNodeDescriptor);
         DbAdapter adapter = adapterFactory.createAdapter(dataNodeDescriptor, 
dataSource);
-        ObjectNameGenerator objectNameGenerator = config.createNameGenerator();
 
         DataMap sourceDataMap;
         try (Connection connection = dataSource.getConnection()) {
@@ -162,20 +161,16 @@ public class DefaultDbImportAction implements 
DbImportAction {
         MergerTokenFactory mergerTokenFactory = 
mergerTokenFactoryProvider.get(adapter);
 
         DbLoaderConfiguration loaderConfig = config.getDbLoaderConfig();
-        List<MergerToken> tokens = DataMapMerger.builder(mergerTokenFactory)
+        Collection<MergerToken> tokens = 
DataMapMerger.builder(mergerTokenFactory)
                 .filters(loaderConfig.getFiltersConfig())
                 .skipPKTokens(loaderConfig.isSkipPrimaryKeyLoading())
                 
.skipRelationshipsTokens(loaderConfig.isSkipRelationshipsLoading())
                 .build()
                 .createMergeTokens(targetDataMap, sourceDataMap);
+        tokens = log(sort(reverse(mergerTokenFactory, tokens)));
 
         hasChanges |= syncDataMapProperties(targetDataMap, config);
-        hasChanges |= applyTokens(config.createMergeDelegate(),
-                targetDataMap,
-                log(sort(reverse(mergerTokenFactory, tokens))),
-                objectNameGenerator,
-                config.createMeaningfulPKFilter(),
-                config.isUsePrimitives());
+        hasChanges |= applyTokens(targetDataMap, tokens, config);
         hasChanges |= syncProcedures(targetDataMap, sourceDataMap, 
loaderConfig.getFiltersConfig());
 
         if (hasChanges) {
@@ -183,11 +178,7 @@ public class DefaultDbImportAction implements 
DbImportAction {
         }
     }
 
-
-    protected void transformSourceBeforeMerge(DataMap sourceDataMap,
-                                              DataMap targetDataMap,
-                                              DbImportConfiguration 
configuration) {
-
+    protected void transformSourceBeforeMerge(DataMap sourceDataMap, DataMap 
targetDataMap, DbImportConfiguration configuration) {
         if (configuration.isForceDataMapCatalog()) {
             String catalog = targetDataMap.getDefaultCatalog();
             for (DbEntity e : sourceDataMap.getDbEntities()) {
@@ -201,11 +192,9 @@ public class DefaultDbImportAction implements 
DbImportAction {
                 e.setSchema(schema);
             }
         }
-
     }
 
     private boolean syncDataMapProperties(DataMap targetDataMap, 
DbImportConfiguration config) {
-
         String defaultPackage = config.getDefaultPackage();
         if (defaultPackage == null || defaultPackage.trim().length() == 0) {
             return false;
@@ -314,12 +303,7 @@ public class DefaultDbImportAction implements 
DbImportAction {
         return tokens;
     }
 
-    private boolean applyTokens(ModelMergeDelegate mergeDelegate,
-                                DataMap targetDataMap,
-                                Collection<MergerToken> tokens,
-                                ObjectNameGenerator nameGenerator,
-                                NameFilter meaningfulPKFilter,
-                                boolean usingPrimitives) {
+    private boolean applyTokens(DataMap targetDataMap, Collection<MergerToken> 
tokens, DbImportConfiguration config) {
 
         if (tokens.isEmpty()) {
             logger.info("");
@@ -328,8 +312,7 @@ public class DefaultDbImportAction implements 
DbImportAction {
         }
 
         final Collection<ObjEntity> loadedObjEntities = new LinkedList<>();
-
-        mergeDelegate = new ProxyModelMergeDelegate(mergeDelegate) {
+        ModelMergeDelegate mergeDelegate = new 
ProxyModelMergeDelegate(config.createMergeDelegate()) {
             @Override
             public void objEntityAdded(ObjEntity ent) {
                 loadedObjEntities.add(ent);
@@ -337,11 +320,12 @@ public class DefaultDbImportAction implements 
DbImportAction {
             }
         };
 
+        ObjectNameGenerator nameGenerator = config.createNameGenerator();
         MergerContext mergerContext = MergerContext.builder(targetDataMap)
                 .delegate(mergeDelegate)
                 .nameGenerator(nameGenerator)
-                .usingPrimitives(usingPrimitives)
-                .meaningfulPKFilter(meaningfulPKFilter)
+                .usingPrimitives(config.isUsePrimitives())
+                .meaningfulPKFilter(config.createMeaningfulPKFilter())
                 .build();
 
         for (MergerToken token : tokens) {
@@ -405,15 +389,11 @@ public class DefaultDbImportAction implements 
DbImportAction {
         projectSaver.save(project);
     }
 
-    protected DataMap load(DbImportConfiguration config,
-                           DbAdapter adapter,
-                           Connection connection) throws Exception {
+    protected DataMap load(DbImportConfiguration config, DbAdapter adapter, 
Connection connection) throws Exception {
         return createDbLoader(adapter, connection, config).load();
     }
 
-    protected DbLoader createDbLoader(DbAdapter adapter,
-                                       Connection connection,
-                                       DbImportConfiguration config) {
+    protected DbLoader createDbLoader(DbAdapter adapter, Connection 
connection, DbImportConfiguration config) {
         return new DbLoader(adapter, connection,
                 config.getDbLoaderConfig(),
                 config.createLoaderDelegate(),

http://git-wip-us.apache.org/repos/asf/cayenne/blob/67282fb6/cayenne-server/src/main/java/org/apache/cayenne/dba/TypesMapping.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/dba/TypesMapping.java 
b/cayenne-server/src/main/java/org/apache/cayenne/dba/TypesMapping.java
index 30e7aa8..8e7c05d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/TypesMapping.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/TypesMapping.java
@@ -511,12 +511,12 @@ public class TypesMapping {
                return SQL_ENUM_JAVA.get(type);
        }
 
-       protected Map<Integer, List<TypeInfo>> databaseTypes = new HashMap<>();
+       Map<Integer, List<TypeInfo>> databaseTypes = new HashMap<>();
 
        public TypesMapping(DatabaseMetaData metaData) throws SQLException {
                // map database types to standard JDBC types
 
-               try (ResultSet rs = metaData.getTypeInfo();) {
+               try (ResultSet rs = metaData.getTypeInfo()) {
                        while (rs.next()) {
                                TypeInfo info = new TypeInfo();
                                info.name = rs.getString("TYPE_NAME");

http://git-wip-us.apache.org/repos/asf/cayenne/blob/67282fb6/cayenne-server/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java 
b/cayenne-server/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
index 0f3b36b..d823c42 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
@@ -104,22 +104,14 @@ public class TypesMappingIT extends ServerCase {
     public void testTypeInfoCompleteness() throws Exception {
         // check counts
         // since more then 1 database type can map to a single JDBC type
-        Connection conn = 
dataSourceFactory.getSharedDataSource().getConnection();
         int len = 0;
-        try {
+        try (Connection conn = 
dataSourceFactory.getSharedDataSource().getConnection()) {
             DatabaseMetaData md = conn.getMetaData();
-            ResultSet rs = md.getTypeInfo();
-            try {
+            try (ResultSet rs = md.getTypeInfo()) {
                 while (rs.next()) {
                     len++;
                 }
             }
-            finally {
-                rs.close();
-            }
-        }
-        finally {
-            conn.close();
         }
 
         int actualLen = 0;
@@ -135,15 +127,10 @@ public class TypesMappingIT extends ServerCase {
         assertTrue(len <= actualLen);
     }
 
-    TypesMapping createTypesMapping() throws Exception {
-        Connection conn = 
dataSourceFactory.getSharedDataSource().getConnection();
-
-        try {
+    private TypesMapping createTypesMapping() throws Exception {
+        try (Connection conn = 
dataSourceFactory.getSharedDataSource().getConnection()) {
             DatabaseMetaData md = conn.getMetaData();
             return new TypesMapping(md);
         }
-        finally {
-            conn.close();
-        }
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/67282fb6/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
index de1c75e..accb8ae 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
@@ -63,6 +63,9 @@ public class ReverseEngineeringAction extends 
DBWizardAction<DbLoaderOptionsDial
 
         final DbLoaderOptionsDialog loaderOptionsDialog = 
loaderOptionDialog(connectWizard);
         if(!context.buildConfig(connectWizard, loaderOptionsDialog)) {
+            try {
+                context.getConnection().close();
+            } catch (SQLException ignored) {}
             return;
         }
 
@@ -72,14 +75,12 @@ public class ReverseEngineeringAction extends 
DBWizardAction<DbLoaderOptionsDial
                 application.getUndoManager().discardAllEdits();
                 try {
                     context.getConnection().close();
-                } catch (SQLException ignored) {
-                }
+                } catch (SQLException ignored) {}
             }
         });
     }
 
-    private void runLoaderInThread(final DbLoaderContext context,
-                                   final Runnable callback) {
+    private void runLoaderInThread(final DbLoaderContext context, final 
Runnable callback) {
         Thread th = new Thread(new Runnable() {
             public void run() {
                 LoadDataMapTask task = new 
LoadDataMapTask(Application.getFrame(), "Reengineering DB", context);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/67282fb6/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/ModelerDbImportAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/ModelerDbImportAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/ModelerDbImportAction.java
index bf74a0c..64b33e3 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/ModelerDbImportAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/load/ModelerDbImportAction.java
@@ -41,8 +41,7 @@ public class ModelerDbImportAction extends 
DefaultDbImportAction {
                                  @Inject DataSourceFactory dataSourceFactory,
                                  @Inject DbAdapterFactory adapterFactory,
                                  @Inject MapLoader mapLoader,
-                                 @Inject MergerTokenFactoryProvider 
mergerTokenFactoryProvider
-                                 ) {
+                                 @Inject MergerTokenFactoryProvider 
mergerTokenFactoryProvider) {
         super(logger, projectSaver, dataSourceFactory, adapterFactory, 
mapLoader, mergerTokenFactoryProvider);
     }
 

Reply via email to