]> git.mxchange.org Git - addressbook-war.git/blobdiff - src/java/org/mxchange/addressbook/beans/mobileprovider/AddressbookAdminMobileProviderWebRequestBean.java
Please cherry-pick:
[addressbook-war.git] / src / java / org / mxchange / addressbook / beans / mobileprovider / AddressbookAdminMobileProviderWebRequestBean.java
index e3a3078570faa37108a7651c068eaa15085a8a1d..ea4f7736504bed80684cea4cb8e62a453a09dd15 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 Roland Haeder
+ * Copyright (C) 2016 - 2022 Free Software Foundation
  *
  * 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.addressbook.beans.mobileprovider;
 
-import java.util.Iterator;
-import java.util.List;
 import java.util.Objects;
+import javax.ejb.EJB;
 import javax.enterprise.context.RequestScoped;
 import javax.enterprise.event.Event;
 import javax.enterprise.inject.Any;
-import javax.faces.view.facelets.FaceletException;
+import javax.faces.FacesException;
+import javax.faces.application.FacesMessage;
 import javax.inject.Inject;
 import javax.inject.Named;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import org.mxchange.jcountry.data.Country;
-import org.mxchange.jphone.events.AdminAddedMobileProviderEvent;
-import org.mxchange.jphone.events.AdminMobileProviderAddedEvent;
-import org.mxchange.jphone.exceptions.MobileProviderAlreadyAddedException;
-import org.mxchange.jphone.phonenumbers.mobileprovider.AdminMobileProviderSingletonBeanRemote;
-import org.mxchange.jphone.phonenumbers.mobileprovider.CellphoneProvider;
-import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider;
+import org.mxchange.addressbook.beans.BaseAddressbookBean;
+import org.mxchange.addressbook.beans.mobileprovider.list.AddressbookMobileProviderListWebViewController;
+import org.mxchange.jcountry.model.data.Country;
+import org.mxchange.jphone.events.mobileprovider.added.AdminMobileProviderAddedEvent;
+import org.mxchange.jphone.events.mobileprovider.added.ObservableAdminMobileProviderAddedEvent;
+import org.mxchange.jphone.exceptions.mobileprovider.MobileProviderAlreadyAddedException;
+import org.mxchange.jphone.model.phonenumbers.mobileprovider.AdminMobileProviderSessionBeanRemote;
+import org.mxchange.jphone.model.phonenumbers.mobileprovider.CellphoneProvider;
+import org.mxchange.jphone.model.phonenumbers.mobileprovider.MobileProvider;
 
 /**
  * Administrative bean (controller) for mobile provider
  * <p>
- * @author Roland Haeder<roland@mxchange.org>
+ * @author Roland Hรคder<roland@mxchange.org>
  */
 @Named ("adminMobileProviderController")
 @RequestScoped
