package com.secretpal.migrations; import com.secretpal.model.SPEvent; import com.secretpal.model.SPGroup; import com.secretpal.model.SPMembership; import com.secretpal.model.SPPerson; import com.secretpal.model.SPSecretPal; import com.secretpal.model.SPWish; import com.webobjects.eoaccess.EOModel; import com.webobjects.eocontrol.EOEditingContext; import com.webobjects.foundation.NSArray; import er.extensions.migration.ERXMigrationDatabase; import er.extensions.migration.ERXMigrationTable; import er.extensions.migration.ERXModelVersion; import er.extensions.migration.IERXPostMigration; public class SecretPal0 extends ERXMigrationDatabase.Migration implements IERXPostMigration { @Override public NSArray<ERXModelVersion> modelDependencies() { return null; } @Override public void downgrade(EOEditingContext editingContext, ERXMigrationDatabase database) throws Throwable { // DO NOTHING } @Override public void upgrade(EOEditingContext editingContext, ERXMigrationDatabase database) throws Throwable { ERXMigrationTable sPGroupTable = database.newTableNamed("SPGroup"); sPGroupTable.newStringColumn("description", 1000, true); sPGroupTable.newStringColumn("groupPassword", 100, true); sPGroupTable.newIntegerColumn("id", false); sPGroupTable.newStringColumn("name", 255, false); sPGroupTable.newIntegerColumn("ownerID", false); sPGroupTable.create(); sPGroupTable.setPrimaryKey("id"); ERXMigrationTable sPPersonTable = database.newTableNamed("SPPerson"); sPPersonTable.newBooleanColumn("admin", false); sPPersonTable.newIntegerColumn("avatarID", true); sPPersonTable.newStringColumn("emailAddress", 255, false); sPPersonTable.newBooleanColumn("emailDeliveryFailure", false); sPPersonTable.newIntegerColumn("id", false); sPPersonTable.newStringColumn("name", 255, false); sPPersonTable.newStringColumn("password", 100, true); sPPersonTable.create(); sPPersonTable.setPrimaryKey("id"); ERXMigrationTable sPSecretPalTable = database.newTableNamed("SPSecretPal"); sPSecretPalTable.newIntegerColumn("eventID", false); sPSecretPalTable.newIntegerColumn("giverID", false); sPSecretPalTable.newIntegerColumn("id", false); sPSecretPalTable.newIntegerColumn("receiverID", false); sPSecretPalTable.create(); sPSecretPalTable.setPrimaryKey("id"); ERXMigrationTable sPWishTable = database.newTableNamed("SPWish"); sPWishTable.newBigDecimalColumn("cost", 38, 4, true); sPWishTable.newStringColumn("description", 1000, true); sPWishTable.newIntegerColumn("id", false); sPWishTable.newBooleanColumn("purchased", false); sPWishTable.newIntegerColumn("suggestedByID", false); sPWishTable.newIntegerColumn("suggestedForID", false); sPWishTable.create(); sPWishTable.setPrimaryKey("id"); ERXMigrationTable sPMembershipTable = database.newTableNamed("SPMembership"); sPMembershipTable.newBooleanColumn("admin", false); sPMembershipTable.newIntegerColumn("groupID", false); sPMembershipTable.newIntegerColumn("personID", false); sPMembershipTable.newStringColumn("confirmationCode", 100, true); sPMembershipTable.newBooleanColumn("confirmed", false); sPMembershipTable.create(); sPMembershipTable.setPrimaryKey("groupID", "personID"); ERXMigrationTable sPEventTable = database.newTableNamed("SPEvent"); sPEventTable.newBooleanColumn("active", false); sPEventTable.newStringColumn("description", 1000, true); sPEventTable.newIntegerColumn("groupID", false); sPEventTable.newIntegerColumn("id", false); sPEventTable.newStringColumn("name", 255, false); sPEventTable.create(); sPEventTable.setPrimaryKey("id"); sPGroupTable.addForeignKey("ownerID", "SPPerson", "id"); sPPersonTable.addForeignKey("avatarID", "ERAttachment", "id"); sPSecretPalTable.addForeignKey("eventID", "SPEvent", "id"); sPSecretPalTable.addForeignKey("giverID", "SPPerson", "id"); sPSecretPalTable.addForeignKey("receiverID", "SPPerson", "id"); sPWishTable.addForeignKey("suggestedByID", "SPPerson", "id"); sPWishTable.addForeignKey("suggestedForID", "SPPerson", "id"); sPMembershipTable.addForeignKey("groupID", "SPGroup", "id"); sPMembershipTable.addForeignKey("personID", "SPPerson", "id"); sPEventTable.addForeignKey("groupID", "SPGroup", "id"); sPPersonTable.addUniqueIndex("uniqueEmailAddress", "emailAddress"); sPSecretPalTable.addUniqueIndex("uniqueSecretPal", sPSecretPalTable.existingColumnNamed("eventID"), sPSecretPalTable.existingColumnNamed("giverID"), sPSecretPalTable.existingColumnNamed("receiverID")); } public void postUpgrade(EOEditingContext editingContext, EOModel model) throws Throwable { SPPerson admin = SPPerson.createSPPerson(editingContext, Boolean.TRUE, "admin@secretpal.com", Boolean.FALSE, "John Administrator"); admin.setPlainTextPassword("adminadmin"); SPPerson gary = SPPerson.createSPPerson(editingContext, Boolean.FALSE, "test1@secretpal.com", Boolean.FALSE, "Robert Test"); gary.setPlainTextPassword("test1"); SPPerson mary = SPPerson.createSPPerson(editingContext, Boolean.FALSE, "test2@secretpal.com", Boolean.FALSE, "Mary Example"); mary.setPassword(null); SPGroup testGroup = SPGroup.createSPGroup(editingContext, "The Example Crew", admin); testGroup.setDescription("This is the example group for testing Secret Pal."); SPMembership.createSPMembership(editingContext, Boolean.TRUE, Boolean.TRUE, testGroup, admin); SPMembership.createSPMembership(editingContext, Boolean.FALSE, Boolean.TRUE, testGroup, gary); SPMembership.createSPMembership(editingContext, Boolean.FALSE, Boolean.FALSE, testGroup, mary); SPEvent testEvent = SPEvent.createSPEvent(editingContext, Boolean.TRUE, "Christmas 2010", testGroup); testEvent.setDescription("It's christmas time! Get your secret pal something nice!"); SPSecretPal.createSPSecretPal(editingContext, testEvent, admin, gary); SPSecretPal.createSPSecretPal(editingContext, testEvent, mary, admin); //SPSecretPal.createSPSecretPal(editingContext, testEvent, gary, mary); SPWish.createSPWish(editingContext, Boolean.TRUE, admin, admin).setDescription("a pony for riding"); SPWish.createSPWish(editingContext, Boolean.FALSE, admin, admin).setDescription("a race car that goes really fast"); SPWish.createSPWish(editingContext, Boolean.FALSE, mary, admin).setDescription("he wants lots of food"); SPWish.createSPWish(editingContext, Boolean.FALSE, mary, admin).setDescription("a dog!"); SPWish.createSPWish(editingContext, Boolean.FALSE, mary, mary).setDescription("things for making food"); SPWish.createSPWish(editingContext, Boolean.TRUE, mary, gary).setDescription("a pony"); SPWish.createSPWish(editingContext, Boolean.FALSE, admin, admin).setDescription("a pony"); SPWish.createSPWish(editingContext, Boolean.FALSE, gary, gary).setDescription("more stuff"); SPWish.createSPWish(editingContext, Boolean.TRUE, gary, gary).setDescription("a magazine to put in the trash"); SPWish.createSPWish(editingContext, Boolean.FALSE, admin, gary).setDescription("televisions made of gold"); SPWish.createSPWish(editingContext, Boolean.FALSE, gary, admin).setDescription("the world's biggest ball of twine"); } }