/*
 * Generated by XDoclet - Do not edit!
 */
package test.ejb.cmr;

/**
 * Value object for Employee.
 *
 * @xdoclet-generated at 22-10-04
 * @copyright The XDoclet Team
 * @author XDoclet
 * @version 1.2.2
 */
public class EmployeeValue
   extends java.lang.Object
   implements java.io.Serializable 
{
   private java.lang.Integer id;
   private boolean idHasBeenSet = false;
   private java.lang.String name;
   private boolean nameHasBeenSet = false;
   private test.ejb.cmr.EmployeeAddressValue HomeAddress;
   private boolean HomeAddressHasBeenSet = false;
   private test.ejb.cmr.EmployeeAddressValue WorkAddress;
   private boolean WorkAddressHasBeenSet = false;

   private java.lang.Integer pk;

   public EmployeeValue()
   {
   }

   public EmployeeValue( java.lang.Integer id,java.lang.String name )
   {
	  this.id = id;
	  idHasBeenSet = true;
	  this.name = name;
	  nameHasBeenSet = true;
	  pk = this.getId();
   }

   //TODO Cloneable is better than this !
   public EmployeeValue( EmployeeValue otherValue )
   {
	  this.id = otherValue.id;
	  idHasBeenSet = true;
	  this.name = otherValue.name;
	  nameHasBeenSet = true;
	// TODO Clone is better no ?
	  this.HomeAddress = otherValue.HomeAddress;
	  HomeAddressHasBeenSet = true;
	// TODO Clone is better no ?
	  this.WorkAddress = otherValue.WorkAddress;
	  WorkAddressHasBeenSet = true;

	  pk = this.getId();
   }

   public java.lang.Integer getPrimaryKey()
   {
	  return pk;
   }

   public void setPrimaryKey( java.lang.Integer pk )
   {
      // it's also nice to update PK object - just in case
      // somebody would ask for it later...
      this.pk = pk;
	  setId( pk );
   }

   public java.lang.Integer getId()
   {
	  return this.id;
   }

   public void setId( java.lang.Integer id )
   {
	  this.id = id;
	  idHasBeenSet = true;

		  pk = id;
   }

   public boolean idHasBeenSet(){
	  return idHasBeenSet;
   }
   public java.lang.String getName()
   {
	  return this.name;
   }

   public void setName( java.lang.String name )
   {
	  this.name = name;
	  nameHasBeenSet = true;

   }

   public boolean nameHasBeenSet(){
	  return nameHasBeenSet;
   }

   public test.ejb.cmr.EmployeeAddressValue getHomeAddress()
   {
	  return this.HomeAddress;
   }
   public void setHomeAddress( test.ejb.cmr.EmployeeAddressValue HomeAddress )
   {
	  this.HomeAddress = HomeAddress;
	  HomeAddressHasBeenSet = true;
   }
   public test.ejb.cmr.EmployeeAddressValue getWorkAddress()
   {
	  return this.WorkAddress;
   }
   public void setWorkAddress( test.ejb.cmr.EmployeeAddressValue WorkAddress )
   {
	  this.WorkAddress = WorkAddress;
	  WorkAddressHasBeenSet = true;
   }

   public String toString()
   {
	  StringBuffer str = new StringBuffer("{");

	  str.append("id=" + getId() + " " + "name=" + getName());
	  str.append('}');

	  return(str.toString());
   }

   /**
    * A Value Object has an identity if the attributes making its Primary Key have all been set. An object without identity is never equal to any other object.
    *
    * @return true if this instance has an identity.
    */
   protected boolean hasIdentity()
   {
	  return idHasBeenSet;
   }

   public boolean equals(Object other)
   {
      if (this == other)
         return true;
	  if ( ! hasIdentity() ) return false;
	  if (other instanceof EmployeeValue)
	  {
		 EmployeeValue that = (EmployeeValue) other;
		 if ( ! that.hasIdentity() ) return false;
		 boolean lEquals = true;

		 lEquals = lEquals && isIdentical(that);

		 return lEquals;
	  }
	  else
	  {
		 return false;
	  }
   }

   public boolean isIdentical(Object other)
   {
	  if (other instanceof EmployeeValue)
	  {
		 EmployeeValue that = (EmployeeValue) other;
		 boolean lEquals = true;
		 if( this.id == null )
		 {
			lEquals = lEquals && ( that.id == null );
		 }
		 else
		 {
			lEquals = lEquals && this.id.equals( that.id );
		 }
		 if( this.name == null )
		 {
			lEquals = lEquals && ( that.name == null );
		 }
		 else
		 {
			lEquals = lEquals && this.name.equals( that.name );
		 }
		 if( this.HomeAddress == null )
		 {
			lEquals = lEquals && ( that.HomeAddress == null );
		 }
		 else
		 {
			lEquals = lEquals && this.HomeAddress.equals( that.HomeAddress );
		 }
		 if( this.WorkAddress == null )
		 {
			lEquals = lEquals && ( that.WorkAddress == null );
		 }
		 else
		 {
			lEquals = lEquals && this.WorkAddress.equals( that.WorkAddress );
		 }

		 return lEquals;
	  }
	  else
	  {
		 return false;
	  }
   }

   public int hashCode(){
	  int result = 17;
      result = 37*result + ((this.id != null) ? this.id.hashCode() : 0);

      result = 37*result + ((this.name != null) ? this.name.hashCode() : 0);

	  result = 37*result + ((this.HomeAddress != null) ? this.HomeAddress.hashCode() : 0);
	  result = 37*result + ((this.WorkAddress != null) ? this.WorkAddress.hashCode() : 0);
	  return result;
   }

}