-public class AddressbookAdminMobileProviderWebRequestBean implements AddressbookAdminMobileProviderWebRequestController {
+public class AddressbookAdminMobileProviderWebRequestBean extends BaseAddressbookBean implements AddressbookAdminMobileProviderWebRequestController {
 
        /**
         * Serial number
@@ -53,20 +52,21 @@ public class AddressbookAdminMobileProviderWebRequestBean implements Addressbook
        /**
         * Remote EJB for mobile providers (administrative)
         */
-       private AdminMobileProviderSingletonBeanRemote adminRemoteBean;
+       @EJB (lookup = "java:global/addressbook-ejb/adminMobileProvider!org.mxchange.jphone.model.phonenumbers.mobileprovider.AdminMobileProviderSessionBeanRemote")
+       private AdminMobileProviderSessionBeanRemote adminRemoteBean;
 
        /**
-        * Regular bean
+        * Mobile provider list view
         */
        @Inject
-       private AddressbookMobileProviderWebRequestController mobileController;
+       private AddressbookMobileProviderListWebViewController mobileProviderListController;
 
        /**
         * Event being fired when the mobile provider was added
         */
        @Inject
        @Any
-       private Event<AdminAddedMobileProviderEvent> providerAddedEvent;
+       private Event<ObservableAdminMobileProviderAddedEvent> providerAddedEvent;
 
        /**
         * Country instance ('s dial data)
@@ -92,107 +92,113 @@ public class AddressbookAdminMobileProviderWebRequestBean implements Addressbook
         * Default constructor
         */
        public AddressbookAdminMobileProviderWebRequestBean () {
-               // Try it
-               try {
-                       // Get initial context
-                       Context context = new InitialContext();
-
-                       // Try to lookup the beans
-                       this.adminRemoteBean = (AdminMobileProviderSingletonBeanRemote) context.lookup("java:global/addressbook-ejb/adminmobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.AdminMobileProviderSingletonBeanRemote"); //NOI18N
-               } catch (final NamingException e) {
-                       // Throw it again
-                       throw new FaceletException(e);
-               }
+               // Call super constructor
+               super();
        }
 
-       @Override
+       /**
+        * Adds a mobile provider to database by calling the EJB. A pre-check on
+        * dial-prefix and country combination is done, if found, an exception is
+        * thrown. A redirect should take place after successfull creation.
+        * <p>
+        * @todo Add field validation
+        */
        public void addMobileProvider () {
                // Create mobile provider instance
-               MobileProvider mobileProvider = new CellphoneProvider(this.getProviderDialPrefix(), this.getProviderName(), this.getProviderCountry(), this.getProviderMailPattern());
+               final MobileProvider mobileProvider = new CellphoneProvider(this.getProviderDialPrefix(), this.getProviderName(), this.getProviderCountry(), this.getProviderMailPattern());
 
                // Is the provider already created?
                if (this.isMobileProviderCreated(mobileProvider)) {
                        // Then throw exception
-                       throw new FaceletException(new MobileProviderAlreadyAddedException(mobileProvider));
+                       this.showFacesException("form_add_mobile_provider:providerDialPrefix", new MobileProviderAlreadyAddedException(mobileProvider), FacesMessage.SEVERITY_WARN); //NOI18N
+                       return;
                }
 
                // Init variable
-               MobileProvider updatedProvider = null;
+               final MobileProvider updatedProvider;
 
                try {
                        // Call remote EJB and get back an updated instance
                        updatedProvider = this.adminRemoteBean.addMobileProvider(mobileProvider);
                } catch (final MobileProviderAlreadyAddedException ex) {
                        // Throw again
-                       throw new FaceletException(ex);
+                       throw new FacesException(ex);
                }
 
                // Fire event
                this.providerAddedEvent.fire(new AdminMobileProviderAddedEvent(updatedProvider));
-
-               // Clear this bean
-               this.clear();
        }
 
-       @Override
-       public List<MobileProvider> allMobileProvider () {
-               return this.mobileController.allMobileProvider();
-       }
-
-       @Override
+       /**
+        * Getter for country instance ('s dial data)
+        * <p>
+        * @return Country instance
+        */
        public Country getProviderCountry () {
                return this.providerCountry;
        }
 
-       @Override
+       /**
+        * Setter for country instance ('s dial data)
+        * <p>
+        * @param providerCountry Country instance
+        */
        public void setProviderCountry (final Country providerCountry) {
                this.providerCountry = providerCountry;
        }
 
-       @Override
+       /**
+        * Getter for provider dial prefix
+        * <p>
+        * @return Provider dial prefix
+        */
        public Long getProviderDialPrefix () {
                return this.providerDialPrefix;
        }
 
-       @Override
+       /**
+        * Setter for provider dial prefix
+        * <p>
+        * @param providerDialPrefix Provider dial prefix
+        */
        public void setProviderDialPrefix (final Long providerDialPrefix) {
                this.providerDialPrefix = providerDialPrefix;
        }
 
-       @Override
+       /**
+        * Getter for pattern for mail gateway
+        * <p>
+        * @return Pattern for mail gateway
+        */
        public String getProviderMailPattern () {
                return this.providerMailPattern;
        }
 
-       @Override
+       /**
+        * Setter for pattern for mail gateway
+        * <p>
+        * @param providerMailPattern Pattern for mail gateway
+        */
        public void setProviderMailPattern (final String providerMailPattern) {
                this.providerMailPattern = providerMailPattern;
        }
 
-       @Override
+       /**
+        * Getter for provider name
+        * <p>
+        * @return Provider name
+        */
        public String getProviderName () {
                return this.providerName;
        }
 
-       @Override
-       public void setProviderName (final String providerName) {
-               this.providerName = providerName;
-       }
-
-       @Override
-       public boolean hasMobileProvider () {
-               return (!this.allMobileProvider().isEmpty());
-       }
-
        /**
-        * Clears this bean
+        * Setter for provider name
+        * <p>
+        * @param providerName Provider name
         */
-       private void clear () {
-               // Clear all fields
-               this.setProviderCountry(null);
-               this.setProviderDialPrefix(null);
-               this.setProviderMailPattern(null);
-               this.setProviderName(null);
+       public void setProviderName (final String providerName) {
+               this.providerName = providerName;
        }
 
        /**
@@ -207,19 +213,10 @@ public class AddressbookAdminMobileProviderWebRequestBean implements Addressbook
                // Default is not found
                boolean isFound = false;
 
-               // Get list of all providers
-               List<MobileProvider> providers = this.allMobileProvider();
-
-               // Get iterator from it
-               Iterator<MobileProvider> iterator = providers.iterator();
-
                // Loop through all
-               while (iterator.hasNext()) {
-                       // Get next element
-                       MobileProvider next = iterator.next();
-
+               for (final MobileProvider currentMobileProvider : this.mobileProviderListController.getAllMobileProviders()) {
                        // Is the provider's dial prefix and country the same?
-                       if ((Objects.equals(mobileProvider.getProviderDialPrefix(), next.getProviderDialPrefix())) && (Objects.equals(mobileProvider.getProviderCountry(), next.getProviderCountry()))) {
+                       if (Objects.equals(mobileProvider, currentMobileProvider)) {
                                // Is the same, abort loop
                                isFound = true;
                                break;