From f8c60a9d50ebfe3c4f12c5257d090fc8867a23ad Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Mon, 11 May 2020 02:48:27 +0200 Subject: [PATCH] Please cherry-pick: - departments, headquarters and branch offices cannot have a relation to employees as employess have a relation already to them. So if comparison of those entities come, this ends up in an endless loop with a stack overflow. - the fix here is a bit simple and also a bit complex: relate those 3 entities to contacts (jcontacts-core.jar) and look in all employees related to the department, headquarter or branch office who have an equal contact record MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- ...inancialsAdminBranchOfficeSessionBean.java | 19 +++++++++++++++++++ .../FinancialsAdminDepartmentSessionBean.java | 10 +++++----- ...FinancialsAdminHeadquarterSessionBean.java | 10 ++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsAdminBranchOfficeSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsAdminBranchOfficeSessionBean.java index 8be5c1d..2bf35bc 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsAdminBranchOfficeSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsAdminBranchOfficeSessionBean.java @@ -21,6 +21,7 @@ import java.util.Date; import java.util.List; import javax.ejb.EJB; import javax.ejb.Stateless; +import org.mxchange.jcontacts.model.contact.Contact; import org.mxchange.jcontactsbusiness.exceptions.branchoffice.BranchOfficeAlreadyAddedException; import org.mxchange.jcontactsbusiness.exceptions.branchoffice.BranchOfficeNotFoundException; import org.mxchange.jcontactsbusiness.model.basicdata.BasicData; @@ -76,6 +77,24 @@ public class FinancialsAdminBranchOfficeSessionBean extends BaseFinancialsEnterp // Add created timestamp branchOffice.setBranchEntryCreated(new Date()); + // Is contact employee set? + if (branchOffice.getBranchContactEmployee() instanceof Contact) { + // Get managed lead contact + final Contact managedContact = this.createManaged(branchOffice.getBranchContactEmployee()); + + // Set it back + branchOffice.setBranchContactEmployee(managedContact); + } + + // Is owner employee set? + if (branchOffice.getBranchOwnerEmployee() instanceof Contact) { + // Get managed lead contact + final Contact managedContact = this.createManaged(branchOffice.getBranchOwnerEmployee()); + + // Set it back + branchOffice.setBranchOwnerEmployee(managedContact); + } + // Is user instance set? if (branchOffice.getBranchCompany() instanceof BasicData) { // Get managed instance back diff --git a/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsAdminDepartmentSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsAdminDepartmentSessionBean.java index ef70d30..ac304eb 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsAdminDepartmentSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsAdminDepartmentSessionBean.java @@ -21,11 +21,11 @@ import java.util.Date; import java.util.List; import javax.ejb.EJB; import javax.ejb.Stateless; +import org.mxchange.jcontacts.model.contact.Contact; import org.mxchange.jcontactsbusiness.exceptions.department.DepartmentAlreadyAddedException; import org.mxchange.jcontactsbusiness.exceptions.department.DepartmentNotFoundException; 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.jfinancials.enterprise.BaseFinancialsEnterpriseBean; import org.mxchange.jusercore.model.user.User; @@ -117,12 +117,12 @@ public class FinancialsAdminDepartmentSessionBean extends BaseFinancialsEnterpri } // Is lead employee set? - if (department.getDepartmentLead() instanceof Employable) { - // Get managed lead employee - final Employable managedEmployee = this.createManaged(department.getDepartmentLead()); + if (department.getDepartmentLead() instanceof Contact) { + // Get managed lead contact + final Contact managedContact = this.createManaged(department.getDepartmentLead()); // Set it back - department.setDepartmentLead(managedEmployee); + department.setDepartmentLead(managedContact); } // Is "owning" user set? diff --git a/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsAdminHeadquarterSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsAdminHeadquarterSessionBean.java index 4fdb4d1..55c9d7e 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsAdminHeadquarterSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsAdminHeadquarterSessionBean.java @@ -21,6 +21,7 @@ import java.util.Date; import java.util.List; import javax.ejb.EJB; import javax.ejb.Stateless; +import org.mxchange.jcontacts.model.contact.Contact; import org.mxchange.jcontactsbusiness.exceptions.headquarter.HeadquarterAlreadyAddedException; import org.mxchange.jcontactsbusiness.model.opening_time.OpeningTime; import org.mxchange.jcountry.model.data.Country; @@ -74,6 +75,15 @@ public class FinancialsAdminHeadquarterSessionBean extends BaseFinancialsEnterpr // Add created timestamp headquarter.setHeadquarterEntryCreated(new Date()); + // Is contact employee set? + if (headquarter.getHeadquarterContactEmployee() instanceof Contact) { + // Get managed lead contact + final Contact managedContact = this.createManaged(headquarter.getHeadquarterContactEmployee()); + + // Set it back + headquarter.setHeadquarterContactEmployee(managedContact); + } + // Is user instance set? if (headquarter.getHeadquarterUserOwner() instanceof User) { // Get managed instance back -- 2.39.5