From 18340b6bddef42b469993f285dc8cf1d2b9cc2f1 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 --- .../PizzaAdminContactWebRequestBean.java | 92 +++++++++++++++++-- ...PizzaAdminContactWebRequestController.java | 10 +- 2 files changed, 93 insertions(+), 9 deletions(-) diff --git a/src/java/org/mxchange/pizzaapplication/beans/contact/PizzaAdminContactWebRequestBean.java b/src/java/org/mxchange/pizzaapplication/beans/contact/PizzaAdminContactWebRequestBean.java index bbbc007a..5a53d610 100644 --- a/src/java/org/mxchange/pizzaapplication/beans/contact/PizzaAdminContactWebRequestBean.java +++ b/src/java/org/mxchange/pizzaapplication/beans/contact/PizzaAdminContactWebRequestBean.java @@ -18,6 +18,7 @@ package org.mxchange.pizzaapplication.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; @@ -35,8 +36,10 @@ 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.AdminAddedContactEvent; +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; @@ -242,6 +245,54 @@ public class PizzaAdminContactWebRequestBean implements PizzaAdminContactWebRequ } } + @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(); + + // 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)); + + // Return outcome + return "admin_list_contact"; //NOI18N + } + @Override public List allContacts () { return this.contactController.allContacts(); @@ -280,7 +331,7 @@ public class PizzaAdminContactWebRequestBean implements PizzaAdminContactWebRequ @Override public void copyContactToController (final Contact contact) { // Log message - System.out.println(MessageFormat.format("AdminContactController::copyContactToController(): contact={0} - CALLED!", contact)); //NOI18N + //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("AdminContactController::copyContactToController(): contact={0} - CALLED!", contact)); //NOI18N // The contact instance must be valid if (null == contact) { @@ -335,14 +386,11 @@ public class PizzaAdminContactWebRequestBean implements PizzaAdminContactWebRequ } // Log message - System.out.println("AdminContactController::copyContactToController(): EXIT!"); //NOI18N + //* NOISY-DEBUG: */ System.out.println("AdminContactController::copyContactToController(): EXIT!"); //NOI18N } @Override public Contact createContactInstance () { - // User message - //this.getLogger().logTrace("createContactInstance: CALLED!"); - // Generate phone number DialableLandLineNumber phone = new LandLineNumber(this.getPhoneCountry(), this.getPhoneAreaCode(), this.getPhoneNumber()); DialableCellphoneNumber cellphone = new CellphoneNumber(this.getCellphoneCarrier(), this.getCellphoneNumber()); @@ -422,9 +470,6 @@ public class PizzaAdminContactWebRequestBean implements PizzaAdminContactWebRequ contact.setContactCellphoneNumber(cellphone); } - // Trace message - //this.getLogger().logTrace(MessageFormat.format("createContactInstance: localContact={0} - EXIT!", localContact)); - // Return it return contact; } @@ -702,6 +747,37 @@ public class PizzaAdminContactWebRequestBean implements PizzaAdminContactWebRequ 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/pizzaapplication/beans/contact/PizzaAdminContactWebRequestController.java b/src/java/org/mxchange/pizzaapplication/beans/contact/PizzaAdminContactWebRequestController.java index e22b92de..8fb5577f 100644 --- a/src/java/org/mxchange/pizzaapplication/beans/contact/PizzaAdminContactWebRequestController.java +++ b/src/java/org/mxchange/pizzaapplication/beans/contact/PizzaAdminContactWebRequestController.java @@ -31,12 +31,20 @@ import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; */ public interface PizzaAdminContactWebRequestController 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(); + List allContacts (); /** * Checks whether there are contacts. -- 2.39.5