]> git.mxchange.org Git - addressbook-core.git/commitdiff
Please cherry-pick:
authorRoland Häder <roland@mxchange.org>
Mon, 22 Aug 2016 10:56:42 +0000 (12:56 +0200)
committerRoland Häder <roland@mxchange.org>
Fri, 9 Jun 2017 19:33:14 +0000 (21:33 +0200)
- fetch entity first with getReference(), then make it detached (maybe right?), then merge it
- added missing javadoc reference (URL)

Signed-off-by: Roland Häder <roland@mxchange.org>
lib/nblibraries.properties
src/org/mxchange/addressbook/database/BaseAddressbookDatabaseBean.java

index 09266ab51ba16c77f3b822de555a34cb3e59db75..f508429b10ef4dcd1fe691a451f9b0defe383649 100644 (file)
@@ -9,4 +9,6 @@ libs.javaee-api-7.0.prop-maven-dependencies=javax:javaee-api:7.0:jar
 libs.jpa20-persistence.classpath=\
     ${base}/jpa20-persistence/javax.persistence_2.1.0.v201304241213.jar
 libs.jpa20-persistence.displayName=Persistence (JPA 2.1)
+libs.jpa20-persistence.javadoc=\
+    https://docs.oracle.com/javaee/7/api/
 libs.jpa20-persistence.prop-maven-dependencies=org.eclipse.persistence:javax.persistence:2.1.0:jar
index 3c951a810197612446fe1158cf9851f833ef2e90..3963d9be08e9f78ec944bf0c73739fd4497d4b53 100644 (file)
@@ -29,8 +29,11 @@ import org.mxchange.jcoreee.database.BaseDatabaseBean;
 import org.mxchange.jmailee.model.delivery.wrapper.EmailDeliveryWrapper;
 import org.mxchange.jmailee.model.delivery.wrapper.WrapableEmailDelivery;
 import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
+import org.mxchange.jphone.phonenumbers.fax.FaxNumber;
 import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
+import org.mxchange.jphone.phonenumbers.landline.LandLineNumber;
 import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber;
+import org.mxchange.jphone.phonenumbers.mobile.MobileNumber;
 import org.mxchange.jphone.utils.PhoneUtils;
 import org.mxchange.jusercore.model.user.LoginUser;
 import org.mxchange.jusercore.model.user.User;
@@ -76,8 +79,11 @@ public abstract class BaseAddressbookDatabaseBean extends BaseDatabaseBean {
 
                // Is contact cellphone set?
                if (contact.getContactMobileNumber() instanceof DialableMobileNumber) {
-                       // Copy cellphone number
-                       contact.setContactMobileNumber(this.getDetached(contact.getContactMobileNumber(), contact.getContactMobileNumber()));
+                       // Fetch it from entity manager
+                       DialableMobileNumber fetchedNumber = this.getEntityManager().getReference(MobileNumber.class, contact.getContactMobileNumber().getPhoneId());
+
+                       // Copy mobile number
+                       contact.setContactMobileNumber(this.getDetached(contact.getContactMobileNumber(), fetchedNumber));
                }
 
                // Debug message
@@ -85,8 +91,11 @@ public abstract class BaseAddressbookDatabaseBean extends BaseDatabaseBean {
 
                // Is the land-line number set?
                if (contact.getContactLandLineNumber() instanceof DialableLandLineNumber) {
+                       // Fetch it from entity manager
+                       DialableLandLineNumber fetchedNumber = this.getEntityManager().getReference(LandLineNumber.class, contact.getContactLandLineNumber().getPhoneId());
+
                        // Copy land-line number
-                       contact.setContactLandLineNumber(this.getDetached(contact.getContactLandLineNumber(), contact.getContactLandLineNumber()));
+                       contact.setContactLandLineNumber(this.getDetached(contact.getContactLandLineNumber(), fetchedNumber));
                }
 
                // Debug message
@@ -94,8 +103,11 @@ public abstract class BaseAddressbookDatabaseBean extends BaseDatabaseBean {
 
                // Is the fax number set?
                if (contact.getContactFaxNumber() instanceof DialableFaxNumber) {
+                       // Fetch it from entity manager
+                       DialableFaxNumber fetchedNumber = this.getEntityManager().getReference(FaxNumber.class, contact.getContactFaxNumber().getPhoneId());
+
                        // Copy fax number
-                       contact.setContactFaxNumber(this.getDetached(contact.getContactFaxNumber(), contact.getContactFaxNumber()));
+                       contact.setContactFaxNumber(this.getDetached(contact.getContactFaxNumber(), fetchedNumber));
                }
 
                // Trace message
@@ -172,6 +184,9 @@ public abstract class BaseAddressbookDatabaseBean extends BaseDatabaseBean {
                if (null == mobileNumber) {
                        // Throw NPE
                        throw new NullPointerException("mobileNumber is null"); //NOI18N
+               } else if (null == fetchedNumber) {
+                       // Throw NPE again
+                       throw new NullPointerException("fetchedNumber is null"); //NOI18N
                } else if (fetchedNumber.getPhoneId() == null) {
                        // ..and again
                        throw new NullPointerException("fetchedNumber.phoneId is null"); //NOI18N
@@ -186,15 +201,13 @@ public abstract class BaseAddressbookDatabaseBean extends BaseDatabaseBean {
                // Debug message
                this.getLoggerBeanLocal().logDebug(MessageFormat.format("getDetached: foundNumber={0}", foundNumber)); //NOI18N
 
-               // Default is null
-               DialableMobileNumber detachedNumber = null;
+               // Default is fetched number
+               DialableMobileNumber detachedNumber = fetchedNumber;
 
                // Is there a difference?
                if (!PhoneUtils.isSameMobileNumber(mobileNumber, fetchedNumber)) {
                        // Merge this entry
                        detachedNumber = this.getEntityManager().merge(foundNumber);
-
-                       // Copy all
                }
 
                // Trace message