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 2017/02/02 11:31:17 UTC

cayenne git commit: cleanup

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 <st...@gmail.com>
Authored: Thu Feb 2 14:27:16 2017 +0300
Committer: Nikita Timofeev <st...@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);
     }