blob: 9739df30ca52a7c8bd186c776288d6e9d2b8fc49 [file] [log] [blame]
/*******************************************************************************
* 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 + ")";
}
}