/******************************************************************************* | |
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved. | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Contributors: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.tools.workbench.test.models.complexmapping; | |
import java.io.Serializable; | |
import java.util.Calendar; | |
import java.util.Vector; | |
import org.eclipse.persistence.descriptors.ClassDescriptor; | |
import org.eclipse.persistence.expressions.Expression; | |
import org.eclipse.persistence.expressions.ExpressionBuilder; | |
import org.eclipse.persistence.indirection.ValueHolder; | |
import org.eclipse.persistence.indirection.ValueHolderInterface; | |
import org.eclipse.persistence.internal.helper.ConversionManager; | |
import org.eclipse.persistence.internal.helper.DatabaseField; | |
import org.eclipse.persistence.mappings.DirectToFieldMapping; | |
import org.eclipse.persistence.mappings.ManyToManyMapping; | |
import org.eclipse.persistence.mappings.OneToOneMapping; | |
import org.eclipse.persistence.mappings.converters.ObjectTypeConverter; | |
import org.eclipse.persistence.sessions.Record; | |
import org.eclipse.persistence.sessions.Session; | |
import org.eclipse.persistence.tools.schemaframework.TableDefinition; | |
public class Employee implements Serializable { | |
public String firstName; | |
public String lastName; | |
public String sex; | |
public java.util.Date dateAndTimeOfBirth; | |
public java.util.Date joiningDate; | |
public ValueHolderInterface policies; | |
private ValueHolderInterface designation; | |
public JobDescription jobDescription; | |
public Hardware computer; | |
public Vector shipments; | |
public Vector managedEmployees; | |
public Employee manager; | |
public ValueHolderInterface phoneNumbers; | |
public Gender gender; | |
public Cubicle cubicle; | |
public Employee() { | |
policies = new ValueHolder(new Vector()); | |
designation = new ValueHolder(); | |
shipments = new Vector(); | |
managedEmployees = new Vector(); | |
phoneNumbers = new ValueHolder(new Vector()); | |
} | |
public void addManagedEmployee(Employee employee) { | |
this.managedEmployees.addElement(employee); | |
} | |
public void addPhoneNumber(Phone phoneNumber) | |
{ | |
this.getPhoneNumbers().addElement(phoneNumber); | |
} | |
public static void addToDescriptor(ClassDescriptor des) { | |
ExpressionBuilder computer = new ExpressionBuilder(); | |
OneToOneMapping computerMapping = (OneToOneMapping) des.getMappingForAttributeName("computer"); | |
computerMapping.setSelectionCriteria((computer.getField("MAP_HRW.EMP_FNAME").equal(computer.getParameter(new DatabaseField("MAP_EMP.FNAME")))).and(computer.getField("MAP_HRW.EMP_LNAME").equal(computer.getParameter(new DatabaseField("MAP_EMP.LNAME"))))); | |
ExpressionBuilder shipment = new ExpressionBuilder(); | |
Expression linkTable = shipment.getTable("MAP_EMSP"); | |
ManyToManyMapping shipmentMapping = (ManyToManyMapping) des.getMappingForAttributeName("shipments"); | |
shipmentMapping.setSelectionCriteria(((((linkTable.getField("MAP_EMSP.EMP_FNAME").equal(shipment.getParameter(new DatabaseField("MAP_EMP.FNAME")))).and(linkTable.getField("MAP_EMSP.EMP_LNAME").equal(shipment.getParameter(new DatabaseField("MAP_EMP.LNAME"))))).and(linkTable.getField("MAP_EMSP.SP_TS").equal(shipment.getField("MAP_SHIP.SP_TS")))).and(linkTable.getField("MAP_EMSP.SP_TSMIL").equal(shipment.getField("MAP_SHIP.SP_TSMIL")))).and(linkTable.getField("MAP_EMSP.STATUS").equal(null))); | |
ObjectTypeConverter genderTypeConverter = new ObjectTypeConverter(); | |
genderTypeConverter.addConversionValue("M",Male.male); | |
genderTypeConverter.addConversionValue("F",Female.female); | |
genderTypeConverter.setDefaultAttributeValue(Female.female); | |
DirectToFieldMapping genderType = new DirectToFieldMapping(); | |
genderType.setFieldName("GENDER"); | |
genderType.setAttributeName("gender"); | |
genderType.setConverter(genderTypeConverter); | |
des.addMapping(genderType); | |
} | |
/** | |
* Return a platform independant definition of the database table. | |
*/ | |
public static TableDefinition employeePhoneJoinTableDefinition() | |
{ | |
TableDefinition definition = new TableDefinition(); | |
definition.setName("MAP_EMPH"); | |
definition.addPrimaryKeyField("FNAME", String.class, 20); | |
definition.addPrimaryKeyField("LNAME", String.class, 20); | |
definition.addPrimaryKeyField("P_ID", java.math.BigDecimal.class, 15); | |
return definition; | |
} | |
public static Employee errorExample1() | |
{ | |
Employee example = new Employee(); | |
Vector empPolicies = new Vector(); | |
example.firstName = "Dave"; | |
example.lastName = "Vadis"; | |
example.sex = "unknown"; | |
Calendar c = Calendar.getInstance(); | |
c.set(1974, 2, 14, 1, 1, 1); | |
c.set(Calendar.MILLISECOND, 0); | |
example.dateAndTimeOfBirth = c.getTime(); | |
c = Calendar.getInstance(); | |
c.set(1994, 2, 14); | |
example.joiningDate = c.getTime(); | |
example.designation.setValue("Executive"); | |
example.setJobDescription(JobDescription.example1()); | |
example.computer = Computer.example1(example); | |
empPolicies.addElement("Health"); | |
empPolicies.addElement("Tenant"); | |
example.setPolicies(empPolicies); | |
Shipment s1 = Shipment.example1(); | |
Shipment s2 = Shipment.example2(); | |
example.shipments.addElement(s1); | |
example.shipments.addElement(s2); | |
s1.employees.addElement(example); | |
s2.employees.addElement(example); | |
example.addPhoneNumber(Phone.example1()); | |
example.addPhoneNumber(Phone.example2()); | |
return example; | |
} | |
public static Employee example1() | |
{ | |
Employee example = new Employee(); | |
Vector empPolicies = new Vector(); | |
example.firstName = "Dave"; | |
example.lastName = "Vadis"; | |
example.sex = "male"; | |
example.gender = Male.male; | |
example.cubicle = Cubicle.example1(); | |
Calendar c = Calendar.getInstance(); | |
c.set(1974,2,14,1,1,1); //new java.util.Date(74, 2, 14, 1, 1, 1); | |
c.set(Calendar.MILLISECOND, 0); | |
example.dateAndTimeOfBirth = c.getTime(); | |
c.clear(); // re-set calendar | |
c.set(1994,2,14,1,1,1); //new java.util.Date(94, 2, 14); | |
example.joiningDate = c.getTime(); | |
example.designation.setValue("Executive"); | |
example.setJobDescription(JobDescription.example1()); | |
example.computer = Computer.example1(example); | |
empPolicies.addElement("Health"); | |
empPolicies.addElement("Tenant"); | |
example.setPolicies(empPolicies); | |
Shipment s1 = Shipment.example1(); | |
Shipment s2 = Shipment.example2(); | |
example.shipments.addElement(s1); | |
example.shipments.addElement(s2); | |
s1.employees.addElement(example); | |
s2.employees.addElement(example); | |
example.addPhoneNumber(Phone.example1()); | |
example.addPhoneNumber(Phone.example2()); | |
return example; | |
} | |
public static Employee example2() | |
{ | |
Employee example = new Employee(); | |
Vector empPolicies = new Vector(); | |
example.firstName = "Tracy"; | |
example.lastName = "Chapman"; | |
example.sex = "female"; | |
example.gender = Female.female; | |
example.cubicle = Cubicle.example2(); | |
Calendar c = Calendar.getInstance(); | |
c.set(1975,1,19,2,2,2); // new java.util.Date(75, 1, 19, 2, 2, 2); | |
c.set(Calendar.MILLISECOND, 0); | |
example.dateAndTimeOfBirth = c.getTime(); | |
c.clear(); | |
c.set(1995,3,14); // new java.util.Date(95, 3, 14); | |
example.joiningDate = c.getTime(); | |
example.designation.setValue("Non-Executive"); | |
example.setJobDescription(JobDescription.example2()); | |
example.computer = Computer.example2(example); | |
empPolicies.addElement("Vehicle"); | |
empPolicies.addElement("Tenant"); | |
example.setPolicies(empPolicies); | |
Shipment s1 = Shipment.example3(); | |
Shipment s2 = Shipment.example4(); | |
example.shipments.addElement(s1); | |
example.shipments.addElement(s2); | |
s1.employees.addElement(example); | |
s1.employees.addElement(example); | |
example.addPhoneNumber(Phone.example3()); | |
return example; | |
} | |
public static Employee example3() | |
{ | |
Employee example = new Employee(); | |
Vector empPolicies = new Vector(); | |
example.firstName = "Edward"; | |
example.lastName = "White"; | |
example.sex = "male"; | |
example.gender = Male.male; | |
example.cubicle = Cubicle.example1(); | |
Calendar c = Calendar.getInstance(); | |
c.set(1971,11,24,3,3,3); // new java.util.Date(71, 11, 24, 3, 3, 3); | |
c.set(Calendar.MILLISECOND, 0); | |
example.dateAndTimeOfBirth = c.getTime(); | |
c.clear(); | |
c.set(1995,3,14); // new java.util.Date(95, 3, 14); | |
example.joiningDate = c.getTime(); | |
example.designation.setValue("Non-Executive"); | |
example.setJobDescription(JobDescription.example3()); | |
example.computer = Computer.example3(example); | |
empPolicies.addElement("Vehicle"); | |
empPolicies.addElement("House"); | |
example.setPolicies(empPolicies); | |
example.addPhoneNumber(Phone.example4()); | |
example.addPhoneNumber(Phone.example5()); | |
return example; | |
} | |
public static Employee example4() | |
{ | |
Employee example = new Employee(); | |
Vector empPolicies = new Vector(); | |
example.firstName = "Graham"; | |
example.lastName = "Gooch"; | |
example.sex = "male"; | |
example.gender = Male.male; | |
example.cubicle = Cubicle.example2(); | |
Calendar c = Calendar.getInstance(); | |
c.set(1973,2,14,1,1,1); // new java.util.Date(73, 2, 14, 1, 1, 1); | |
c.set(Calendar.MILLISECOND, 0); | |
example.dateAndTimeOfBirth = c.getTime(); | |
c.clear(); | |
c.set(1992,2,14); // new java.util.Date(92, 2, 14); | |
example.joiningDate = c.getTime(); | |
example.designation.setValue("Executive"); | |
example.setJobDescription(JobDescription.example1()); | |
example.computer = Computer.example4(example); | |
empPolicies.addElement("House"); | |
empPolicies.addElement("Land"); | |
example.setPolicies(empPolicies); | |
Shipment s1 = Shipment.example3(); | |
Shipment s2 = Shipment.example4(); | |
example.shipments.addElement(s1); | |
example.shipments.addElement(s2); | |
s1.employees.addElement(example); | |
s2.employees.addElement(example); | |
example.addPhoneNumber(Phone.example7()); | |
example.addPhoneNumber(Phone.example8()); | |
return example; | |
} | |
public static Employee example5() | |
{ | |
Employee example = new Employee(); | |
Vector empPolicies = new Vector(); | |
example.firstName = "Tracy"; | |
example.lastName = "Rue"; | |
example.sex = "female"; | |
example.gender = Female.female; | |
Calendar c = Calendar.getInstance(); | |
c.set(1975,1,19,2,2,2); // new java.util.Date(75, 1, 19, 2, 2, 2); | |
c.set(Calendar.MILLISECOND, 0); | |
example.dateAndTimeOfBirth = c.getTime(); | |
c.clear(); | |
c.set(1992,2,14); // new java.util.Date(92, 2, 14); | |
example.joiningDate = c.getTime(); | |
example.designation.setValue("Non-Executive"); | |
example.setJobDescription(JobDescription.example2()); | |
example.computer = Computer.example5(example); | |
empPolicies.addElement("Vehicle"); | |
empPolicies.addElement("Tenant"); | |
example.setPolicies(empPolicies); | |
Shipment s1 = Shipment.example5(); | |
Shipment s2 = Shipment.example6(); | |
example.shipments.addElement(s1); | |
example.shipments.addElement(s2); | |
s1.employees.addElement(example); | |
s2.employees.addElement(example); | |
example.addPhoneNumber(Phone.example9()); | |
return example; | |
} | |
public static Employee example6() | |
{ | |
Employee example = new Employee(); | |
Vector empPolicies = new Vector(); | |
example.firstName = "Norman"; | |
example.lastName = "Louis"; | |
example.sex = "male"; | |
example.gender = Male.male; | |
Calendar c = Calendar.getInstance(); | |
c.set(1971,11,24,3,3,3); // new java.util.Date(71, 11, 24, 3, 3, 3); | |
c.set(Calendar.MILLISECOND, 0); | |
example.dateAndTimeOfBirth = c.getTime(); | |
c.clear(); | |
c.set(1992,2,14); // new java.util.Date(92, 2, 14); | |
example.joiningDate = c.getTime(); | |
example.designation.setValue("Non-Executive"); | |
example.setJobDescription(JobDescription.example3()); | |
example.computer = Computer.example6(example); | |
empPolicies.addElement("Vehicle"); | |
empPolicies.addElement("House"); | |
example.setPolicies(empPolicies); | |
example.addPhoneNumber(Phone.example10()); | |
example.addPhoneNumber(Phone.example11()); | |
return example; | |
} | |
public static Employee example7() | |
{ | |
Employee example = new Employee(); | |
Vector empPolicies = new Vector(); | |
example.firstName = "Imran"; | |
example.lastName = "Khan"; | |
example.sex = "male"; | |
example.gender = Male.male; | |
Calendar c = Calendar.getInstance(); | |
c.set(1971,11,24,3,3,3); // new java.util.Date(71, 11, 24, 3, 3, 3); | |
c.set(Calendar.MILLISECOND, 0); | |
example.dateAndTimeOfBirth = c.getTime(); | |
c.clear(); | |
c.set(1970,2,19); // new java.util.Date(70, 2, 19); | |
example.joiningDate = c.getTime(); | |
example.designation.setValue("Executive"); | |
example.setJobDescription(JobDescription.example3()); | |
example.computer = Computer.example7(example); | |
empPolicies.addElement("Arms"); | |
empPolicies.addElement("Legs"); | |
example.setPolicies(empPolicies); | |
example.addPhoneNumber(Phone.example13()); | |
example.addPhoneNumber(Phone.example14()); | |
return example; | |
} | |
public static Employee example8() | |
{ | |
Employee example = new Employee(); | |
Vector empPolicies = new Vector(); | |
example.firstName = "Margaret"; | |
example.lastName = "Thatcher"; | |
example.sex = "female"; | |
example.gender = Female.female; | |
Calendar c = Calendar.getInstance(); | |
c.set(1971,11,24,3,3,3); // new java.util.Date(71, 11, 24, 3, 3, 3); | |
c.set(Calendar.MILLISECOND, 0); | |
example.dateAndTimeOfBirth = c.getTime(); | |
c.clear(); | |
c.set(1901,1,1); // new java.util.Date(01,01,01); | |
example.joiningDate = c.getTime(); | |
example.designation.setValue("Non-Executive"); | |
example.setJobDescription(JobDescription.example4()); | |
example.computer = Computer.example8(example); | |
empPolicies.addElement("House"); | |
empPolicies.addElement("Vehicle"); | |
example.setPolicies(empPolicies); | |
example.addPhoneNumber(Phone.example15()); | |
example.addPhoneNumber(Phone.example16()); | |
return example; | |
} | |
public static Employee example9() | |
{ | |
Employee example = new Employee(); | |
Vector empPolicies = new Vector(); | |
example.firstName = "Ace"; | |
example.lastName = "Ventura"; | |
example.sex = "male"; | |
example.gender = Male.male; | |
Calendar c = Calendar.getInstance(); | |
c.set(1971,11,24,3,3,3); // new java.util.Date(71, 11, 24, 3, 3, 3); | |
c.set(Calendar.MILLISECOND, 0); | |
example.dateAndTimeOfBirth = c.getTime(); | |
c.clear(); | |
c.set(1901,1,1); // new java.util.Date(01,01,01); | |
example.joiningDate = c.getTime(); | |
example.designation.setValue("Executive"); | |
example.setJobDescription(JobDescription.example5()); | |
example.computer = Computer.example9(example); | |
empPolicies.addElement("Pet"); | |
empPolicies.addElement("Vehicle"); | |
example.setPolicies(empPolicies); | |
example.addPhoneNumber(Phone.example17()); | |
example.addPhoneNumber(Phone.example18()); | |
return example; | |
} | |
public Hardware getComputer() { | |
return computer; | |
} | |
public java.sql.Date getDate() | |
{ | |
if (this.dateAndTimeOfBirth == null) { | |
return null; | |
} else { | |
Calendar c = Calendar.getInstance(); | |
c.setTime(this.dateAndTimeOfBirth); | |
return new java.sql.Date( | |
c.get(Calendar.YEAR)-1900, | |
c.get(Calendar.MONTH), | |
c.get(Calendar.DAY_OF_MONTH)); | |
} | |
} | |
public String getDesignation() | |
{ | |
return (String) designation.getValue(); | |
} | |
private ValueHolderInterface getDesignationHolder() | |
{ | |
return designation; | |
} | |
public JobDescription getJobDescription() | |
{ | |
return jobDescription; | |
} | |
public Vector getManagedEmployees() { | |
return managedEmployees; | |
} | |
public Vector getManagedEmployeesForTOPLink() | |
{ | |
// test method mutating | |
return (Vector) managedEmployees.clone(); | |
} | |
public Employee getManager() { | |
return manager; | |
} | |
public Vector getPhoneNumbers() | |
{ | |
return (Vector)phoneNumbers.getValue(); | |
} | |
public Vector getPolicies() | |
{ | |
return (Vector)policies.getValue(); | |
} | |
public Integer getRankFromObject() | |
{ | |
Integer rank = null; | |
if (getDesignation() == null) { | |
return null; | |
} | |
if (getDesignation().equals("Executive")) | |
rank = new Integer(1); | |
if (getDesignation().equals("Non-Executive")) | |
rank = new Integer(2); | |
return rank; | |
} | |
public String getRankFromRow(Record row, Session aSession) | |
{ | |
Integer value = new Integer(((Number)row.get("RANK")).intValue()); | |
String rank = null; | |
Employee employee = new Employee(); | |
//(Employee) aSession.readObject(Employee.class); | |
if (value.intValue() == 1) | |
rank = new String("Executive"); | |
if (value.intValue() == 2) | |
rank = new String("Non-Executive"); | |
return rank; | |
} | |
public Vector getShipments() { | |
return shipments; | |
} | |
public java.sql.Time getTime() | |
{ | |
if (dateAndTimeOfBirth == null) { | |
return null; | |
} | |
Calendar c = Calendar.getInstance(); | |
c.setTime(this.dateAndTimeOfBirth); | |
return new java.sql.Time( | |
c.get(Calendar.HOUR_OF_DAY), | |
c.get(Calendar.MINUTE), | |
c.get(Calendar.SECOND)); | |
} | |
/** | |
* Return a platform independant definition of the database table. | |
*/ | |
public static TableDefinition joinTableDefinition() | |
{ | |
TableDefinition definition = new TableDefinition(); | |
definition.setName("MAP_EMSP"); | |
definition.addPrimaryKeyField("EMP_FNAME", String.class, 20); | |
definition.addPrimaryKeyField("EMP_LNAME", String.class, 20); | |
definition.addPrimaryKeyField("SP_TS", java.sql.Timestamp.class); | |
definition.addPrimaryKeyField("SP_TSMIL", Integer.class); | |
definition.addField("STATUS", Character.class); | |
return definition; | |
} | |
/** | |
* This method was created in VisualAge. | |
*/ | |
void newMethod() { | |
} | |
public void removeManagedEmployee(Employee employee) | |
{ | |
managedEmployees.removeElement(employee); | |
} | |
public void setComputer(Computer computer) { | |
this.computer = computer; | |
} | |
public void setComputer(Hardware computer) { | |
this.computer = computer; | |
} | |
public java.util.Date setDateAndTime(Record row) | |
{ | |
java.sql.Date sqlDateOfBirth = (java.sql.Date) ConversionManager.getDefaultManager().convertObject( | |
row.get("BDAY"), java.sql.Date.class); | |
java.sql.Time timeOfBirth = (java.sql.Time) ConversionManager.getDefaultManager().convertObject( | |
row.get("BTIME"), java.sql.Time.class); | |
/** | |
* Deprecated API is used here because calendars do not work properly in JVIEW. | |
*/ | |
java.util.Date utilDateOfBirth = | |
new java.util.Date( | |
sqlDateOfBirth.getYear(), | |
sqlDateOfBirth.getMonth(), | |
sqlDateOfBirth.getDate(), | |
timeOfBirth.getHours(), | |
timeOfBirth.getMinutes(), | |
timeOfBirth.getSeconds()); | |
return utilDateOfBirth; | |
} | |
public void setDesignation(String designation) | |
{ | |
this.designation.setValue(designation); | |
} | |
private void setDesignationHolder(ValueHolderInterface value) | |
{ | |
designation = value; | |
} | |
public void setJobDescription(JobDescription newJobDescription) | |
{ | |
jobDescription = newJobDescription; | |
} | |
public void setManagedEmployees(Vector emps) | |
{ | |
// test method mutating | |
managedEmployees = emps; | |
} | |
public void setManagedEmployeesFromTOPLink(Vector emps) | |
{ | |
// test method mutating | |
managedEmployees = (Vector) emps.clone(); | |
} | |
public void setManager(Employee manager) { | |
this.manager = manager; | |
} | |
public void setPhoneNumbers(Vector v) | |
{ | |
phoneNumbers.setValue(v); | |
} | |
public void setPolicies(Vector theVector) | |
{ | |
policies.setValue(theVector); | |
} | |
/** | |
* Return a platform independant definition of the database table. | |
*/ | |
public static TableDefinition tableDefinition() { | |
TableDefinition definition = new TableDefinition(); | |
definition.setName("MAP_EMP"); | |
definition.addField("FNAME", String.class, 20); | |
definition.addField("LNAME", String.class, 20); | |
definition.addField("SEX", String.class, 10); | |
definition.addField("BDAY", java.sql.Date.class); | |
definition.addField("BTIME", java.sql.Time.class); | |
definition.addField("JDAY", java.sql.Date.class); | |
definition.addField("RANK", Integer.class); | |
definition.addField("GENDER", String.class, 10); | |
// The JDESC field will be added after a plaftorm check in | |
// MappingSystem.createTables() | |
definition.addField("M_FNAME", String.class, 20); | |
definition.addField("M_LNAME", String.class, 20); | |
definition.addField("C_ID", String.class, 15); | |
definition.addField("A_ID", java.math.BigDecimal.class,15); | |
return definition; | |
} | |
@Override | |
public String toString() | |
{ | |
return "Employee(" + firstName + " " + lastName + ")"; | |
} | |
} |