From bfeee5ecd8b603d18d30e4041bd520f5b873c5fc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Thu, 11 Aug 2016 10:02:39 +0200 Subject: [PATCH] Please cherry-pick: - maybe implemented unlinkCellphoneDataFromContact() as this may not work by just unsetting (null) the instance MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- .../PizzaAdminContactPhoneSessionBean.java | 57 ++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/src/java/org/mxchange/jcontacts/phone/PizzaAdminContactPhoneSessionBean.java b/src/java/org/mxchange/jcontacts/phone/PizzaAdminContactPhoneSessionBean.java index 3df4fbd..9123477 100644 --- a/src/java/org/mxchange/jcontacts/phone/PizzaAdminContactPhoneSessionBean.java +++ b/src/java/org/mxchange/jcontacts/phone/PizzaAdminContactPhoneSessionBean.java @@ -16,7 +16,14 @@ */ package org.mxchange.jcontacts.phone; +import java.text.MessageFormat; +import java.util.Objects; +import javax.ejb.EJB; import javax.ejb.Stateless; +import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jcontacts.contact.ContactSessionBeanRemote; +import org.mxchange.jphone.exceptions.CellphoneNotLinkedException; +import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; import org.mxchange.pizzaaplication.database.BasePizzaDatabaseBean; /** @@ -24,7 +31,7 @@ import org.mxchange.pizzaaplication.database.BasePizzaDatabaseBean; *

* @author Roland Haeder */ -@Stateless (name = "admincontactphone", description = "An administrative bean handling contact's phone data") +@Stateless (name = "adminContactPhone", description = "An administrative bean handling contact's phone data") public class PizzaAdminContactPhoneSessionBean extends BasePizzaDatabaseBean implements AdminContactsPhoneSessionBeanRemote { /** @@ -32,4 +39,52 @@ public class PizzaAdminContactPhoneSessionBean extends BasePizzaDatabaseBean imp */ private static final long serialVersionUID = 189_217_561_460_237_108L; + /** + * Contact EJB + */ + @EJB + private ContactSessionBeanRemote contactBean; + + @Override + public Contact unlinkCellphoneDataFromContact (final Contact contact, final DialableCellphoneNumber cellphoneNumber) throws CellphoneNotLinkedException { + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.unlinkCellphoneDataFromContact: contact={1},cellphoneNumber={2} - CALLED!", this.getClass().getSimpleName(), contact, cellphoneNumber)); //NOI18N + + // Is the contact set? + if (null == contact) { + // Throw NPE + throw new NullPointerException("contact is null"); //NOI18N + } else if (contact.getContactId() == null) { + // ... and throw again + throw new NullPointerException("contact.contactId is null"); //NOI18N + } else if (contact.getContactId() < 1) { + // Invalid id number + throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N + } else if (contact.getContactCellphoneNumber() == null) { + // Not set cell phone instance + throw new CellphoneNotLinkedException(cellphoneNumber); + } else if (contact.getContactCellphoneNumber().getPhoneId() == null) { + // Throw NPE again + throw new NullPointerException("contact.contactCellphoneNumber.phoneId is null"); //NOI18N + } else if (contact.getContactCellphoneNumber().getPhoneId() < 1) { + // Invalid id number + throw new IllegalArgumentException(MessageFormat.format("contact.contactCellphoneNumber.phoneId={0} is invalid.", contact.getContactCellphoneNumber().getPhoneId())); //NOI18N + } else if (!Objects.equals(cellphoneNumber.getPhoneId(), contact.getContactCellphoneNumber().getPhoneId())) { + // Not same object + throw new IllegalArgumentException(MessageFormat.format("contact.contactCellphoneNumber.phoneId={0} and cellphoneNumber.phoneId={1} are not the same.", contact.getContactCellphoneNumber().getPhoneId(), cellphoneNumber.getPhoneId())); //NOI18N + } + + // Remove it from contact + contact.setContactCellphoneNumber(null); + + // Update database + Contact updatedContact = this.contactBean.updateContactData(contact); + + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.unlinkCellphoneDataFromContact: updatedContact={1} - EXIT!", this.getClass().getSimpleName(), updatedContact)); //NOI18N + + // Return it + return updatedContact; + } + } -- 2.39.5