From 7abae57def5bdb50755032cd4679120960ef01f8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Wed, 27 Apr 2016 17:01:22 +0200 Subject: [PATCH] Continued with contacts: - added method addContact() - introduced isSameContactFound() which checks if the given contact can be found in a list. - this method can later be moved to ContactUtils to become generic. - commented out noisy System.out messages - removed no longer used logger messages MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- ...AddressbookAdminContactWebRequestBean.java | 152 +++++++++++++++++- ...sbookAdminContactWebRequestController.java | 30 ++++ 2 files changed, 177 insertions(+), 5 deletions(-) diff --git a/src/java/org/mxchange/addressbook/beans/contact/AddressbookAdminContactWebRequestBean.java b/src/java/org/mxchange/addressbook/beans/contact/AddressbookAdminContactWebRequestBean.java index 44a78a91..fadc833a 100644 --- a/src/java/org/mxchange/addressbook/beans/contact/AddressbookAdminContactWebRequestBean.java +++ b/src/java/org/mxchange/addressbook/beans/contact/AddressbookAdminContactWebRequestBean.java @@ -18,6 +18,7 @@ package org.mxchange.addressbook.beans.contact; import java.text.MessageFormat; import java.util.Date; +import java.util.Iterator; import java.util.List; import javax.annotation.PostConstruct; import javax.enterprise.context.RequestScoped; @@ -32,12 +33,20 @@ import javax.naming.NamingException; import org.mxchange.addressbook.beans.helper.AddressbookAdminWebRequestController; import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcontacts.contact.ContactSessionBeanRemote; +import org.mxchange.jcontacts.contact.UserContact; import org.mxchange.jcontacts.contact.gender.Gender; import org.mxchange.jcontacts.contact.utils.ContactUtils; +import org.mxchange.jcontacts.events.contact.add.AdminContactAddedEvent; import org.mxchange.jcontacts.events.contact.update.AdminContactUpdatedEvent; import org.mxchange.jcontacts.events.contact.update.AdminUpdatedContactEvent; import org.mxchange.jcontacts.exceptions.ContactAlreadyAddedException; import org.mxchange.jcountry.data.Country; +import org.mxchange.jphone.phonenumbers.cellphone.CellphoneNumber; +import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; +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.mobileprovider.MobileProvider; import org.mxchange.jusercore.events.user.add.AdminAddedUserEvent; @@ -232,6 +241,24 @@ public class AddressbookAdminContactWebRequestBean implements AddressbookAdminCo @Override public String addContact () { + // Are all minimum fields set? + if (this.getGender() == null) { + // Throw NPE + throw new NullPointerException("gender is null"); //NOI18N + } else if (this.getFirstName() == null) { + // Throw NPE + throw new NullPointerException("firstName is null"); //NOI18N + } else if (this.getFirstName().isEmpty()) { + // Empty string + throw new IllegalStateException("firstName is empty"); //NOI18N + } else if (this.getFamilyName() == null) { + // Throw NPE + throw new NullPointerException("familyName is null"); //NOI18N + } else if (this.getFamilyName().isEmpty()) { + // Empty string + throw new IllegalStateException("familyName is empty"); //NOI18N + } + // Create new contact instance Contact contact = this.createContactInstance(); @@ -256,9 +283,6 @@ public class AddressbookAdminContactWebRequestBean implements AddressbookAdminCo // Fire event this.addedContactEvent.fire(new AdminContactAddedEvent(updatedContact)); - // Clear this bean - this.clear(); - // Return outcome return "admin_list_contact"; //NOI18N } @@ -268,6 +292,39 @@ public class AddressbookAdminContactWebRequestBean implements AddressbookAdminCo return this.contactController.allContacts(); } + @Override + public String changeContactData () { + // Get contact instance + Contact contact = this.adminHelper.getContact(); + + // Default is not same contact + if (this.isSameContactFound(contact)) { + // Already registered + throw new FaceletException(new ContactAlreadyAddedException(contact)); + } + + // Init contact + Contact updatedContact; + + // Try to call EJB + try { + // Call EJB + updatedContact = this.contactBean.addContact(contact); + } catch (final ContactAlreadyAddedException ex) { + // Throw again + throw new FaceletException(ex); + } + + // Fire event + this.addedContactEvent.fire(new AdminContactAddedEvent(updatedContact)); + + // Clear this bean + this.clear(); + + // Return outcome + return "admin_list_contact"; //NOI18N + } + @Override public void copyContactToController (final Contact contact) { // The contact instance must be valid @@ -319,6 +376,29 @@ public class AddressbookAdminContactWebRequestBean implements AddressbookAdminCo // Get contact instance Contact contact = this.adminHelper.getContact(); + // Is the land-line number set? + if (contact.getContactLandLineNumber() instanceof DialableLandLineNumber) { + // .. land-line data + this.setLandLineId(contact.getContactLandLineNumber().getPhoneId()); + this.setPhoneAreaCode(contact.getContactLandLineNumber().getPhoneAreaCode()); + this.setPhoneCountry(contact.getContactLandLineNumber().getPhoneCountry()); + this.setPhoneNumber(contact.getContactLandLineNumber().getPhoneNumber()); + } + + // Log message + //* NOISY-DEBUG: */ System.out.println("AdminContactController::copyContactToController(): EXIT!"); //NOI18N + } + + @Override + public Contact createContactInstance () { + // Generate phone number + DialableLandLineNumber phone = new LandLineNumber(this.getPhoneCountry(), this.getPhoneAreaCode(), this.getPhoneNumber()); + DialableCellphoneNumber cellphone = new CellphoneNumber(this.getCellphoneCarrier(), this.getCellphoneNumber()); + DialableFaxNumber fax = new FaxNumber(this.getFaxCountry(), this.getFaxAreaCode(), this.getFaxNumber()); + + // Create new instance + Contact contact = new UserContact(this.getGender(), this.getFirstName(), this.getFamilyName()); + // Check if contact instance is in helper and valid if (null == contact) { // Throw NPE @@ -343,8 +423,8 @@ public class AddressbookAdminContactWebRequestBean implements AddressbookAdminCo // Clear bean this.clear(); - // Return to contact list (for now) - return "admin_list_contact"; //NOI18N + // Return it + return contact; } @Override @@ -586,6 +666,68 @@ public class AddressbookAdminContactWebRequestBean implements AddressbookAdminCo public void init () { } + /** + * Clears this bean + */ + private void clear () { + // Clear all data + // - personal data + this.setGender(Gender.UNKNOWN); + this.setFirstName(null); + this.setFamilyName(null); + this.setStreet(null); + this.setHouseNumber(null); + this.setZipCode(null); + this.setCity(null); + this.setCountry(null); + + // - contact data + this.setEmailAddress(null); + this.setPhoneCountry(null); + this.setPhoneAreaCode(null); + this.setPhoneNumber(null); + this.setCellphoneCarrier(null); + this.setCellphoneNumber(null); + this.setFaxCountry(null); + this.setFaxAreaCode(null); + this.setFaxNumber(null); + + // - other data + this.setBirthday(null); + this.setComment(null); + } + + /** + * Checks whether the given contact is found + *

+ * @param contact Contact inastance + * + * @return Wether contact has been found + */ + private boolean isSameContactFound (final Contact contact) { + // Default is not found + boolean IsFound = false; + + // Get iterator + Iterator iterator = this.allContacts().iterator(); + + // Loop through all + while (iterator.hasNext()) { + // Get next contact + Contact next = iterator.next(); + + // Is the same? + if (ContactUtils.isSameContact(contact, next)) { + // Yes, then abort loop + IsFound = false; + break; + } + } + + // Return status + return IsFound; + } + /** * Updates all data in contact instance. *

diff --git a/src/java/org/mxchange/addressbook/beans/contact/AddressbookAdminContactWebRequestController.java b/src/java/org/mxchange/addressbook/beans/contact/AddressbookAdminContactWebRequestController.java index 25fcfc53..4719ac8b 100644 --- a/src/java/org/mxchange/addressbook/beans/contact/AddressbookAdminContactWebRequestController.java +++ b/src/java/org/mxchange/addressbook/beans/contact/AddressbookAdminContactWebRequestController.java @@ -18,6 +18,7 @@ package org.mxchange.addressbook.beans.contact; import java.io.Serializable; import java.util.Date; +import java.util.List; import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcontacts.contact.gender.Gender; import org.mxchange.jcountry.data.Country; @@ -30,6 +31,35 @@ import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; */ public interface AddressbookAdminContactWebRequestController extends Serializable { + /** + * Adds contact data to database and redirects on success. If the contact is + * already found, a proper exception is thrown. + *

+ * @return Redirect outcome + */ + String addContact (); + + /** + * Returns a list of all found contacts + *

+ * @return A list of all contacts. + */ + List allContacts (); + + /** + * Checks whether there are contacts. + *

+ * @return Whether contacts are there + */ + boolean hasContacts (); + + /** + * Creates an instance from contact data + *

+ * @return New contact instance + */ + Contact createContactInstance (); + /** * Copies given contact's data to this controller *

-- 2.39.2