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);
}