You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by to...@apache.org on 2008/04/16 23:23:21 UTC
svn commit: r648858 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne:
access/DbLoader.java merge/DbMerger.java
Author: torehalset
Date: Wed Apr 16 14:23:17 2008
New Revision: 648858
URL: http://svn.apache.org/viewvc?rev=648858&view=rev
Log:
CAY-981: merge: faster junit tests
This fix improves speed on PostgreSQL and Derby by limiting the number of tables that are tested by the junit tests. I have not tested on Oracle and MySQL.
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DbLoader.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/merge/DbMerger.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DbLoader.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DbLoader.java?rev=648858&r1=648857&r2=648858&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DbLoader.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DbLoader.java Wed Apr 16 14:23:17 2008
@@ -164,6 +164,14 @@
public DbAdapter getAdapter() {
return adapter;
}
+
+ /**
+ * A method that return true if the given table name should be included. The default
+ * implemntation include all tables.
+ */
+ public boolean includeTableName(String tableName) {
+ return true;
+ }
/**
* Retrieves catalogues for the database associated with this DbLoader.
@@ -284,6 +292,10 @@
if (name == null || name.startsWith("BIN$")) {
continue;
}
+
+ if (!includeTableName(name)) {
+ continue;
+ }
DbEntity table = new DbEntity(name);
table.setCatalog(catalog);
@@ -560,7 +572,11 @@
// start new entity
String fkEntityName = rs.getString("FKTABLE_NAME");
String fkName = rs.getString("FK_NAME");
-
+
+ if (!includeTableName(fkEntityName)) {
+ continue;
+ }
+
fkEntity = map.getDbEntity(fkEntityName);
if (fkEntity == null) {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/merge/DbMerger.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/merge/DbMerger.java?rev=648858&r1=648857&r2=648858&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/merge/DbMerger.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/merge/DbMerger.java Wed Apr 16 14:23:17 2008
@@ -53,8 +53,12 @@
public class DbMerger {
private MergerFactory factory;
-
- public boolean includeTableName(String tableName){
+
+ /**
+ * A method that return true if the given table name should be included. The default
+ * implemntation include all tables.
+ */
+ public boolean includeTableName(String tableName) {
return true;
}
@@ -82,7 +86,15 @@
try {
conn = dataSource.getConnection();
- DbLoader dbLoader = new DbLoader(conn, adapter, new LoaderDelegate());
+ final DbMerger merger = this;
+ DbLoader dbLoader = new DbLoader(conn, adapter, new LoaderDelegate()) {
+
+ @Override
+ public boolean includeTableName(String tableName) {
+ return merger.includeTableName(tableName);
+ }
+ };
+
DataMap detectedDataMap = dbLoader.loadDataMapFromDB(
null,
null,
@@ -94,7 +106,7 @@
for (DbEntity dbEntity : dataMap.getDbEntities()) {
String tableName = dbEntity.getName();
- if(!includeTableName(tableName)){
+ if (!includeTableName(tableName)) {
continue;
}
@@ -119,7 +131,7 @@
// TODO: support drop table. currently, too many tables are marked for drop
for (DbEntity e : dbEntityToDropByName.values()) {
- if(!includeTableName(e.getName())){
+ if (!includeTableName(e.getName())) {
continue;
}
@@ -258,6 +270,11 @@
// relationships to add
for (DbRelationship rel : dbEntity.getRelationships()) {
+
+ if (!includeTableName(rel.getTargetEntityName())) {
+ continue;
+ }
+
if (findDbRelationship(detectedEntity, rel) == null) {
// TODO: very ugly. perhaps MergerToken should have a .isNoOp()?
AbstractToDbToken t = (AbstractToDbToken) factory