Hi Sanford,

Your Migration class needs to implement IERXPostMigration in order for that method to get called, I believe.

According to the Package Description for Migrations:
http://webobjects.mdimension.com/wonder/api/index.html?overview-summary.html
<snip>

To perform a "post op", your migration can implement IERXPostMigration instead of IERXMigration, and this adds the additional method:

public void postUpgrade(EOEditingContext editingContext, EOModel model) throws Throwable; So as migrations are running in dependency order, ERXMigrator keeps track of "Post Migrations", which will themselves execute in dependency order, but only after a completely successful model migration. So by the time IERXPostMigrations begin to run, all of your EOModels will match the database tables. postUpgrades also each run in a transaction. editingContext.saveChanges() will be called for you after postUpgrade is done.

</snip>

Dave


On Apr 10, 2009, at 4:01 PM, Sanford Selznick wrote:

Hello,

 I'm experimenting with Migrations.  I'm a little new to all this.

What's the proper way to implement postUpgrade? Below is a snippet of what I've got, but postUpgrade is never called. I don't see an ERXMigrationDatabase.PostMigration class. And I don't really want to duplicate what's in ERXMigrationDatabase.Migration.

public class CCLimsModel0 extends ERXMigrationDatabase.Migration {
 ...

 @Override
 public void upgrade(EOEditingContext editingContext,
ERXMigrationDatabase database) throws Throwable {
   ERXMigrationTable accessTable = database.newTableNamed("Access");
   accessTable.newIntegerColumn("id", false);
   accessTable.newStringColumn("password", 255, false);
   accessTable.newStringColumn("username", 255, false);
   accessTable.create();
   accessTable.setPrimaryKey("id");
 }

 public void postUpgrade(EOEditingContext editingContext,
                       EOModel model) throws Throwable {

   // Add a record after migrations are done.
   Access a = new Access();
   editingContext.insertObject(a);
   a.setUsername("thing1");
   a.setPassword("thing2");
   editingContext.saveChanges();

 }

}

Thank you,
 Sanford

PS - Wouldn't it be cool if the migration generator in Entity Modeler would use the string constants from the model for table and column names instead of in-line strings? :-)
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40avendasora.com

This email sent to [email protected]



_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to