From ad2c957974722af7baaeaf802e46964d57674dda Mon Sep 17 00:00:00 2001
From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org>
Date: Mon, 26 Jun 2017 21:26:23 +0200
Subject: [PATCH] Please cherry-pick: - had moved copyAll() to new utility
 classes which is a much better place for   them. Per EJB standards, no
 "complex" methods in POJOs/entity classes which   makes sense. :-)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Signed-off-by: Roland Häder <roland@mxchange.org>
---
 .../AddressbookAdminPhoneSessionBean.java     |  9 ++--
 .../user/AddressbookUserSessionBean.java      | 54 +++++++++++++++++--
 2 files changed, 57 insertions(+), 6 deletions(-)

diff --git a/src/java/org/mxchange/jphone/phonenumbers/phone/AddressbookAdminPhoneSessionBean.java b/src/java/org/mxchange/jphone/phonenumbers/phone/AddressbookAdminPhoneSessionBean.java
index 2ee461b..1d63242 100644
--- a/src/java/org/mxchange/jphone/phonenumbers/phone/AddressbookAdminPhoneSessionBean.java
+++ b/src/java/org/mxchange/jphone/phonenumbers/phone/AddressbookAdminPhoneSessionBean.java
@@ -21,8 +21,11 @@ import java.util.GregorianCalendar;
 import javax.ejb.Stateless;
 import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean;
 import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
+import org.mxchange.jphone.phonenumbers.fax.FaxNumbers;
 import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
+import org.mxchange.jphone.phonenumbers.landline.LandLineNumbers;
 import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber;
