Package er.example.erxpartials.migration

Source Code of er.example.erxpartials.migration.ERXPartialExample0

package er.example.erxpartials.migration;

import com.webobjects.eoaccess.EOModel;
import com.webobjects.eocontrol.EOEditingContext;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSTimestamp;

import er.example.erxpartials.model.Company;
import er.example.erxpartials.model.Department;
import er.example.erxpartials.model.EmployeeType;
import er.example.erxpartials.model.Partial_AuthenticatedPerson;
import er.example.erxpartials.model.Person;
import er.extensions.crypting.ERXCrypto;
import er.extensions.migration.ERXMigrationDatabase;
import er.extensions.migration.ERXMigrationTable;
import er.extensions.migration.ERXModelVersion;
import er.extensions.migration.IERXPostMigration;

public class ERXPartialExample0 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 employeeTypeTable = database.newTableNamed("EmployeeType");
    employeeTypeTable.newIntegerColumn("id", false);
    employeeTypeTable.newStringColumn("name", 255, false);
    employeeTypeTable.create();
     employeeTypeTable.setPrimaryKey("id");

    ERXMigrationTable departmentTable = database.newTableNamed("Department");
    departmentTable.newIntegerColumn("companyID", false);
    departmentTable.newStringColumn("departmentCode", 255, false);
    departmentTable.newIntegerColumn("id", false);
    departmentTable.newStringColumn("name", 255, false);
    departmentTable.create();
     departmentTable.setPrimaryKey("id");

    ERXMigrationTable companyTable = database.newTableNamed("Company");
    companyTable.newStringColumn("address1", 255, true);
    companyTable.newStringColumn("address2", 255, true);
    companyTable.newStringColumn("city", 255, true);
    companyTable.newIntegerColumn("id", false);
    companyTable.newStringColumn("name", 255, false);
    companyTable.newStringColumn("state", 255, true);
    companyTable.newStringColumn("zipcode", 255, true);
    companyTable.create();
     companyTable.setPrimaryKey("id");

    ERXMigrationTable partial_AuthenticatedPersonTable = database.existingTableNamed("Person");
    partial_AuthenticatedPersonTable.newTimestampColumn("lastLoginDate", true);
    partial_AuthenticatedPersonTable.newStringColumn("password", 255, true);
    partial_AuthenticatedPersonTable.newStringColumn("username", 255, true);

    ERXMigrationTable partial_EmployeePersonTable = database.existingTableNamed("Person");
    partial_EmployeePersonTable.newIntegerColumn("departmentID", true);
    partial_EmployeePersonTable.newStringColumn("employeeNumber", 255, true);
    partial_EmployeePersonTable.newIntegerColumn("employeeTypeID", true);
    partial_EmployeePersonTable.newBigDecimalColumn("salary", 38, 2, true);

    partial_EmployeePersonTable.addForeignKey("departmentID", "Department", "id");
    partial_EmployeePersonTable.addForeignKey("employeeTypeID", "EmployeeType", "id");
    departmentTable.addForeignKey("companyID", "Company", "id");
  }

  public void postUpgrade(EOEditingContext ec, EOModel model) throws Throwable {
    EmployeeType employee = EmployeeType.createEmployeeType(ec, "Employee");
    EmployeeType contract = EmployeeType.createEmployeeType(ec, "Contractor");
    EmployeeType intern = EmployeeType.createEmployeeType(ec, "Intern");
    ec.saveChanges();
   
    Company gvc = Company.createCompany(ec, "Global Village Consulting");
    Company apple = Company.createCompany(ec, "Apple");
    Company logicsquad = Company.createCompany(ec, "Logic Squad");
    ec.saveChanges();
   
    Department gvcDev = Department.createDepartment(ec, "123456", "GVC Development", gvc);
    Department logicDev = Department.createDepartment(ec, "987654321", "Logic Squad Development", logicsquad);
    ec.saveChanges();
   
    NSArray<Person> allPersons = Person.fetchAllPersons(ec);
    for ( Person aPerson : allPersons) {
      Partial_AuthenticatedPerson auth = aPerson.partialForClass(Partial_AuthenticatedPerson.class);
      auth.setLastLoginDate(new NSTimestamp());
      auth.setUsername( aPerson.firstName().toLowerCase() + "." + aPerson.lastName().toLowerCase() );
      auth.setPassword( ERXCrypto.base64HashedString(auth.username()) );
    }
  }
}
TOP

Related Classes of er.example.erxpartials.migration.ERXPartialExample0

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.