You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2014/12/11 11:49:48 UTC
[3/9] cayenne git commit: add logging loader delegate
add logging loader delegate
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/e2734bfc
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/e2734bfc
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/e2734bfc
Branch: refs/heads/master
Commit: e2734bfcdb1b0f9a1b4422e84a6dbea4311365c4
Parents: 4e08de8
Author: alexkolonitsky <Al...@gmail.com>
Authored: Tue Dec 9 16:55:47 2014 +0300
Committer: alexkolonitsky <Al...@gmail.com>
Committed: Tue Dec 9 16:55:47 2014 +0300
----------------------------------------------------------------------
.../org/apache/cayenne/access/DbLoader.java | 25 ++++---
.../apache/cayenne/access/DbLoaderDelegate.java | 19 ++++++
.../access/loader/DefaultDbLoaderDelegate.java | 11 +++
.../access/loader/LoggingDbLoaderDelegate.java | 72 ++++++++++++++++++++
.../tools/dbimport/DbImportConfiguration.java | 7 +-
.../dbimport/DbImportDbLoaderDelegate.java | 7 +-
.../modeler/dialog/db/DbLoaderHelper.java | 3 +-
.../apache/cayenne/tools/DbImporterMojo.java | 1 +
8 files changed, 127 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e2734bfc/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
index e1b5a5b..fc8eb2d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoader.java
@@ -33,6 +33,7 @@ import java.util.Set;
import java.util.TreeSet;
import org.apache.cayenne.access.loader.DbLoaderConfiguration;
+import org.apache.cayenne.access.loader.DefaultDbLoaderDelegate;
import org.apache.cayenne.access.loader.ManyToManyCandidateEntity;
import org.apache.cayenne.access.loader.filters.EntityFilters;
import org.apache.cayenne.access.loader.filters.Filter;
@@ -101,7 +102,7 @@ public class DbLoader {
public DbLoader(Connection connection, DbAdapter adapter, DbLoaderDelegate delegate, ObjectNameGenerator strategy) {
this.adapter = adapter;
this.connection = connection;
- this.delegate = delegate;
+ this.delegate = delegate == null ? new DefaultDbLoaderDelegate() : delegate;
setNameGenerator(strategy);
}
@@ -303,10 +304,7 @@ public class DbLoader {
}
map.addDbEntity(dbEntity);
- // notify delegate
- if (delegate != null) {
- delegate.dbEntityAdded(dbEntity);
- }
+ delegate.dbEntityAdded(dbEntity);
// delegate might have thrown this entity out... so check if it is still
// around before continuing processing
@@ -512,7 +510,9 @@ public class DbLoader {
reverseRelationship.setSourceEntity(fkEntity);
reverseRelationship.setTargetEntity(pkEntity);
reverseRelationship.setToMany(false);
- fkEntity.addRelationship(reverseRelationship);
+ if (delegate.dbRelationshipLoaded(fkEntity, reverseRelationship)) {
+ fkEntity.addRelationship(reverseRelationship);
+ }
boolean toPK = createAndAppendJoins(exportedKeys, pkEntity, fkEntity, forwardRelationship, reverseRelationship);
@@ -523,7 +523,9 @@ public class DbLoader {
forwardRelationship.setToMany(!isOneToOne);
forwardRelationship.setName(generateName(pkEntity, key, !isOneToOne));
- pkEntity.addRelationship(forwardRelationship);
+ if (delegate.dbRelationshipLoaded(pkEntity, forwardRelationship)) {
+ pkEntity.addRelationship(forwardRelationship);
+ }
}
}
}
@@ -562,6 +564,10 @@ public class DbLoader {
Map<String, Set<ExportedKey>> keys = new HashMap<String, Set<ExportedKey>>();
for (DbEntity dbEntity : tables.values()) {
+ if (!delegate.dbRelationship(dbEntity)) {
+ continue;
+ }
+
ResultSet rs;
try {
rs = getMetaData().getExportedKeys(dbPath.catalog, dbPath.schema, dbEntity.getName());
@@ -645,10 +651,7 @@ public class DbLoader {
private void fireObjEntitiesAddedEvents(DataMap map) {
for (ObjEntity curEntity : map.getObjEntities()) {
- // notify delegate
- if (delegate != null) {
- delegate.objEntityAdded(curEntity);
- }
+ delegate.objEntityAdded(curEntity);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e2734bfc/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoaderDelegate.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoaderDelegate.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoaderDelegate.java
index c1e457a..f5833d7 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoaderDelegate.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DbLoaderDelegate.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.access;
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
/**
@@ -41,6 +42,24 @@ public interface DbLoaderDelegate {
void dbEntityRemoved(DbEntity entity);
+ /**
+ * Called before relationship loading for db-entity
+ * @param entity
+ *
+ * @return true in case you want process relationships for this entity
+ * false otherwise
+ */
+ boolean dbRelationship(DbEntity entity);
+
+ /**
+ * Called before relationship will be added into db-entity but after it was loaded from db
+ * @param entity
+ *
+ * @return true in case you want add this relationship into entity
+ * false otherwise
+ */
+ boolean dbRelationshipLoaded(DbEntity entity, DbRelationship relationship);
+
void objEntityAdded(ObjEntity entity);
void objEntityRemoved(ObjEntity entity);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e2734bfc/cayenne-server/src/main/java/org/apache/cayenne/access/loader/DefaultDbLoaderDelegate.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/loader/DefaultDbLoaderDelegate.java b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/DefaultDbLoaderDelegate.java
index bc91162..e512e90 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/loader/DefaultDbLoaderDelegate.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/DefaultDbLoaderDelegate.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.access.loader;
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.access.DbLoaderDelegate;
import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
/**
@@ -44,6 +45,16 @@ public class DefaultDbLoaderDelegate implements DbLoaderDelegate {
}
@Override
+ public boolean dbRelationship(DbEntity entity) {
+ return true;
+ }
+
+ @Override
+ public boolean dbRelationshipLoaded(DbEntity entity, DbRelationship relationship) {
+ return true;
+ }
+
+ @Override
public void objEntityAdded(ObjEntity entity) {
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e2734bfc/cayenne-server/src/main/java/org/apache/cayenne/access/loader/LoggingDbLoaderDelegate.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/loader/LoggingDbLoaderDelegate.java b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/LoggingDbLoaderDelegate.java
new file mode 100644
index 0000000..d5e69f4
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/loader/LoggingDbLoaderDelegate.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cayenne.access.loader;
+
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.DbRelationship;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.commons.logging.Log;
+
+/**
+ * @since 4.0
+ */
+public class LoggingDbLoaderDelegate extends DefaultDbLoaderDelegate {
+
+ private final Log logger;
+
+ public LoggingDbLoaderDelegate(Log logger) {
+ this.logger = logger;
+ }
+
+ @Override
+ public void dbEntityAdded(DbEntity entity) {
+ logger.info("Add dbEntity: " + entity.getFullyQualifiedName());
+ }
+
+ @Override
+ public void dbEntityRemoved(DbEntity entity) {
+ logger.info("Del dbEntity: " + entity.getFullyQualifiedName());
+ }
+
+ @Override
+ public boolean dbRelationship(DbEntity entity) {
+ logger.info(" Relationships for " + entity.getFullyQualifiedName());
+
+ return true;
+ }
+
+ @Override
+ public boolean dbRelationshipLoaded(DbEntity entity, DbRelationship relationship) {
+ if (logger.isDebugEnabled()) {
+ logger.debug(" Relationship : " + entity.getName() + "; " + relationship.toString());
+ }
+
+ return true;
+ }
+
+ @Override
+ public void objEntityAdded(ObjEntity entity) {
+ logger.info("Add objEntity: " + entity.getName());
+ }
+
+ @Override
+ public void objEntityRemoved(ObjEntity entity) {
+ logger.info("Del objEntity: " + entity.getName());
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e2734bfc/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
index 35fba65..dff86ae 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
@@ -23,6 +23,7 @@ import org.apache.cayenne.access.DbLoader;
import org.apache.cayenne.access.loader.DbLoaderConfiguration;
import org.apache.cayenne.access.DbLoaderDelegate;
import org.apache.cayenne.access.loader.DefaultDbLoaderDelegate;
+import org.apache.cayenne.access.loader.LoggingDbLoaderDelegate;
import org.apache.cayenne.access.loader.NameFilter;
import org.apache.cayenne.access.loader.filters.DbPath;
import org.apache.cayenne.access.loader.filters.FiltersConfig;
@@ -292,7 +293,11 @@ public class DbImportConfiguration {
}
public DbLoaderDelegate createLoaderDelegate() {
- return new DefaultDbLoaderDelegate();
+ if (getLogger() != null) {
+ return new LoggingDbLoaderDelegate(getLogger());
+ } else {
+ return new DefaultDbLoaderDelegate();
+ }
}
public DbLoaderConfiguration getDbLoaderConfig() {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e2734bfc/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegate.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegate.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegate.java
index af1bf26..99f9bc8 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegate.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportDbLoaderDelegate.java
@@ -25,13 +25,14 @@ import java.util.List;
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.access.DbLoaderDelegate;
+import org.apache.cayenne.access.loader.DefaultDbLoaderDelegate;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
/**
* @since 4.0
*/
-class DbImportDbLoaderDelegate implements DbLoaderDelegate {
+class DbImportDbLoaderDelegate extends DefaultDbLoaderDelegate {
private final List<DbEntity> addedDbEntities;
private final List<DbEntity> removedDbEntities;
@@ -45,10 +46,6 @@ class DbImportDbLoaderDelegate implements DbLoaderDelegate {
removedObjEntities = new ArrayList<ObjEntity>();
}
- public boolean overwriteDbEntity(DbEntity ent) throws CayenneException {
- return false;
- }
-
public void dbEntityAdded(DbEntity ent) {
ent.getDataMap().addDbEntity(ent);
addedDbEntities.add(ent);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e2734bfc/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
index 64fc8c6..d9e01d1 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
@@ -35,6 +35,7 @@ import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DbLoader;
import org.apache.cayenne.access.DbLoaderDelegate;
import org.apache.cayenne.access.loader.DbLoaderConfiguration;
+import org.apache.cayenne.access.loader.DefaultDbLoaderDelegate;
import org.apache.cayenne.access.loader.filters.EntityFilters;
import org.apache.cayenne.access.loader.filters.FilterFactory;
import org.apache.cayenne.access.loader.filters.FiltersConfig;
@@ -212,7 +213,7 @@ public class DbLoaderHelper {
}
}
- final class LoaderDelegate implements DbLoaderDelegate {
+ private final class LoaderDelegate extends DefaultDbLoaderDelegate {
public boolean overwriteDbEntity(DbEntity ent) throws CayenneException {
checkCanceled();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e2734bfc/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java b/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
index 4fcf401..cf5b59d 100644
--- a/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
+++ b/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
@@ -242,6 +242,7 @@ public class DbImporterMojo extends AbstractMojo {
Log logger = new MavenLogger(this);
DbImportConfiguration config = toParameters();
+ config.setLogger(logger);
Injector injector = DIBootstrap.createInjector(new ToolsModule(logger), new DbImportModule());
try {