]> git.mxchange.org Git - pizzaservice-war.git/commitdiff
Continued a bit:
authorRoland Häder <roland@mxchange.org>
Fri, 22 Apr 2016 07:52:57 +0000 (09:52 +0200)
committerRoland Haeder <roland@mxchange.org>
Sat, 23 Apr 2016 11:05:24 +0000 (13:05 +0200)
- added observer method afterAdminUpdatedContactDataEvent() to update contact and email lists
- no contact list in admin controller as the same exists in general controller
- imports cleaned up

Signed-off-by: Roland Häder <roland@mxchange.org>
src/java/org/mxchange/pizzaapplication/beans/contact/PizzaAdminContactWebRequestBean.java
src/java/org/mxchange/pizzaapplication/beans/contact/PizzaContactWebSessionBean.java
src/java/org/mxchange/pizzaapplication/beans/contact/PizzaContactWebSessionController.java

index 8e479c2c0d5d3e7373d669b14eb342bcf2dfec65..d9857c7ab09a1a33edd0b2c3b71cf71855c9ac1d 100644 (file)
@@ -239,11 +239,8 @@ public class PizzaAdminContactWebRequestBean implements PizzaAdminContactWebRequ
                // Call EJB for updating contact data
                Contact updatedContact = this.contactBean.updateContactPersonalData(contact);
 
-               // Update list
-               this.updateList(updatedContact);
-
                // Fire event
-               this.updatedContactDataEvent.fire(new AdminContactUpdatedEvent(updatedContact));
+               this.updatedContactEvent.fire(new AdminContactUpdatedEvent(updatedContact));
 
                // Return to contact list (for now)
                return "admin_list_contact"; //NOI18N
index 5e4338f195f190f7b0807966009df0f4e943ffbd..2ca7817a8ea0d4f9be9d3a059c622a00a17e6d37 100644 (file)
@@ -34,6 +34,7 @@ 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.events.contact.update.AdminUpdatedContactEvent;
 import org.mxchange.jcontacts.exceptions.ContactNotFoundException;
 import org.mxchange.jcountry.data.Country;
 import org.mxchange.jphone.phonenumbers.cellphone.CellphoneNumber;
@@ -209,6 +210,52 @@ public class PizzaContactWebSessionBean implements PizzaContactWebSessionControl
                this.emailAddressList.add(contactEmailAddress);
        }
 
+       @Override
+       public void afterAdminUpdatedContactDataEvent (@Observes final AdminUpdatedContactEvent event) {
+               // Trace message
+               System.out.println(MessageFormat.format("ContactWebBean:afterAdminUpdatedContactDataEvent: event={0} - CALLED!", event)); //NOI18N
+
+               // event should not be null
+               if (null == event) {
+                       // Throw NPE
+                       throw new NullPointerException("event is null"); //NOI18N
+               } else if (event.getUpdatedContact()== null) {
+                       // Throw NPE again
+                       throw new NullPointerException("event.user is null"); //NOI18N
+               } else if (event.getUpdatedContact().getContactId() == null) {
+                       // userId is null
+                       throw new NullPointerException("event.user.userId is null"); //NOI18N
+               } else if (event.getUpdatedContact().getContactId() < 1) {
+                       // Not avalid id
+                       throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getUpdatedContact(), event.getUpdatedContact().getContactId())); //NOI18N
+               }
+
+               // Get iterator from list
+               Iterator<Contact> iterator = this.contactList.iterator();
+
+               // "Walk" through all entries
+               while (iterator.hasNext()) {
+                       // Get next element
+                       Contact next = iterator.next();
+
+                       // Is id number the same?
+                       if (Objects.equals(event.getUpdatedContact().getContactId(), next.getContactId())) {
+                               // Found entry, so remove it and abort
+                               this.contactList.remove(next);
+
+                               // Remove also email from list
+                               this.emailAddressList.remove(next.getContactEmailAddress());
+                               break;
+                       }
+               }
+
+               // Add contact to list
+               this.contactList.add(event.getUpdatedContact());
+
+               // Add email address to list
+               this.emailAddressList.add(event.getUpdatedContact().getContactEmailAddress());
+       }
+
        @Override
        public void afterRegistrationEvent (final @Observes UserRegisteredEvent event) {
                // Trace message
@@ -393,6 +440,7 @@ public class PizzaContactWebSessionBean implements PizzaContactWebSessionControl
 
                // Trace message
                //this.getLogger().logTrace(MessageFormat.format("createContactInstance: localContact={0} - EXIT!", localContact));
+
                // Return it
                return localContact;
        }
index 44aa596f2de512b72c0c7545426423e873b889cd..6316691d99e6ed504f61040b1ea775d78f058f25 100644 (file)
@@ -20,6 +20,7 @@ import java.io.Serializable;
 import java.util.Date;
 import org.mxchange.jcontacts.contact.Contact;
 import org.mxchange.jcontacts.contact.gender.Gender;
+import org.mxchange.jcontacts.events.contact.update.AdminUpdatedContactEvent;
 import org.mxchange.jcontacts.exceptions.ContactNotFoundException;
 import org.mxchange.jcountry.data.Country;
 import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider;
@@ -76,6 +77,13 @@ public interface PizzaContactWebSessionController extends Serializable {
         */
        void afterRegistrationEvent (final UserRegisteredEvent event);
 
+       /**
+        * Event observer for updated contact data by admins
+        * <p>
+        * @param event Updated contact data event
+        */
+       void afterAdminUpdatedContactDataEvent (final AdminUpdatedContactEvent event);
+
        /**
         * Event observer for logged-in user
         * <p>