]> git.mxchange.org Git - jjobs-war.git/blobdiff - src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebSessionBean.java
removed double //NOI18N (please cherry-pick)
[jjobs-war.git] / src / java / org / mxchange / jjobs / beans / contact / phone / JobsContactPhoneWebSessionBean.java
index 342a3e210f5984294ff90c2b360cc9a1f48c455a..4cd5abce5748661c9f8a796279b42269fd7ec00f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 Roland Haeder
+ * Copyright (C) 2016 Cho-Time GmbH
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
  */
 package org.mxchange.jjobs.beans.contact.phone;
 
+import de.chotime.landingpage.beans.BaseLandingController;
+import de.chotime.landingpage.beans.contact.LandingContactWebSessionController;
+import de.chotime.landingpage.beans.helper.LandingWebRequestController;
 import java.text.MessageFormat;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import javax.annotation.PostConstruct;
 import javax.enterprise.context.SessionScoped;
 import javax.enterprise.event.Observes;
-import javax.faces.view.facelets.FaceletException;
 import javax.inject.Inject;
 import javax.inject.Named;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import org.mxchange.jcontacts.contact.Contact;
+import org.mxchange.jcontacts.events.cellphone.unlinked.AdminUnlinkedCellphoneNumberEvent;
 import org.mxchange.jcontacts.events.contact.add.AdminAddedContactEvent;
 import org.mxchange.jcontacts.events.contact.update.AdminUpdatedContactEvent;
-import org.mxchange.jjobs.beans.BaseJobsController;
-import org.mxchange.jjobs.beans.contact.JobsContactWebSessionController;
-import org.mxchange.jjobs.beans.helper.JobsWebRequestController;
-import org.mxchange.jjobs.beans.phone.JobsAdminPhoneWebRequestController;
-import org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote;
+import org.mxchange.jphone.phonenumbers.DialableNumber;
+import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber;
 import org.mxchange.jusercore.events.user.add.AdminAddedUserEvent;
 
 /**
- * A general contact phone bean (controller)
+ * An administrative contact phone controller (bean)
  * <p>
- * @author Roland Haeder<roland@mxchange.org>
+ * @author Roland Haeder<rhaeder@cho-time.de>
  */
 @Named ("contactPhoneController")
 @SessionScoped
-public class JobsContactPhoneWebSessionBean extends BaseJobsController implements JobsContactPhoneWebSessionController {
+public class JobsContactPhoneWebSessionBean extends BaseLandingController implements JobsContactPhoneWebSessionController {
 
        /**
         * Serial number
         */
        private static final long serialVersionUID = 542_145_347_916L;
 
-       /**
-        * Administrative phone controller
-        */
-       @Inject
-       private JobsAdminPhoneWebRequestController adminPhoneController;
-
        /**
         * Admin helper instance
         */
        @Inject
-       private JobsWebRequestController beanHelper;
+       private LandingWebRequestController beanHelper;
 
        /**
         * General contact controller
         */
        @Inject
-       private JobsContactWebSessionController contactController;
-
-       /**
-        * "Cache" for contact lists, mostly only one is assigned. So this cache
-        * shouldn't grow beyond control.
-        */
-       private final Map<Long, List<Contact>> contacts;
+       private LandingContactWebSessionController contactController;
 
        /**
-        * Remote EJB for phone number (administrative)
+        * "Cache" for contact's cellphone, land-line and fax numbers. Currently one
+        * one per each type is supported. Maybe later this will change into a
+        * OneToMany relationship (one contact, many numbers).
         */
-       private PhoneSessionBeanRemote phoneBean;
+       private final Map<DialableNumber, List<Contact>> contacts;
 
        /**
         * Default constructor
         */
        public JobsContactPhoneWebSessionBean () {
-               // Try it
-               try {
-                       // Get initial context
-                       Context context = new InitialContext();
-
-                       // Try to lookup the beans
-                       this.phoneBean = (PhoneSessionBeanRemote) context.lookup("java:global/jlandingpage-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote"); //NOI18N
-               } catch (final NamingException e) {
-                       // Throw again
-                       throw new FaceletException(e);
-               }
-
                // Init lists/maps
                this.contacts = new HashMap<>(10);
        }
@@ -118,7 +92,7 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement
                        throw new NullPointerException("event.addedContact.contactId is null"); //NOI18N
                } else if (event.getAddedContact().getContactId() < 1) {
                        // Not valid
-                       throw new IllegalArgumentException(MessageFormat.format("event.addedContact.contactId={0} is not valid", event.getAddedContact().getContactId())); //NOI18N //NOI18N
+                       throw new IllegalArgumentException(MessageFormat.format("event.addedContact.contactId={0} is not valid", event.getAddedContact().getContactId())); //NOI18N
                }
 
                // Clear this bean
@@ -146,6 +120,30 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement
                this.clear();
        }
 
+       @Override
+       public void afterAdminUnlinkedCellphoneContactDataEvent (@Observes final AdminUnlinkedCellphoneNumberEvent event) {
+               // event should not be null
+               if (null == event) {
+                       // Throw NPE
+                       throw new NullPointerException("event is null"); //NOI18N
+               } else if (event.getUnlinkedCellphoneNumber() == null) {
+                       // Throw NPE again
+                       throw new NullPointerException("event.unlinkedCellphoneNumber is null"); //NOI18N
+               } else if (event.getUnlinkedCellphoneNumber().getPhoneId() == null) {
+                       // userId is null
+                       throw new NullPointerException("event.unlinkedCellphoneNumber.contactId is null"); //NOI18N
+               } else if (event.getUnlinkedCellphoneNumber().getPhoneId() < 1) {
+                       // Not avalid id
+                       throw new IllegalArgumentException(MessageFormat.format("contactId of contact={0} is not valid: {1}", event.getUnlinkedCellphoneNumber(), event.getUnlinkedCellphoneNumber().getPhoneId())); //NOI18N
+               }
+
+               // Remove it from list
+               this.contacts.remove(event.getUnlinkedCellphoneNumber());
+
+               // Clear all data
+               this.clear();
+       }
+
        @Override
        public void afterAdminUpdatedContactDataEvent (@Observes final AdminUpdatedContactEvent event) {
                // event should not be null
@@ -170,12 +168,12 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement
        @Override
        public List<Contact> allCellphoneContacts () {
                // Get id
-               Long phoneId = this.beanHelper.getCellPhoneNumber().getPhoneId();
+               DialableCellphoneNumber phone = this.beanHelper.getCellPhoneNumber();
 
                // Is cache there?
-               if (this.contacts.containsKey(phoneId)) {
+               if (this.contacts.containsKey(phone)) {
                        // Return cached version
-                       return this.contacts.get(phoneId);
+                       return this.contacts.get(phone);
                } else {
                        // Ask bean
                        List<Contact> list = new LinkedList<>();
@@ -190,20 +188,13 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement
                        }
 
                        // Store result in cache
-                       this.contacts.put(phoneId, list);
+                       this.contacts.put(phone, list);
 
                        // Return now-cached list
                        return list;
                }
        }
 
-       /**
-        * Post-initialization of this class
-        */
-       @PostConstruct
-       public void init () {
-       }
-
        /**
         * Clears this bean
         */