+import org.mxchange.jphone.phonenumbers.mobile.MobileNumbers;
 
 /**
  * An EJB for administrative phone purposes
@@ -231,7 +234,7 @@ public class AddressbookAdminPhoneSessionBean extends BaseAddressbookDatabaseBea
 		this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.updateFaxData: managedNumber.phoneId={1}", this.getClass().getSimpleName(), managedNumber.getPhoneId())); //NOI18N
 
 		// Set updated timestamp
-		managedNumber.copyAll(faxNumber);
+		FaxNumbers.copyAll(faxNumber, managedNumber);
 		managedNumber.setPhoneEntryUpdated(new GregorianCalendar());
 
 		// Trace message
@@ -289,7 +292,7 @@ public class AddressbookAdminPhoneSessionBean extends BaseAddressbookDatabaseBea
 		this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.updateLandLineData: managedNumber.phoneId={1}", this.getClass().getSimpleName(), managedNumber.getPhoneId())); //NOI18N
 
 		// Set updated timestamp
-		managedNumber.copyAll(landLineNumber);
+		LandLineNumbers.copyAll(landLineNumber, managedNumber);
 		managedNumber.setPhoneEntryUpdated(new GregorianCalendar());
 
 		// Trace message
@@ -341,7 +344,7 @@ public class AddressbookAdminPhoneSessionBean extends BaseAddressbookDatabaseBea
 		this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.updateMobileData: managedNumber.phoneId={1}", this.getClass().getSimpleName(), managedNumber.getPhoneId())); //NOI18N
 
 		// Set updated timestamp
-		managedNumber.copyAll(mobileNumber);
+		MobileNumbers.copyAll(mobileNumber, managedNumber);
 		managedNumber.setPhoneEntryUpdated(new GregorianCalendar());
 
 		// Trace message
diff --git a/src/java/org/mxchange/jusercore/model/user/AddressbookUserSessionBean.java b/src/java/org/mxchange/jusercore/model/user/AddressbookUserSessionBean.java
index 33db348..6398fad 100644
--- a/src/java/org/mxchange/jusercore/model/user/AddressbookUserSessionBean.java
+++ b/src/java/org/mxchange/jusercore/model/user/AddressbookUserSessionBean.java
@@ -32,8 +32,11 @@ import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean;
 import org.mxchange.jcontacts.contact.Contact;
 import org.mxchange.jcontacts.contact.ContactUtils;
 import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
+import org.mxchange.jphone.phonenumbers.fax.FaxNumbers;
 import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
+import org.mxchange.jphone.phonenumbers.landline.LandLineNumbers;
 import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber;
+import org.mxchange.jphone.phonenumbers.mobile.MobileNumbers;
 import org.mxchange.jusercore.exceptions.UserNotFoundException;
 import org.mxchange.jusercore.exceptions.UserStatusConfirmedException;
 import org.mxchange.jusercore.exceptions.UserStatusLockedException;
@@ -737,7 +740,22 @@ public class AddressbookUserSessionBean extends BaseAddressbookDatabaseBean impl
 		// Is there a  mobile instance set?
 		if (mobileNumber instanceof DialableMobileNumber) {
 			// Debug message
-			this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: mobileNumber.phoneId={0} is being updated ...", mobileNumber.getPhoneId())); //NOI18N
+			this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: mobile.phoneId={0} is being updated ...", mobileNumber.getPhoneId())); //NOI18N
+
+			// Then find it, too
+			DialableMobileNumber foundMobile = this.getEntityManager().find(mobileNumber.getClass(), mobileNumber.getPhoneId());
+
+			// Should be there
+			assert (foundMobile instanceof DialableMobileNumber) : MessageFormat.format("Mobile number with id {0} not found but should be.", foundMobile.getPhoneId()); //NOI18N
+
+			// Then merge it, too
+			DialableMobileNumber managedMobile = this.getEntityManager().merge(foundMobile);
+
+			// Should be there
+			assert (managedMobile instanceof DialableMobileNumber) : MessageFormat.format("Mobile number with id {0} not found but should be.", managedMobile.getPhoneId()); //NOI18N
+
+			// Copy all
+			MobileNumbers.copyAll(managedUser.getUserContact().getContactMobileNumber(), managedMobile);
 
 			// Set it back
 			managedContact.setContactMobileNumber(this.getManaged(mobileNumber, mobileNumber));
@@ -751,8 +769,23 @@ public class AddressbookUserSessionBean extends BaseAddressbookDatabaseBean impl
 			// Debug message
 			this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: faxNumber.phoneId={0} is being updated ...", faxNumber.getPhoneId())); //NOI18N
 
+			// Then find it, too
+			DialableFaxNumber foundFax = this.getEntityManager().find(faxNumber.getClass(), faxNumber.getPhoneId());
+
+			// Should be there
+			assert (foundFax instanceof DialableFaxNumber) : MessageFormat.format("Fax number with id {0} not found but should be.", foundFax.getPhoneId()); //NOI18N
+
+			// Then merge it, too
+			DialableFaxNumber managedFax = this.getEntityManager().merge(foundFax);
+
+			// Should be there
+			assert (managedFax instanceof DialableFaxNumber) : MessageFormat.format("Fax number with id {0} not found but should be.", managedFax.getPhoneId()); //NOI18N
+
+			// Copy all
+			FaxNumbers.copyAll(managedUser.getUserContact().getContactFaxNumber(), managedFax);
+
 			// Set it back
-			managedContact.setContactFaxNumber(this.getManaged(faxNumber, faxNumber));
+			managedContact.setContactFaxNumber(managedFax);
 		}
 
 		// Get mobile instance
@@ -763,8 +796,23 @@ public class AddressbookUserSessionBean extends BaseAddressbookDatabaseBean impl
 			// Debug message
 			this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: landLineNumber.phoneId={0} is being updated ...", landLineNumber.getPhoneId())); //NOI18N
 
+			// Then find it, too
+			DialableLandLineNumber foundLandLine = this.getEntityManager().find(landLineNumber.getClass(), landLineNumber.getPhoneId());
+
+			// Should be there
+			assert (foundLandLine instanceof DialableLandLineNumber) : MessageFormat.format("Land line number with id {0} not found but should be.", foundLandLine.getPhoneId()); //NOI18N
+
+			// Then merge it, too
+			DialableLandLineNumber managedLandLine = this.getEntityManager().merge(foundLandLine);
+
+			// Should be there
+			assert (managedLandLine instanceof DialableLandLineNumber) : MessageFormat.format("Land line number with id {0} not found but should be.", managedLandLine.getPhoneId()); //NOI18N
+
+			// Copy all
+			LandLineNumbers.copyAll(managedUser.getUserContact().getContactLandLineNumber(), managedLandLine);
+
 			// Set it back
-			managedContact.setContactLandLineNumber(this.getManaged(landLineNumber, landLineNumber));
+			managedContact.setContactLandLineNumber(managedLandLine);
 		}
 
 		// Trace message
-- 
2.39.5