From: Roland Häder Date: Thu, 11 Aug 2016 08:02:39 +0000 (+0200) Subject: Please cherry-pick: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=24d871137c236e73f72f73381b264c07253618a7;p=addressbook-mailer-ejb.git Please cherry-pick: - maybe implemented unlinkCellphoneDataFromContact() as this may not work by just unsetting (null) the instance Signed-off-by: Roland Häder --- diff --git a/src/java/org/mxchange/jcontacts/phone/AddressbookAdminContactPhoneSessionBean.java b/src/java/org/mxchange/jcontacts/phone/AddressbookAdminContactPhoneSessionBean.java index bb50f62..6d8b814 100644 --- a/src/java/org/mxchange/jcontacts/phone/AddressbookAdminContactPhoneSessionBean.java +++ b/src/java/org/mxchange/jcontacts/phone/AddressbookAdminContactPhoneSessionBean.java @@ -16,15 +16,22 @@ */ package org.mxchange.jcontacts.phone; -import javax.ejb.Stateless; import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; +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; /** * A session EJB for administrative contact's phone number purposes *

* @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 AddressbookAdminContactPhoneSessionBean extends BaseAddressbookDatabaseBean implements AdminContactsPhoneSessionBeanRemote { /** @@ -32,4 +39,52 @@ public class AddressbookAdminContactPhoneSessionBean extends BaseAddressbookData */ 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; + } + }