| package foo; | |
| import java.math.BigDecimal; | |
| import java.util.Vector; | |
| import org.eclipse.persistence.exceptions.DatabaseException; | |
| import org.eclipse.persistence.sessions.DatabaseSession; | |
| import org.eclipse.persistence.sessions.Project; | |
| import org.eclipse.persistence.sessions.UnitOfWork; | |
| public class MethodAccessingEndToEndClient { | |
| private Project project; | |
| private DatabaseSession session; | |
| private String errorMessage; | |
| /** | |
| * if there are any problems the error message will have a value | |
| */ | |
| public static void main(String[] args) { | |
| MethodAccessingEndToEndClient client = new MethodAccessingEndToEndClient(); | |
| try { | |
| client.login(); | |
| client.testCode(); | |
| client.logout(); | |
| } catch (Exception ex) { | |
| // any exceptions should be recorded in the error message... | |
| } | |
| if (client.errorMessage == null) { | |
| System.exit(0); | |
| } else { | |
| System.err.println(client.errorMessage); | |
| System.exit(1); | |
| } | |
| } | |
| MethodAccessingEndToEndClient() { | |
| super(); | |
| } | |
| private void login() throws Exception { | |
| try { | |
| this.project = new EndToEndProject(); | |
| this.session = this.project.createDatabaseSession(); | |
| this.session.dontLogMessages(); | |
| // this.session.logMessages(); | |
| this.session.login(); | |
| } catch (Exception ex) { | |
| this.errorMessage = "Problems logging in to database: " + ex; | |
| throw ex; | |
| } | |
| } | |
| private void testCode() throws Exception { | |
| Employee employee; | |
| PhoneNumber homePhone; | |
| PhoneNumber workPhone; | |
| try { | |
| // create objects | |
| employee = new Employee(); | |
| homePhone = new PhoneNumber(); | |
| workPhone = new PhoneNumber(); | |
| } catch (Exception ex) { | |
| this.errorMessage = "Problems instantiating objects: " + ex; | |
| throw ex; | |
| } | |
| UnitOfWork uow = this.session.acquireUnitOfWork(); | |
| uow.registerNewObject(employee); | |
| uow.registerNewObject(homePhone); | |
| uow.registerNewObject(workPhone); | |
| // Test direct field accessors | |
| employee.setId(new BigDecimal(10)); | |
| homePhone.setId(new BigDecimal(20)); | |
| workPhone.setId(new BigDecimal(30)); | |
| String employeeName = "George \"Dubya\" Bush"; | |
| employee.setName(employeeName); | |
| String homeNumber = "1-800-555-HOME"; | |
| homePhone.setNum(homeNumber); | |
| String workNumber = "1-800-555-WORK"; | |
| workPhone.setNum(workNumber); | |
| if (employee.getName() != employeeName | |
| || homePhone.getNum() != homeNumber | |
| || workPhone.getNum() != workNumber) | |
| { | |
| this.errorMessage = "Direct field accessors did not work."; | |
| return; | |
| } | |
| // Test value holder accessors | |
| homePhone.setEmp(employee); | |
| workPhone.setEmp(employee); | |
| if (homePhone.getEmp() != employee | |
| || workPhone.getEmp() != employee) | |
| { | |
| this.errorMessage = "Value holder accessor did not work."; | |
| return; | |
| } | |
| homePhone.setEmp(null); | |
| workPhone.setEmp(null); | |
| // Test add collection accessors | |
| employee.addToPhoneNumberCollection(homePhone); | |
| employee.addToPhoneNumberCollection(workPhone); | |
| if (! employee.getPhoneNumberCollection().contains(homePhone) | |
| || ! employee.getPhoneNumberCollection().contains(workPhone)) | |
| { | |
| this.errorMessage = "Add accessors did not work."; | |
| return; | |
| } | |
| if (homePhone.getEmp() != employee | |
| || workPhone.getEmp() != employee) | |
| { | |
| this.errorMessage = "Back-pointers did not work."; | |
| return; | |
| } | |
| // Test writing to database | |
| uow.commitAndResume(); | |
| if (uow.readAllObjects(Employee.class).size() == 0 | |
| || uow.readAllObjects(PhoneNumber.class).size() == 0) | |
| { | |
| this.errorMessage = "Did not write objects to database."; | |
| return; | |
| } | |
| // Test remove collection accessors | |
| employee.removeFromPhoneNumberCollection(homePhone); | |
| employee.removeFromPhoneNumberCollection(workPhone); | |
| if (employee.getPhoneNumberCollection().contains(homePhone) | |
| || employee.getPhoneNumberCollection().contains(workPhone)) | |
| { | |
| this.errorMessage = "Remove accessors did not work."; | |
| return; | |
| } | |
| if (homePhone.getEmp() != null | |
| || workPhone.getEmp() != null) | |
| { | |
| this.errorMessage = "Back-pointers did not work."; | |
| return; | |
| } | |
| } | |
| private void logout() throws Exception { | |
| try { | |
| Vector employees = this.session.readAllObjects(Employee.class); | |
| Vector phoneNumbers = this.session.readAllObjects(PhoneNumber.class); | |
| this.session.deleteAllObjects(phoneNumbers); | |
| this.session.deleteAllObjects(employees); | |
| this.session.logout(); | |
| } catch (Exception ex) { | |
| this.errorMessage = "Problems logging out of database: " + ex; | |
| throw ex; | |
| } | |
| } | |
| } |