From: Mike S. <ms...@us...> - 2007-01-31 14:26:25
|
Update of /cvsroot/wonder/Wonder/Common/Tests/ERXTest/Sources In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv26054/Common/Tests/ERXTest/Sources Added Files: Company.java ERXObjectStoreCoordinatorSynchronizerTestCase.java Paycheck.java _Company.java _Employee.java Session.java Employee.java _Paycheck.java ERXTest0.java DirectAction.java Main.java Application.java Log Message: moved ERXObjectStoreCoordinatorSynchronizerTest to ERXTest --- NEW FILE: Company.java --- import org.apache.log4j.Logger; public class Company extends _Company { private static Logger log = Logger.getLogger( Company.class ); public Company() { } } --- NEW FILE: ERXObjectStoreCoordinatorSynchronizerTestCase.java --- import java.util.Enumeration; import junit.framework.AssertionFailedError; import junit.framework.TestCase; import junit.textui.TestRunner; import com.webobjects.eocontrol.EOEditingContext; import com.webobjects.eocontrol.EOEnterpriseObject; import com.webobjects.foundation.NSArray; import er.extensions.ERXEC; import er.extensions.ERXEOControlUtilities; import er.extensions.ERXObjectStoreCoordinatorPool; import er.extensions.ERXRandomGUID; /** * Run this with ERXMainRunner. * * @author mschrag */ public class ERXObjectStoreCoordinatorSynchronizerTestCase extends TestCase { public void testInsertEO() { // Create Company in OSC1 String companyName = "Company" + ERXRandomGUID.newGid(); EOEditingContext editingContext_osc1 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc1 = Company.createCompany(editingContext_osc1, companyName); editingContext_osc1.saveChanges(); sleep(); // Fetch Company in OSC2 EOEditingContext editingContext_osc2 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc2 = Company.fetchCompany(editingContext_osc2, Company.NAME_KEY, companyName); assertNotNull(company_osc2); assertEquals(companyName, company_osc1.name()); assertEquals(companyName, company_osc2.name()); } public void testUpdateEO() { // Create Company1 in OSC1 String companyName = "Company" + ERXRandomGUID.newGid(); EOEditingContext editingContext_osc1 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc1 = Company.createCompany(editingContext_osc1, companyName); editingContext_osc1.saveChanges(); sleep(); // Fetch Company1 in OSC2 EOEditingContext editingContext_osc2 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc2 = Company.fetchCompany(editingContext_osc2, Company.NAME_KEY, companyName); for (int i = 0; i < 10; i++) { // Change Company1's name in OSC1 String companyName_1 = "Company" + ERXRandomGUID.newGid() + "_osc1"; company_osc1.setName(companyName_1); editingContext_osc1.saveChanges(); sleep(); assertEquals(companyName_1, company_osc2.name()); assertEquals(companyName_1, company_osc1.name()); // Fetch Company1 by name in OSC1 Company company_osc1_with_companyName1 = Company.fetchCompany(editingContext_osc1, Company.NAME_KEY, companyName_1); assertEquals(company_osc1, company_osc1_with_companyName1); // Fetch Company1 by name in OSC2 Company company_osc2_with_companyName1 = Company.fetchCompany(editingContext_osc2, Company.NAME_KEY, companyName_1); assertEquals(company_osc2, company_osc2_with_companyName1); // Change Company1's name in OSC2 String companyName_2 = "Company" + ERXRandomGUID.newGid() + "_osc2"; company_osc2.setName(companyName_2); editingContext_osc2.saveChanges(); sleep(); assertEquals(companyName_2, company_osc1.name()); assertEquals(companyName_2, company_osc2.name()); // Fetch Company1 by name in OSC1 Company company_osc1_with_companyName2 = Company.fetchCompany(editingContext_osc1, Company.NAME_KEY, companyName_2); assertEquals(company_osc1, company_osc1_with_companyName2); // Fetch Company1 by name in OSC2 Company company_osc2_with_companyName2 = Company.fetchCompany(editingContext_osc2, Company.NAME_KEY, companyName_2); assertEquals(company_osc2, company_osc2_with_companyName2); } } public void testMergeEOChanges() { // Create Company1 in OSC1 String companyName = "Company" + ERXRandomGUID.newGid(); EOEditingContext editingContext_osc1 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc1 = Company.createCompany(editingContext_osc1, companyName); editingContext_osc1.saveChanges(); sleep(); // Fetch Company1 in OSC2 EOEditingContext editingContext_osc2 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc2 = Company.fetchCompany(editingContext_osc2, Company.NAME_KEY, companyName); for (int i = 0; i < 10; i++) { // Change Company1's name in OSC1 String companyName_1 = "Company" + ERXRandomGUID.newGid() + "_osc1"; String companyAddress1_1 = company_osc1.address1(); company_osc1.setName(companyName_1); // Change Company1's address in OSC2 String companyAddress1_2 = "Address" + ERXRandomGUID.newGid() + "_osc2"; company_osc2.setAddress1(companyAddress1_2); // Save Company1's new name in OSC1, address in OSC2 should be untouched but merged with new name editingContext_osc1.saveChanges(); sleep(); assertEquals(companyName_1, company_osc2.name()); assertEquals(companyName_1, company_osc1.name()); assertEquals(companyAddress1_2, company_osc2.address1()); assertEquals(companyAddress1_1, company_osc1.address1()); // Fetch Company1 by name in OSC1 Company company_osc1_with_companyName1 = Company.fetchCompany(editingContext_osc1, Company.NAME_KEY, companyName_1); assertEquals(company_osc1, company_osc1_with_companyName1); assertEquals(companyAddress1_1, company_osc1_with_companyName1.address1()); // Fetch Company1 by name in OSC2 Company company_osc2_with_companyName1 = Company.fetchCompany(editingContext_osc2, Company.NAME_KEY, companyName_1); assertEquals(company_osc2, company_osc2_with_companyName1); assertEquals(companyAddress1_2, company_osc2_with_companyName1.address1()); // Save Company1's new address in OSC2 editingContext_osc2.saveChanges(); sleep(); assertEquals(companyName_1, company_osc1.name()); assertEquals(companyName_1, company_osc2.name()); assertEquals(companyAddress1_2, company_osc2.address1()); assertEquals(companyAddress1_2, company_osc1.address1()); } } public void testAddToUnfaultedToMany() { // Create Company1 in OSC1 String companyName = "Company" + ERXRandomGUID.newGid(); EOEditingContext editingContext_osc1 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc1 = Company.createCompany(editingContext_osc1, companyName); editingContext_osc1.saveChanges(); // Fetch Company1 in OSC2 EOEditingContext editingContext_osc2 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc2 = Company.fetchCompany(editingContext_osc2, Company.NAME_KEY, companyName); // Create and Save Employee1 in Company1 in OSC1 String employeeName = "Employee" + ERXRandomGUID.newGid(); Employee employee_osc1 = Employee.createEmployee(editingContext_osc1, Boolean.FALSE, employeeName, company_osc1); editingContext_osc1.saveChanges(); // Fetch employees relationship of Company1 in OSC1 assertContainsExactlyEOs(new NSArray(employee_osc1), company_osc1.employees()); // Fetch employees relationship of Company1 in OSC2 assertContainsExactlyEOs(new NSArray(employee_osc1), company_osc2.employees()); } public void testAddToFaultedToMany() { // Create Company1 in OSC1 String companyName = "Company" + ERXRandomGUID.newGid(); EOEditingContext editingContext_osc1 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc1 = Company.createCompany(editingContext_osc1, companyName); editingContext_osc1.saveChanges(); sleep(); // Fetch employees for Company1 in OSC1 NSArray employees_osc1 = company_osc1.employees(); // Fetch Company1 in OSC2 EOEditingContext editingContext_osc2 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc2 = Company.fetchCompany(editingContext_osc2, Company.NAME_KEY, companyName); // Fetch employees for Company1 in OSC2 NSArray employees_osc2 = company_osc2.employees(); // Create and Save Employee1 for Company1 in OSC1 String employeeName = "Employee" + ERXRandomGUID.newGid(); Employee employee_osc1 = Employee.createEmployee(editingContext_osc1, Boolean.FALSE, employeeName, company_osc1); editingContext_osc1.saveChanges(); sleep(); // Check employees for Company1 in OSC1 assertContainsExactlyEOs(new NSArray(employee_osc1), company_osc1.employees()); // Check employees for Company1 in OSC2 assertContainsExactlyEOs(new NSArray(employee_osc1), company_osc2.employees()); // Create employee for Company1 in OSC2 and Save String employeeName2 = "Employee" + ERXRandomGUID.newGid(); Employee employee_osc2 = Employee.createEmployee(editingContext_osc2, Boolean.FALSE, employeeName2, company_osc2); editingContext_osc2.saveChanges(); sleep(); // Check employees for Company1 in OSC1 assertContainsExactlyEOs(new NSArray(new Object[] { employee_osc1, employee_osc2 }), company_osc1.employees()); // Check employees for Company1 in OSC2 assertContainsExactlyEOs(new NSArray(new Object[] { employee_osc1, employee_osc2 }), company_osc2.employees()); } public void testAddToFaultedToManyWithUncommittedToManyEntries() { // Create Company1 in OSC1 String companyName = "Company" + ERXRandomGUID.newGid(); EOEditingContext editingContext_osc1 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc1 = Company.createCompany(editingContext_osc1, companyName); editingContext_osc1.saveChanges(); sleep(); // Fetch Company1 in OSC2 EOEditingContext editingContext_osc2 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc2 = Company.fetchCompany(editingContext_osc2, Company.NAME_KEY, companyName); // Create (but do not save) Employee1 for Company1 in OSC2 String employeeName1 = "Employee" + ERXRandomGUID.newGid(); Employee employee1_osc2 = Employee.createEmployee(editingContext_osc2, Boolean.FALSE, employeeName1, company_osc2); // Check employees for Company1 in OSC1 (should contain uncommitted Employee) NSArray employees_osc2_BeforeInsert = company_osc2.employees(); assertEquals(1, employees_osc2_BeforeInsert.count()); assertEOEquals(employee1_osc2, employees_osc2_BeforeInsert.objectAtIndex(0)); // Create and save Employee2 for Company1 in OSC1 String employeeName2 = "Employee" + ERXRandomGUID.newGid(); Employee employee2_osc1 = Employee.createEmployee(editingContext_osc1, Boolean.FALSE, employeeName2, company_osc1); editingContext_osc1.saveChanges(); sleep(); // Check employees for Company1 in OSC2 (should contain both Employees) assertContainsExactlyEOs(new NSArray(new Object[] { employee1_osc2, employee2_osc1 }), company_osc2.employees()); // Check employees for Company1 in OSC1 (should contain only Employee2) assertContainsExactlyEOs(new NSArray(new Object[] { employee2_osc1 }), company_osc1.employees()); // Save Employee1 in OSC2 editingContext_osc2.saveChanges(); sleep(); // Check employees for Company1 in OSC2 (should contain both Employees) assertContainsExactlyEOs(new NSArray(new Object[] { employee1_osc2, employee2_osc1 }), company_osc2.employees()); // Check employees for Company1 in OSC1 (should contain both Employees) assertContainsExactlyEOs(new NSArray(new Object[] { employee1_osc2, employee2_osc1 }), company_osc1.employees()); } public void testRemoveFromFaultedToMany() { // Create Company1 in OSC1 String companyName = "Company" + ERXRandomGUID.newGid(); EOEditingContext editingContext_osc1 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc1 = Company.createCompany(editingContext_osc1, companyName); editingContext_osc1.saveChanges(); sleep(); // Create and Save Employee1 and Employee2 for Company1 in OSC1 String employee1Name = "Employee" + ERXRandomGUID.newGid(); Employee employee1_osc1 = Employee.createEmployee(editingContext_osc1, Boolean.FALSE, employee1Name, company_osc1); String employee2Name = "Employee" + ERXRandomGUID.newGid(); Employee employee2_osc1 = Employee.createEmployee(editingContext_osc1, Boolean.FALSE, employee2Name, company_osc1); editingContext_osc1.saveChanges(); sleep(); // Fetch employees for Company1 in OSC1 assertContainsExactlyEOs(new NSArray(new Object[] { employee1_osc1, employee2_osc1 }), company_osc1.employees()); // Fetch Company1 in OSC2 EOEditingContext editingContext_osc2 = ERXEC.newEditingContext(ERXObjectStoreCoordinatorPool._pool().nextObjectStore()); Company company_osc2 = Company.fetchCompany(editingContext_osc2, Company.NAME_KEY, companyName); // Fetch and check employees for Company1 in OSC2 assertContainsExactlyEOs(new NSArray(new Object[] { employee1_osc1, employee2_osc1 }), company_osc2.employees()); // gonna break NSArray employees_osc2 = company_osc2.employees(); Employee employee2_osc2 = (Employee) employees_osc2.objectAtIndex(0); Employee employee1_osc2 = (Employee) employees_osc2.objectAtIndex(1); // Delete Employee1 in OSC1 and Save editingContext_osc1.deleteObject(employee1_osc1); editingContext_osc1.saveChanges(); sleep(); // Fetch and check employees for Company1 in OSC1 assertContainsExactlyEOs(new NSArray(new Object[] { employee2_osc1 }), company_osc1.employees()); // Fetch and check employees for Company1 in OSC2 assertContainsExactlyEOs(new NSArray(new Object[] { employee2_osc1 }), company_osc2.employees()); // ... Do someting with the deleted object in OSC2 // Delete the remaining employee in OSC2 and Save if (ERXEOControlUtilities.eoEquals(employee1_osc1, employee1_osc2)) { editingContext_osc2.deleteObject(employee2_osc2); } else { editingContext_osc2.deleteObject(employee1_osc2); } editingContext_osc2.saveChanges(); sleep(); // Fetch and check employees for Company1 in OSC1 assertContainsExactlyEOs(NSArray.EmptyArray, company_osc1.employees()); // Fetch and check employees for Company1 in OSC2 assertContainsExactlyEOs(NSArray.EmptyArray, company_osc2.employees()); } public static void assertEOEquals(Object obj1, Object obj2) { if (obj1 != null && obj2 != null && obj1 instanceof EOEnterpriseObject && obj2 instanceof EOEnterpriseObject) { EOEnterpriseObject eo1 = (EOEnterpriseObject) obj1; EOEnterpriseObject eo2 = (EOEnterpriseObject) obj2; if (!ERXEOControlUtilities.eoEquals(eo1, eo2)) { throw new AssertionFailedError("Expected " + eo1.editingContext().globalIDForObject(eo1) + ", but got " + eo2.editingContext().globalIDForObject(eo2)); } } else { assertEquals(obj1, obj2); } } public void assertContainsExactlyEOs(NSArray expectedEOs, NSArray actualEOs) { int expectedCount = expectedEOs.count(); int actualCount = actualEOs.count(); assertEquals(expectedCount, actualCount); Enumeration expectedEOsEnum = expectedEOs.objectEnumerator(); while (expectedEOsEnum.hasMoreElements()) { EOEnterpriseObject expectedEO = (EOEnterpriseObject) expectedEOsEnum.nextElement(); boolean containsEO = false; Enumeration actualEOsEnum = actualEOs.objectEnumerator(); while (!containsEO && actualEOsEnum.hasMoreElements()) { EOEnterpriseObject actualEO = (EOEnterpriseObject) actualEOsEnum.nextElement(); containsEO = ERXEOControlUtilities.eoEquals(expectedEO, actualEO); } if (!containsEO) { throw new AssertionFailedError("Expected " + expectedEOs.valueForKey("__globalID") + ", but got " + actualEOs.valueForKey("__globalID")); } } } protected void sleep() { try { Thread.sleep(50); } catch (Throwable t) { } } public static void main(String[] args) { TestRunner.run(ERXObjectStoreCoordinatorSynchronizerTestCase.class); } } --- NEW FILE: Paycheck.java --- import org.apache.log4j.Logger; public class Paycheck extends _Paycheck { private static Logger log = Logger.getLogger( Paycheck.class ); public Paycheck() { } } --- NEW FILE: _Company.java --- // _Company.java // DO NOT EDIT. Make changes to Company.java instead. import com.webobjects.eoaccess.*; import com.webobjects.eocontrol.*; import com.webobjects.foundation.*; import java.math.*; import java.util.*; import org.apache.log4j.Logger; @SuppressWarnings("all") public abstract class _Company extends EOGenericRecord { public static final String ENTITY_NAME = "Company"; public static final String ADDRESS1_KEY = "address1"; public static final String ADDRESS2_KEY = "address2"; public static final String CITY_KEY = "city"; public static final String NAME_KEY = "name"; public static final String STATE_KEY = "state"; public static final String ZIPCODE_KEY = "zipcode"; public static final String EMPLOYEES_KEY = "employees"; private static Logger LOG = Logger.getLogger(_Company.class); public _Company() { super(); } public Company localInstanceOfCompany(EOEditingContext editingContext) { return (Company)EOUtilities.localInstanceOfObject(editingContext, this); } public String address1() { return (String) storedValueForKey("address1"); } public void setAddress1(String aValue) { if (_Company.LOG.isDebugEnabled()) { _Company.LOG.debug( "updating address1 from "+address1()+" to "+aValue ); } takeStoredValueForKey(aValue, "address1"); } public String address2() { return (String) storedValueForKey("address2"); } public void setAddress2(String aValue) { if (_Company.LOG.isDebugEnabled()) { _Company.LOG.debug( "updating address2 from "+address2()+" to "+aValue ); } takeStoredValueForKey(aValue, "address2"); } public String city() { return (String) storedValueForKey("city"); } public void setCity(String aValue) { if (_Company.LOG.isDebugEnabled()) { _Company.LOG.debug( "updating city from "+city()+" to "+aValue ); } takeStoredValueForKey(aValue, "city"); } public String name() { return (String) storedValueForKey("name"); } public void setName(String aValue) { if (_Company.LOG.isDebugEnabled()) { _Company.LOG.debug( "updating name from "+name()+" to "+aValue ); } takeStoredValueForKey(aValue, "name"); } public String state() { return (String) storedValueForKey("state"); } public void setState(String aValue) { if (_Company.LOG.isDebugEnabled()) { _Company.LOG.debug( "updating state from "+state()+" to "+aValue ); } takeStoredValueForKey(aValue, "state"); } public String zipcode() { return (String) storedValueForKey("zipcode"); } public void setZipcode(String aValue) { if (_Company.LOG.isDebugEnabled()) { _Company.LOG.debug( "updating zipcode from "+zipcode()+" to "+aValue ); } takeStoredValueForKey(aValue, "zipcode"); } public NSArray employees() { return (NSArray)storedValueForKey("employees"); } public NSArray employees(EOQualifier qualifier) { return employees(qualifier, null, false); } public NSArray employees(EOQualifier qualifier, boolean fetch) { return employees(qualifier, null, fetch); } public NSArray employees(EOQualifier qualifier, NSArray sortOrderings, boolean fetch) { NSArray results; if (fetch) { EOQualifier fullQualifier; EOQualifier inverseQualifier = new EOKeyValueQualifier(Employee.COMPANY_KEY, EOQualifier.QualifierOperatorEqual, this); if (qualifier == null) { fullQualifier = inverseQualifier; } else { NSMutableArray qualifiers = new NSMutableArray(); qualifiers.addObject(qualifier); qualifiers.addObject(inverseQualifier); fullQualifier = new EOAndQualifier(qualifiers); } results = Employee.fetchEmployees(editingContext(), fullQualifier, sortOrderings); } else { results = employees(); if (qualifier != null) { results = EOQualifier.filteredArrayWithQualifier(results, qualifier); } if (sortOrderings != null) { results = EOSortOrdering.sortedArrayUsingKeyOrderArray(results, sortOrderings); } } return results; } public void addToEmployeesRelationship(Employee object) { if (_Company.LOG.isDebugEnabled()) { _Company.LOG.debug("adding " + object + " to employees relationship"); } addObjectToBothSidesOfRelationshipWithKey( object, "employees" ); } public void removeFromEmployeesRelationship(Employee object) { if (_Company.LOG.isDebugEnabled()) { _Company.LOG.debug("removing " + object + " from employees relationship"); } removeObjectFromBothSidesOfRelationshipWithKey( object, "employees" ); } public Employee createEmployeesRelationship() { EOClassDescription eoClassDesc = EOClassDescription.classDescriptionForEntityName("Employee"); EOEnterpriseObject eoObject = eoClassDesc.createInstanceWithEditingContext(editingContext(), null); editingContext().insertObject(eoObject); addObjectToBothSidesOfRelationshipWithKey(eoObject, "employees"); return (Employee) eoObject; } public void deleteEmployeesRelationship(Employee object) { removeObjectFromBothSidesOfRelationshipWithKey(object, "employees"); editingContext().deleteObject(object); } public void deleteAllEmployeesRelationships() { Enumeration objects = employees().immutableClone().objectEnumerator(); while (objects.hasMoreElements()) { deleteEmployeesRelationship((Employee)objects.nextElement()); } } public static Company createCompany(EOEditingContext editingContext, String name) { Company eoObject = (Company)EOUtilities.createAndInsertInstance(editingContext, _Company.ENTITY_NAME); eoObject.setName(name); return eoObject; } public static NSArray fetchAllCompanys(EOEditingContext editingContext) { return _Company.fetchAllCompanys(editingContext, null); } public static NSArray fetchAllCompanys(EOEditingContext editingContext, NSArray sortOrderings) { return _Company.fetchCompanys(editingContext, null, sortOrderings); } public static NSArray fetchCompanys(EOEditingContext editingContext, EOQualifier qualifier, NSArray sortOrderings) { EOFetchSpecification fetchSpec = new EOFetchSpecification(_Company.ENTITY_NAME, qualifier, sortOrderings); fetchSpec.setIsDeep(true); NSArray eoObjects = editingContext.objectsWithFetchSpecification(fetchSpec); return eoObjects; } public static Company fetchCompany(EOEditingContext editingContext, String keyName, Object value) { return _Company.fetchCompany(editingContext, new EOKeyValueQualifier(keyName, EOQualifier.QualifierOperatorEqual, value)); } public static Company fetchCompany(EOEditingContext editingContext, EOQualifier qualifier) { NSArray eoObjects = _Company.fetchCompanys(editingContext, qualifier, null); Company eoObject; int count = eoObjects.count(); if (count == 0) { eoObject = null; } else if (count == 1) { eoObject = (Company)eoObjects.objectAtIndex(0); } else { throw new IllegalStateException("There was more than one Company that matched the qualifier '" + qualifier + "'."); } return eoObject; } public static Company fetchRequiredCompany(EOEditingContext editingContext, String keyName, Object value) { return _Company.fetchRequiredCompany(editingContext, new EOKeyValueQualifier(keyName, EOQualifier.QualifierOperatorEqual, value)); } public static Company fetchRequiredCompany(EOEditingContext editingContext, EOQualifier qualifier) { Company eoObject = _Company.fetchCompany(editingContext, qualifier); if (eoObject == null) { throw new NoSuchElementException("There was no Company that matched the qualifier '" + qualifier + "'."); } return eoObject; } public static Company localInstanceOfCompany(EOEditingContext editingContext, Company eo) { return (eo == null) ? null : (Company)EOUtilities.localInstanceOfObject(editingContext, eo); } } --- NEW FILE: _Employee.java --- // _Employee.java // DO NOT EDIT. Make changes to Employee.java instead. import com.webobjects.eoaccess.*; import com.webobjects.eocontrol.*; import com.webobjects.foundation.*; import java.math.*; import java.util.*; import org.apache.log4j.Logger; @SuppressWarnings("all") public abstract class _Employee extends EOGenericRecord { public static final String ENTITY_NAME = "Employee"; public static final String ADDRESS1_KEY = "address1"; public static final String ADDRESS2_KEY = "address2"; public static final String CITY_KEY = "city"; public static final String MANAGER_KEY = "manager"; public static final String NAME_KEY = "name"; public static final String STATE_KEY = "state"; public static final String ZIPCODE_KEY = "zipcode"; public static final String COMPANY_KEY = "company"; public static final String PAYCHECKS_KEY = "paychecks"; private static Logger LOG = Logger.getLogger(_Employee.class); public _Employee() { super(); } public Employee localInstanceOfEmployee(EOEditingContext editingContext) { return (Employee)EOUtilities.localInstanceOfObject(editingContext, this); } public String address1() { return (String) storedValueForKey("address1"); } public void setAddress1(String aValue) { if (_Employee.LOG.isDebugEnabled()) { _Employee.LOG.debug( "updating address1 from "+address1()+" to "+aValue ); } takeStoredValueForKey(aValue, "address1"); } public String address2() { return (String) storedValueForKey("address2"); } public void setAddress2(String aValue) { if (_Employee.LOG.isDebugEnabled()) { _Employee.LOG.debug( "updating address2 from "+address2()+" to "+aValue ); } takeStoredValueForKey(aValue, "address2"); } public String city() { return (String) storedValueForKey("city"); } public void setCity(String aValue) { if (_Employee.LOG.isDebugEnabled()) { _Employee.LOG.debug( "updating city from "+city()+" to "+aValue ); } takeStoredValueForKey(aValue, "city"); } public java.lang.Boolean manager() { return (java.lang.Boolean) storedValueForKey("manager"); } public void setManager(java.lang.Boolean aValue) { if (_Employee.LOG.isDebugEnabled()) { _Employee.LOG.debug( "updating manager from "+manager()+" to "+aValue ); } takeStoredValueForKey(aValue, "manager"); } public String name() { return (String) storedValueForKey("name"); } public void setName(String aValue) { if (_Employee.LOG.isDebugEnabled()) { _Employee.LOG.debug( "updating name from "+name()+" to "+aValue ); } takeStoredValueForKey(aValue, "name"); } public String state() { return (String) storedValueForKey("state"); } public void setState(String aValue) { if (_Employee.LOG.isDebugEnabled()) { _Employee.LOG.debug( "updating state from "+state()+" to "+aValue ); } takeStoredValueForKey(aValue, "state"); } public String zipcode() { return (String) storedValueForKey("zipcode"); } public void setZipcode(String aValue) { if (_Employee.LOG.isDebugEnabled()) { _Employee.LOG.debug( "updating zipcode from "+zipcode()+" to "+aValue ); } takeStoredValueForKey(aValue, "zipcode"); } public Company company() { return (Company)storedValueForKey("company"); } public void setCompanyRelationship(Company aValue) { if (_Employee.LOG.isDebugEnabled()) { _Employee.LOG.debug("updating company from " + company() + " to " + aValue); } if (aValue == null) { Company object = company(); if (object != null) { removeObjectFromBothSidesOfRelationshipWithKey(object, "company"); } } else { addObjectToBothSidesOfRelationshipWithKey(aValue, "company"); } } public NSArray paychecks() { return (NSArray)storedValueForKey("paychecks"); } public NSArray paychecks(EOQualifier qualifier) { return paychecks(qualifier, null, false); } public NSArray paychecks(EOQualifier qualifier, boolean fetch) { return paychecks(qualifier, null, fetch); } public NSArray paychecks(EOQualifier qualifier, NSArray sortOrderings, boolean fetch) { NSArray results; if (fetch) { EOQualifier fullQualifier; EOQualifier inverseQualifier = new EOKeyValueQualifier(Paycheck.EMPLOYEE_KEY, EOQualifier.QualifierOperatorEqual, this); if (qualifier == null) { fullQualifier = inverseQualifier; } else { NSMutableArray qualifiers = new NSMutableArray(); qualifiers.addObject(qualifier); qualifiers.addObject(inverseQualifier); fullQualifier = new EOAndQualifier(qualifiers); } results = Paycheck.fetchPaychecks(editingContext(), fullQualifier, sortOrderings); } else { results = paychecks(); if (qualifier != null) { results = EOQualifier.filteredArrayWithQualifier(results, qualifier); } if (sortOrderings != null) { results = EOSortOrdering.sortedArrayUsingKeyOrderArray(results, sortOrderings); } } return results; } public void addToPaychecksRelationship(Paycheck object) { if (_Employee.LOG.isDebugEnabled()) { _Employee.LOG.debug("adding " + object + " to paychecks relationship"); } addObjectToBothSidesOfRelationshipWithKey( object, "paychecks" ); } public void removeFromPaychecksRelationship(Paycheck object) { if (_Employee.LOG.isDebugEnabled()) { _Employee.LOG.debug("removing " + object + " from paychecks relationship"); } removeObjectFromBothSidesOfRelationshipWithKey( object, "paychecks" ); } public Paycheck createPaychecksRelationship() { EOClassDescription eoClassDesc = EOClassDescription.classDescriptionForEntityName("Paycheck"); EOEnterpriseObject eoObject = eoClassDesc.createInstanceWithEditingContext(editingContext(), null); editingContext().insertObject(eoObject); addObjectToBothSidesOfRelationshipWithKey(eoObject, "paychecks"); return (Paycheck) eoObject; } public void deletePaychecksRelationship(Paycheck object) { removeObjectFromBothSidesOfRelationshipWithKey(object, "paychecks"); editingContext().deleteObject(object); } public void deleteAllPaychecksRelationships() { Enumeration objects = paychecks().immutableClone().objectEnumerator(); while (objects.hasMoreElements()) { deletePaychecksRelationship((Paycheck)objects.nextElement()); } } public static Employee createEmployee(EOEditingContext editingContext, java.lang.Boolean manager, String name, Company company) { Employee eoObject = (Employee)EOUtilities.createAndInsertInstance(editingContext, _Employee.ENTITY_NAME); eoObject.setManager(manager); eoObject.setName(name); eoObject.setCompanyRelationship(company); return eoObject; } public static NSArray fetchAllEmployees(EOEditingContext editingContext) { return _Employee.fetchAllEmployees(editingContext, null); } public static NSArray fetchAllEmployees(EOEditingContext editingContext, NSArray sortOrderings) { return _Employee.fetchEmployees(editingContext, null, sortOrderings); } public static NSArray fetchEmployees(EOEditingContext editingContext, EOQualifier qualifier, NSArray sortOrderings) { EOFetchSpecification fetchSpec = new EOFetchSpecification(_Employee.ENTITY_NAME, qualifier, sortOrderings); fetchSpec.setIsDeep(true); NSArray eoObjects = editingContext.objectsWithFetchSpecification(fetchSpec); return eoObjects; } public static Employee fetchEmployee(EOEditingContext editingContext, String keyName, Object value) { return _Employee.fetchEmployee(editingContext, new EOKeyValueQualifier(keyName, EOQualifier.QualifierOperatorEqual, value)); } public static Employee fetchEmployee(EOEditingContext editingContext, EOQualifier qualifier) { NSArray eoObjects = _Employee.fetchEmployees(editingContext, qualifier, null); Employee eoObject; int count = eoObjects.count(); if (count == 0) { eoObject = null; } else if (count == 1) { eoObject = (Employee)eoObjects.objectAtIndex(0); } else { throw new IllegalStateException("There was more than one Employee that matched the qualifier '" + qualifier + "'."); } return eoObject; } public static Employee fetchRequiredEmployee(EOEditingContext editingContext, String keyName, Object value) { return _Employee.fetchRequiredEmployee(editingContext, new EOKeyValueQualifier(keyName, EOQualifier.QualifierOperatorEqual, value)); } public static Employee fetchRequiredEmployee(EOEditingContext editingContext, EOQualifier qualifier) { Employee eoObject = _Employee.fetchEmployee(editingContext, qualifier); if (eoObject == null) { throw new NoSuchElementException("There was no Employee that matched the qualifier '" + qualifier + "'."); } return eoObject; } public static Employee localInstanceOfEmployee(EOEditingContext editingContext, Employee eo) { return (eo == null) ? null : (Employee)EOUtilities.localInstanceOfObject(editingContext, eo); } } --- NEW FILE: Session.java --- // Generated by the WOLips Templateengine Plug-in at Jan 24, 2007 2:11:22 AM import er.extensions.ERXSession; public class Session extends ERXSession { public Session() { } } --- NEW FILE: Employee.java --- import org.apache.log4j.Logger; public class Employee extends _Employee { private static Logger log = Logger.getLogger( Employee.class ); public Employee() { } } --- NEW FILE: _Paycheck.java --- // _Paycheck.java // DO NOT EDIT. Make changes to Paycheck.java instead. import com.webobjects.eoaccess.*; import com.webobjects.eocontrol.*; import com.webobjects.foundation.*; import java.math.*; import java.util.*; import org.apache.log4j.Logger; @SuppressWarnings("all") public abstract class _Paycheck extends EOGenericRecord { public static final String ENTITY_NAME = "Paycheck"; public static final String AMOUNT_KEY = "amount"; public static final String CASHED_KEY = "cashed"; public static final String PAYMENT_DATE_KEY = "paymentDate"; public static final String EMPLOYEE_KEY = "employee"; private static Logger LOG = Logger.getLogger(_Paycheck.class); public _Paycheck() { super(); } public Paycheck localInstanceOfPaycheck(EOEditingContext editingContext) { return (Paycheck)EOUtilities.localInstanceOfObject(editingContext, this); } public Number amount() { return (Number) storedValueForKey("amount"); } public void setAmount(Number aValue) { if (_Paycheck.LOG.isDebugEnabled()) { _Paycheck.LOG.debug( "updating amount from "+amount()+" to "+aValue ); } takeStoredValueForKey(aValue, "amount"); } public java.lang.Boolean cashed() { return (java.lang.Boolean) storedValueForKey("cashed"); } public void setCashed(java.lang.Boolean aValue) { if (_Paycheck.LOG.isDebugEnabled()) { _Paycheck.LOG.debug( "updating cashed from "+cashed()+" to "+aValue ); } takeStoredValueForKey(aValue, "cashed"); } public NSTimestamp paymentDate() { return (NSTimestamp) storedValueForKey("paymentDate"); } public void setPaymentDate(NSTimestamp aValue) { if (_Paycheck.LOG.isDebugEnabled()) { _Paycheck.LOG.debug( "updating paymentDate from "+paymentDate()+" to "+aValue ); } takeStoredValueForKey(aValue, "paymentDate"); } public Employee employee() { return (Employee)storedValueForKey("employee"); } public void setEmployeeRelationship(Employee aValue) { if (_Paycheck.LOG.isDebugEnabled()) { _Paycheck.LOG.debug("updating employee from " + employee() + " to " + aValue); } if (aValue == null) { Employee object = employee(); if (object != null) { removeObjectFromBothSidesOfRelationshipWithKey(object, "employee"); } } else { addObjectToBothSidesOfRelationshipWithKey(aValue, "employee"); } } public static Paycheck createPaycheck(EOEditingContext editingContext, Number amount, java.lang.Boolean cashed, NSTimestamp paymentDate, Employee employee) { Paycheck eoObject = (Paycheck)EOUtilities.createAndInsertInstance(editingContext, _Paycheck.ENTITY_NAME); eoObject.setAmount(amount); eoObject.setCashed(cashed); eoObject.setPaymentDate(paymentDate); eoObject.setEmployeeRelationship(employee); return eoObject; } public static NSArray fetchAllPaychecks(EOEditingContext editingContext) { return _Paycheck.fetchAllPaychecks(editingContext, null); } public static NSArray fetchAllPaychecks(EOEditingContext editingContext, NSArray sortOrderings) { return _Paycheck.fetchPaychecks(editingContext, null, sortOrderings); } public static NSArray fetchPaychecks(EOEditingContext editingContext, EOQualifier qualifier, NSArray sortOrderings) { EOFetchSpecification fetchSpec = new EOFetchSpecification(_Paycheck.ENTITY_NAME, qualifier, sortOrderings); fetchSpec.setIsDeep(true); NSArray eoObjects = editingContext.objectsWithFetchSpecification(fetchSpec); return eoObjects; } public static Paycheck fetchPaycheck(EOEditingContext editingContext, String keyName, Object value) { return _Paycheck.fetchPaycheck(editingContext, new EOKeyValueQualifier(keyName, EOQualifier.QualifierOperatorEqual, value)); } public static Paycheck fetchPaycheck(EOEditingContext editingContext, EOQualifier qualifier) { NSArray eoObjects = _Paycheck.fetchPaychecks(editingContext, qualifier, null); Paycheck eoObject; int count = eoObjects.count(); if (count == 0) { eoObject = null; } else if (count == 1) { eoObject = (Paycheck)eoObjects.objectAtIndex(0); } else { throw new IllegalStateException("There was more than one Paycheck that matched the qualifier '" + qualifier + "'."); } return eoObject; } public static Paycheck fetchRequiredPaycheck(EOEditingContext editingContext, String keyName, Object value) { return _Paycheck.fetchRequiredPaycheck(editingContext, new EOKeyValueQualifier(keyName, EOQualifier.QualifierOperatorEqual, value)); } public static Paycheck fetchRequiredPaycheck(EOEditingContext editingContext, EOQualifier qualifier) { Paycheck eoObject = _Paycheck.fetchPaycheck(editingContext, qualifier); if (eoObject == null) { throw new NoSuchElementException("There was no Paycheck that matched the qualifier '" + qualifier + "'."); } return eoObject; } public static Paycheck localInstanceOfPaycheck(EOEditingContext editingContext, Paycheck eo) { return (eo == null) ? null : (Paycheck)EOUtilities.localInstanceOfObject(editingContext, eo); } } --- NEW FILE: ERXTest0.java --- import com.webobjects.eoaccess.EOAdaptorChannel; import com.webobjects.eoaccess.EOModel; import com.webobjects.eocontrol.EOEditingContext; import com.webobjects.foundation.NSArray; import er.extensions.ERXJDBCUtilities; import er.extensions.migration.IERXMigration; public class ERXObjectStoreCoordinatorSynchronizerTest0 implements IERXMigration { public void downgrade(EOEditingContext editingContext, EOAdaptorChannel channel, EOModel model) throws Throwable { } public NSArray modelDependencies() { return NSArray.EmptyArray; } public void upgrade(EOEditingContext editingContext, EOAdaptorChannel channel, EOModel model) throws Throwable { ERXJDBCUtilities.createTablesForModel(channel, model); } } --- NEW FILE: DirectAction.java --- // Generated by the WOLips Templateengine Plug-in at Jan 24, 2007 2:11:22 AM import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import com.webobjects.appserver.WOActionResults; import com.webobjects.appserver.WODirectAction; import com.webobjects.appserver.WORequest; import com.webobjects.foundation.NSDictionary; import com.webobjects.foundation.NSMutableArray; import er.extensions.ERXProperties; public class DirectAction extends WODirectAction { private static NSMutableArray _sessionIDs = new NSMutableArray(); public DirectAction(WORequest aRequest) { super(aRequest); } @Override public WOActionResults defaultAction() { return pageWithName(Main.class.getName()); } protected String urlForDirectActionNamed(String directActionName, String sessionID, NSDictionary parameters) { context()._generateCompleteURLs(); String url = context().directActionURLForActionNamed(directActionName, parameters); context()._generateRelativeURLs(); if (sessionID != null) { int wosidIndex = url.indexOf("wosid="); if (wosidIndex == -1) { if (url.indexOf("?") == -1) { url += "?"; } else { url += "&"; } url += "wosid=" + sessionID; } else { url = url.replace("wosid=[^&]+", "wosid=" + sessionID); } } return url; } public WOActionResults testInitializeAction() throws MalformedURLException, IOException { _sessionIDs.removeAllObjects(); int sessionCount = ERXProperties.intForKey("er.extensions.ERXObjectStoreCoordinatorPool.maxCoordinators"); String createSessionUrl = urlForDirectActionNamed("testCreateSession", null, null); for (int sessionNum = 0; sessionNum < sessionCount; sessionNum++) { InputStream is = new URL(createSessionUrl).openStream(); while (is.available() > 0) { is.read(); } } System.out.println("DirectAction.testInitializeAction: " + _sessionIDs); return pageWithName("Main"); } public WOActionResults testCreateSessionAction() { Session session = (Session) context().session(); _sessionIDs.addObject(session.sessionID()); return pageWithName("Main"); } } --- NEW FILE: Main.java --- // Generated by the WOLips Templateengine Plug-in at Jan 24, 2007 2:11:22 AM import com.webobjects.appserver.*; public class Main extends WOComponent { public Main(WOContext context) { super(context); } } --- NEW FILE: Application.java --- // Generated by the WOLips Templateengine Plug-in at Jan 24, 2007 2:11:22 AM import junit.textui.TestRunner; import com.webobjects.foundation.NSLog; import er.extensions.ERXApplication; public class Application extends ERXApplication { public static void main(String argv[]) { ERXApplication.main(argv, Application.class); } public Application() { setAllowsConcurrentRequestHandling(true); setAutoOpenInBrowser(false); NSLog.out.appendln("Welcome to " + this.name() + " !"); } @Override public void didFinishLaunching() { super.didFinishLaunching(); try { TestRunner.run(new ERXObjectStoreCoordinatorSynchronizerTestCase()); System.out.println("Application.didFinishLaunching: DONE!"); } catch (Throwable t) { } } } |