You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by km...@apache.org on 2009/04/13 04:04:33 UTC
svn commit: r764350 -
/cayenne/main/trunk/framework/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
Author: kmenard
Date: Mon Apr 13 02:04:32 2009
New Revision: 764350
URL: http://svn.apache.org/viewvc?rev=764350&view=rev
Log:
CAY-1029: maven2 plugin to reverse engineer database
Configure overwriting existing entities and added update delete rules feature.
Modified:
cayenne/main/trunk/framework/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
Modified: cayenne/main/trunk/framework/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java?rev=764350&r1=764349&r2=764350&view=diff
==============================================================================
--- cayenne/main/trunk/framework/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java (original)
+++ cayenne/main/trunk/framework/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java Mon Apr 13 02:04:32 2009
@@ -12,6 +12,7 @@
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.JdbcAdapter;
import org.apache.cayenne.util.Util;
+import org.apache.cayenne.util.DeleteRuleUpdater;
import org.apache.cayenne.conn.DriverDataSource;
import org.apache.cayenne.CayenneException;
import org.apache.commons.logging.Log;
@@ -20,6 +21,8 @@
import java.io.File;
import java.io.PrintWriter;
import java.sql.Driver;
+import java.util.List;
+import java.util.ArrayList;
/**
* Maven mojo to reverse engineer datamap from DB.
@@ -40,6 +43,15 @@
private String map;
/**
+ * Indicates whether existing DB and object entities should be overwritten.
+ * This is an all-or-nothing setting. If you need finer granularity, please
+ * use the Cayenne Modeler.
+ *
+ * @parameter expression="${cdbimport.overwriteExisting}" default-value="true"
+ */
+ private boolean overwriteExisting;
+
+ /**
* DB schema to use for DB importing.
*
* @parameter expression="${cdbimport.schemaName}"
@@ -112,10 +124,18 @@
*/
private String password;
-
+ /**
+ * Maven logger.
+ */
private Log logger;
+
+ /**
+ * The DataMap file to use for importing.
+ */
private File mapFile;
+ private List<ObjEntity> addedObjEntities = new ArrayList<ObjEntity>();
+
public void execute() throws MojoExecutionException, MojoFailureException {
logger = new MavenLogger(this);
@@ -139,6 +159,10 @@
final DataMap dataMap = mapFile.exists() ? loadDataMap() : new DataMap();
loader.loadDataMapFromDB(schemaName, tablePattern, dataMap);
+ for (ObjEntity addedObjEntity : addedObjEntities) {
+ DeleteRuleUpdater.updateObjEntity(addedObjEntity);
+ }
+
if (importProcedures) {
loader.loadProceduresFromDB(schemaName, procedurePattern, dataMap);
}
@@ -165,7 +189,7 @@
final class LoaderDelegate implements DbLoaderDelegate {
public boolean overwriteDbEntity(final DbEntity ent) throws CayenneException {
- return true;
+ return overwriteExisting;
}
public void dbEntityAdded(final DbEntity ent) {
@@ -180,6 +204,7 @@
public void objEntityAdded(final ObjEntity ent) {
logger.info("Added obj entity: " + ent.getName());
+ addedObjEntities.add(ent);
ent.getDataMap().addObjEntity(ent);
}