/******************************************************************************* | |
* 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.testing.models.insurance; | |
import java.util.*; | |
import java.io.*; | |
import org.eclipse.persistence.internal.helper.Helper; | |
/** | |
* <p><b>Purpose</b>: Represents an insurance policy holder. | |
* <p><b>Description</b>: Root object that holder an Address and has a 1-M to Policy. | |
* @see Policy | |
* @since TOPLink/Java 1.0 | |
*/ | |
public class PolicyHolder implements Serializable { | |
private String firstName; | |
private String lastName; | |
private String sex; | |
private long ssn; | |
private java.sql.Date birthDate; | |
private String occupation; | |
private Address address; | |
private Vector policies; | |
private Vector childrenNames; | |
// a collection of phones being stored at Oracle8i as VArray type | |
private Vector phones; | |
public PolicyHolder() { | |
this.firstName = ""; | |
this.lastName = ""; | |
this.occupation = ""; | |
this.sex = "Male"; | |
this.policies = new Vector(3); | |
this.childrenNames = new Vector(2); | |
this.phones = new Vector(4); | |
} | |
public void addChildName(String name) { | |
getChildrenNames().addElement(name); | |
} | |
public void addPhone(Phone phone) { | |
getPhones().addElement(phone); | |
} | |
/** | |
* Add the policy. | |
* Note that it is important to maintain bi-directional relationships both ways when adding. | |
*/ | |
public Policy addPolicy(Policy policy) { | |
getPolicies().addElement(policy); | |
policy.setPolicyHolder(this); | |
return policy; | |
} | |
/** | |
* Return an example policy holder instance. | |
*/ | |
public static PolicyHolder example1() { | |
PolicyHolder holder = new PolicyHolder(); | |
holder.setFirstName("Bob"); | |
holder.setLastName("Smith"); | |
holder.addChildName("Bobby"); | |
holder.addChildName("Bessy-Sue"); | |
holder.addChildName("Bessy-Ray"); | |
holder.setMale(); | |
holder.setSsn(1111); | |
holder.setBirthDate(Helper.dateFromString("1950/02/30")); | |
holder.setOccupation("Engineer"); | |
holder.setAddress(Address.example1()); | |
holder.addPolicy(HealthPolicy.example1()); | |
holder.addPhone(Phone.example1()); | |
holder.addPhone(Phone.example2()); | |
return holder; | |
} | |
/** | |
* Return an example employee instance. | |
*/ | |
public static PolicyHolder example2() { | |
PolicyHolder holder = new PolicyHolder(); | |
holder.setFirstName("Jill"); | |
holder.setLastName("May"); | |
holder.setFemale(); | |
holder.setSsn(2222); | |
holder.setBirthDate(Helper.dateFromString("1960/02/15")); | |
holder.setOccupation("Diving"); | |
holder.setAddress(Address.example2()); | |
holder.addPolicy(HousePolicy.example1()); | |
holder.addPolicy(VehiclePolicy.example2()); | |
holder.addPhone(Phone.example3()); | |
holder.addPhone(Phone.example4()); | |
return holder; | |
} | |
/** | |
* Return an example employee instance. | |
*/ | |
public static PolicyHolder example3() { | |
PolicyHolder holder = new PolicyHolder(); | |
holder.setFirstName("Sarah"); | |
holder.setLastName("Way"); | |
holder.setFemale(); | |
holder.setSsn(3333); | |
holder.setBirthDate(Helper.dateFromString("1977/03/03")); | |
holder.setOccupation("Student"); | |
holder.setAddress(Address.example3()); | |
holder.addPolicy(HousePolicy.example2()); | |
return holder; | |
} | |
/** | |
* Return an example employee instance. | |
*/ | |
public static PolicyHolder example4() { | |
PolicyHolder holder = new PolicyHolder(); | |
holder.setFirstName("Sarah-loo"); | |
holder.setLastName("Smitty"); | |
holder.addChildName("Gene"); | |
holder.addChildName("Jen"); | |
holder.addChildName("Jess"); | |
holder.addChildName("Jean"); | |
holder.setFemale(); | |
holder.setSsn(4444); | |
holder.setBirthDate(Helper.dateFromString("1919/09/09")); | |
holder.setOccupation("Unemployed"); | |
holder.setAddress(Address.example1()); | |
holder.addPolicy(VehiclePolicy.example1()); | |
return holder; | |
} | |
/** | |
* Return an example employee instance. | |
*/ | |
public static PolicyHolder example5() { | |
PolicyHolder holder = new PolicyHolder(); | |
holder.setFirstName("Shi"); | |
holder.setLastName("Shu"); | |
holder.addChildName("tai"); | |
holder.addChildName("lin"); | |
holder.addChildName("ching"); | |
holder.setFemale(); | |
holder.setSsn(5555); | |
holder.setBirthDate(Helper.dateFromString("1910/09/09")); | |
holder.setOccupation("Unemployed"); | |
holder.setAddress(Address.example1()); | |
holder.addPolicy(VehiclePolicy.example3()); | |
return holder; | |
} | |
public Address getAddress() { | |
return address; | |
} | |
public java.sql.Date getBirthDate() { | |
return birthDate; | |
} | |
public Vector getChildrenNames() { | |
return childrenNames; | |
} | |
public String getFirstName() { | |
return firstName; | |
} | |
public String getLastName() { | |
return lastName; | |
} | |
public String getOccupation() { | |
return occupation; | |
} | |
public Vector getPhones() { | |
return phones; | |
} | |
public Vector getPolicies() { | |
return policies; | |
} | |
public String getSex() { | |
return sex; | |
} | |
public long getSsn() { | |
return ssn; | |
} | |
/** | |
* This is required for TopLink only to primitively set the address without side effects. | |
* If method access is used without indirection the set method given to TopLink must not have any side-effects, | |
* such as setting the address's policy holder. This could cause the unit of work problems. | |
*/ | |
public void internalSetAddress(Address address) { | |
this.address = address; | |
} | |
public boolean isFemale() { | |
return getSex().equals("Female"); | |
} | |
public boolean isMale() { | |
return getSex().equals("Male"); | |
} | |
public void removePhone(Phone device) { | |
getPhones().removeElement(device); | |
} | |
/** | |
* Remove the policy. | |
* Note that it is important to maintain bi-directional relationships both ways when removing. | |
*/ | |
public Policy removePolicy(Policy policy) { | |
getPolicies().removeElement(policy); | |
policy.setPolicyHolder(null); | |
return policy; | |
} | |
/** | |
* Set the address. | |
* Note that it is important to maintain bi-directional relationships both ways. | |
*/ | |
public void setAddress(Address address) { | |
this.address = address; | |
if (address != null) { | |
address.setPolicyHolder(this); | |
} | |
} | |
public void setBirthDate(java.sql.Date birthDate) { | |
this.birthDate = birthDate; | |
} | |
public void setChildrenNames(Vector childrenNames) { | |
this.childrenNames = childrenNames; | |
} | |
public void setFemale() { | |
setSex("Female"); | |
} | |
public void setFirstName(String firstName) { | |
this.firstName = firstName; | |
} | |
public void setLastName(String lastName) { | |
this.lastName = lastName; | |
} | |
public void setMale() { | |
setSex("Male"); | |
} | |
public void setOccupation(String occupation) { | |
this.occupation = occupation; | |
} | |
public void setPhones(Vector phones) { | |
this.phones = phones; | |
} | |
public void setPolicies(Vector policies) { | |
this.policies = policies; | |
} | |
public void setSex(String sex) { | |
this.sex = sex; | |
} | |
public void setSsn(long ssn) { | |
this.ssn = ssn; | |
} | |
public String toString() { | |
return "PolicyHolder: " + getFirstName() + " " + getLastName(); | |
} | |
} |