/******************************************************************************* * Copyright (c) 1998, 2015 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.tests.clientserver; import java.io.*; import java.math.BigDecimal; /** * <p><b>Purpose</b>: Represent a employee of an organization. * <p><b>Description</b>: An Employee is a root object in the Employee Demo. * It maintains relationships to all of the other objects in the system. * The employee shows usage of 1-1, 1-m, m-m, aggregate and transformation mappings. * The employee also shows usage of value holder to implement indirection for its relationships * (note, it is strongly suggested to always use value holders for relationships). */ public class DeadLockEmployee implements Serializable { /** Primary key, maped as a direct-to-field, BigDecimal -> NUMBER, that makes use of sequence numbers to generate the id. */ public BigDecimal id; /** Direct-to-field mapping, String -> VARCHAR. */ public String firstName; /** Direct-to-field mapping, String -> VARCHAR. */ public String lastName; /** Object-type mapping, maps "Male" -> "M", "Female" -> "F". */ public String gender; /** One-to-one mapping, employee references its address through a foreign key. */ public DeadLockAddress address; public int version; /** * For fields that make use of indirection the constructor should build the value holders. */ public DeadLockEmployee() { this.firstName = ""; this.lastName = ""; this.address = null; } /** * Notice that the usage of value holders does not effect the public interface or usage of the class. * The get/set methods must however be changed to wrap/unwrap the value holder. */ public DeadLockAddress getAddress() { return address; } public String getFirstName() { return firstName; } public String getGender() { return gender; } /** * Return the persistent identifier of the receiver. */ public BigDecimal getId() { return id; } public String getLastName() { return lastName; } /** * Notice that the usage of value holders does not effect the public interface or usage of the class. * The get/set methods must however be changed to wrap/unwrap the value holder. */ public void setAddress(DeadLockAddress address) { this.address = address; } public void setFemale() { setGender("Female"); } public void setFirstName(String firstName) { this.firstName = firstName; } public void setGender(String gender) { this.gender = gender; } /** * Set the persistent identifier of the receiver. * Note this should never be changed. * Consider making the primary key set methods protected or not having them. * In this demo the setId is required for testing purposes. */ public void setId(BigDecimal id) { this.id = id; } public void setLastName(String lastName) { this.lastName = lastName; } public void setMale() { setGender("Male"); } /** * Get and set method for the version number. This make the version accessible for optimistic lock testing ** */ public int getVersion() { return version; } public void setVersion(int newVersion) { version = newVersion; } public String toString() { StringWriter writer = new StringWriter(); writer.write("Employee: "); writer.write(getFirstName()); writer.write(" "); writer.write(getLastName()); return writer.toString(); } }