From d919b3d00c9ae871325d1d7f99cee439123b3e87 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org>
Date: Sun, 10 May 2020 06:37:52 +0200
Subject: [PATCH] Continued: - added to re-add departmentLead in
 equals()/hashCode() methods but now as   Contact and not Employee. In
 Employee you have a Department instance again,   leading to endless recursive
 calls / stack overflow.
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Signed-off-by: Roland Häder <roland@mxchange.org>
---
 .../model/department/BusinessDepartment.java    | 17 ++++++++++-------
 .../model/department/Department.java            | 14 +++++++-------
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/src/org/mxchange/jcontactsbusiness/model/department/BusinessDepartment.java b/src/org/mxchange/jcontactsbusiness/model/department/BusinessDepartment.java
index bc2dcb6..d066b59 100644
--- a/src/org/mxchange/jcontactsbusiness/model/department/BusinessDepartment.java
+++ b/src/org/mxchange/jcontactsbusiness/model/department/BusinessDepartment.java
@@ -34,13 +34,13 @@ import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 import javax.persistence.Transient;
+import org.mxchange.jcontacts.model.contact.Contact;
+import org.mxchange.jcontacts.model.contact.UserContact;
 import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
 import org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData;
 import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOffice;
 import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOffices;
 import org.mxchange.jcontactsbusiness.model.branchoffice.BusinessBranchOffice;
-import org.mxchange.jcontactsbusiness.model.employee.BusinessEmployee;
-import org.mxchange.jcontactsbusiness.model.employee.Employable;
 import org.mxchange.jcontactsbusiness.model.headquarter.BusinessHeadquarter;
 import org.mxchange.jcontactsbusiness.model.headquarter.Headquarter;
 import org.mxchange.jcontactsbusiness.model.headquarter.Headquarters;
@@ -121,11 +121,11 @@ public class BusinessDepartment implements Department {
 	private Long departmentId;
 
 	/**
-	 * Department lead employee
+	 * Department lead contact data
 	 */
 	@JoinColumn (name = "department_lead_id")
-	@OneToOne (targetEntity = BusinessEmployee.class, cascade = CascadeType.REFRESH)
-	private Employable departmentLead;
+	@OneToOne (targetEntity = UserContact.class, cascade = CascadeType.REFRESH)
+	private Contact departmentLead;
 
 	/**
 	 * User owner instance
@@ -217,6 +217,8 @@ public class BusinessDepartment implements Department {
 			return false;
 		} else if (!Objects.equals(this.getDepartmentId(), department.getDepartmentId())) {
 			return false;
+		} else if (!Objects.equals(this.getDepartmentLead(), department.getDepartmentLead())) {
+			return false;
 		} else if (!Objects.equals(this.getDepartmentUserOwner(), department.getDepartmentUserOwner())) {
 			return false;
 		}
@@ -299,12 +301,12 @@ public class BusinessDepartment implements Department {
 	}
 
 	@Override
-	public Employable getDepartmentLead () {
+	public Contact getDepartmentLead () {
 		return this.departmentLead;
 	}
 
 	@Override
-	public void setDepartmentLead (final Employable departmentLead) {
+	public void setDepartmentLead (final Contact departmentLead) {
 		this.departmentLead = departmentLead;
 	}
 
@@ -327,6 +329,7 @@ public class BusinessDepartment implements Department {
 		hash = 53 * hash + Objects.hashCode(this.getDepartmentHeadquarter());
 		hash = 53 * hash + Objects.hashCode(this.getDepartmentId());
 		hash = 53 * hash + Objects.hashCode(this.getDepartmentI18nKey());
+		hash = 53 * hash + Objects.hashCode(this.getDepartmentLead());
 		hash = 53 * hash + Objects.hashCode(this.getDepartmentUserOwner());
 
 		return hash;
diff --git a/src/org/mxchange/jcontactsbusiness/model/department/Department.java b/src/org/mxchange/jcontactsbusiness/model/department/Department.java
index dcfa260..59fb679 100644
--- a/src/org/mxchange/jcontactsbusiness/model/department/Department.java
+++ b/src/org/mxchange/jcontactsbusiness/model/department/Department.java
@@ -18,9 +18,9 @@ package org.mxchange.jcontactsbusiness.model.department;
 
 import java.io.Serializable;
 import java.util.Date;
+import org.mxchange.jcontacts.model.contact.Contact;
 import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
 import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOffice;
-import org.mxchange.jcontactsbusiness.model.employee.Employable;
 import org.mxchange.jcontactsbusiness.model.headquarter.Headquarter;
 import org.mxchange.jusercore.model.user.User;
 
@@ -88,18 +88,18 @@ public interface Department extends Comparable<Department>, Serializable {
 	void setDepartmentId (final Long departmentId);
 
 	/**
-	 * Getter for department lead employee
+	 * Getter for department lead contact
 	 * <p>
-	 * @return Department lead employee
+	 * @return Department lead contact
 	 */
-	Employable getDepartmentLead ();
+	Contact getDepartmentLead ();
 
 	/**
-	 * Setter for department lead employee
+	 * Setter for department lead contact
 	 * <p>
-	 * @param departmentLead Department lead employee
+	 * @param departmentLead Department lead contact
 	 */
-	void setDepartmentLead (final Employable departmentLead);
+	void setDepartmentLead (final Contact departmentLead);
 
 	/**
 	 * Getter for department i18n key
-- 
2.39.5