]> git.mxchange.org Git - pizzaservice-war.git/commitdiff
Continued:
authorRoland Haeder <roland@mxchange.org>
Sun, 17 Apr 2016 15:37:32 +0000 (17:37 +0200)
committerRoland Haeder <roland@mxchange.org>
Sun, 17 Apr 2016 15:37:32 +0000 (17:37 +0200)
- renamed bean/controller as they are session-scoped, else all admins will use the same
- fixed object->id converting (opps, forgot it)

src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebRequestBean.java [deleted file]
src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebRequestController.java [deleted file]
src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebSessionBean.java [new file with mode: 0644]
src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebSessionController.java [new file with mode: 0644]
src/java/org/mxchange/pizzaapplication/converter/contact/PizzaContactConverter.java

diff --git a/src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebRequestBean.java b/src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebRequestBean.java
deleted file mode 100644 (file)
index c308f40..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2016 Roland Haeder
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.pizzaapplication.beans.phone;
-
-import java.util.List;
-import javax.enterprise.context.RequestScoped;
-import javax.faces.view.facelets.FaceletException;
-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.phone.AdminContactsPhoneSessionBeanRemote;
-import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber;
-import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
-import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
-import org.mxchange.jusercore.model.user.User;
-
-/**
- * Administrative bean (controller) for contact's phone numbers
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-@Named ("adminContactPhoneController")
-@RequestScoped
-public class PizzaAdminContactPhoneWebRequestBean implements PizzaAdminContactPhoneWebRequestController {
-
-       /**
-        * Serial number
-        */
-       private static final long serialVersionUID = 184_598_175_371_269_016L;
-
-       /**
-        * Remote EJB for phone number (administrative)
-        */
-       private AdminContactsPhoneSessionBeanRemote adminRemoteBean;
-
-       /**
-        * Cell phone number
-        */
-       private DialableCellphoneNumber cellPhone;
-
-       /**
-        * Fax number
-        */
-       private DialableFaxNumber fax;
-
-       /**
-        * Land-line number
-        */
-       private DialableLandLineNumber landLine;
-
-       /**
-        * Instance of linked user account
-        */
-       private User user;
-
-       /**
-        * Default constructor
-        */
-       public PizzaAdminContactPhoneWebRequestBean () {
-               // Try it
-               try {
-                       // Get initial context
-                       Context context = new InitialContext();
-
-                       // Try to lookup the beans
-                       this.adminRemoteBean = (AdminContactsPhoneSessionBeanRemote) context.lookup("java:global/PizzaService-ejb/admincontactphone!org.mxchange.jcontacts.phone.AdminContactsPhoneSessionBeanRemote"); //NOI18N
-               } catch (final NamingException e) {
-                       // Throw it again
-                       throw new FaceletException(e);
-               }
-       }
-
-       @Override
-       public List<Contact> allCellphoneContacts () {
-               return this.adminRemoteBean.allContacts(this.getCellPhone());
-       }
-
-       @Override
-       public DialableCellphoneNumber getCellPhone () {
-               return this.cellPhone;
-       }
-
-       @Override
-       public void setCellPhone (final DialableCellphoneNumber cellPhone) {
-               this.cellPhone = cellPhone;
-       }
-
-       @Override
-       public DialableFaxNumber getFax () {
-               return this.fax;
-       }
-
-       @Override
-       public void setFax (final DialableFaxNumber fax) {
-               this.fax = fax;
-       }
-
-       @Override
-       public DialableLandLineNumber getLandLine () {
-               return this.landLine;
-       }
-
-       @Override
-       public void setLandLine (final DialableLandLineNumber landLine) {
-               this.landLine = landLine;
-       }
-
-       @Override
-       public User getUser () {
-               return this.user;
-       }
-
-       @Override
-       public void setUser (final User user) {
-               this.user = user;
-       }
-
-       /**
-        * Clears this bean
-        */
-       private void clear () {
-               // Clear all instances
-               this.setCellPhone(null);
-               this.setFax(null);
-               this.setLandLine(null);
-               this.setUser(null);
-       }
-
-}
diff --git a/src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebRequestController.java b/src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebRequestController.java
deleted file mode 100644 (file)
index e39e204..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2016 Roland Haeder
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.pizzaapplication.beans.phone;
-
-import java.io.Serializable;
-import java.util.List;
-import org.mxchange.jcontacts.contact.Contact;
-import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber;
-import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
-import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
-import org.mxchange.jusercore.model.user.User;
-
-/**
- * An interface for a request web controller (bean) for administrative phone
- * number purposes.
- * <p>
- * @author Roland Haeder<roland@mxchange.org>
- */
-public interface PizzaAdminContactPhoneWebRequestController extends Serializable {
-
-       List<Contact> allCellphoneContacts ();
-
-       /**
-        * Getter for dialable cellphone number instance
-        * <p>
-        * @return Dialable cellphone number instance
-        */
-       DialableCellphoneNumber getCellPhone ();
-
-       /**
-        * Setter for dialable land-line number instance
-        * <p>
-        * @param landLine Dialable land-line number instance
-        */
-       void setLandLine (final DialableLandLineNumber landLine);
-
-       /**
-        * Getter for dialable land-line number instance
-        * <p>
-        * @return Dialable land-line number instance
-        */
-       DialableLandLineNumber getLandLine ();
-
-       /**
-        * Setter for dialable fax number instance
-        * <p>
-        * @param fax Dialable fax number instance
-        */
-       void setFax (final DialableFaxNumber fax);
-
-       /**
-        * Getter for dialable fax number instance
-        * <p>
-        * @return Dialable fax number instance
-        */
-       DialableFaxNumber getFax ();
-
-       /**
-        * Setter for dialable cellphone number instance
-        * <p>
-        * @param cellPhone Dialable cellphone number instance
-        */
-       void setCellPhone (final DialableCellphoneNumber cellPhone);
-
-       /**
-        * Getter for linked user account
-        * <p>
-        * @return Linked user account
-        */
-       User getUser ();
-
-       /**
-        * Setter for linked user account
-        * <p>
-        * @param user Linked user account
-        */
-       void setUser (final User user);
-
-}
diff --git a/src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebSessionBean.java b/src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebSessionBean.java
new file mode 100644 (file)
index 0000000..5928351
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2016 Roland Haeder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.pizzaapplication.beans.phone;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.view.facelets.FaceletException;
+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.phone.AdminContactsPhoneSessionBeanRemote;
+import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber;
+import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
+import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
+
+/**
+ * Administrative bean (controller) for contact's phone numbers
+ * <p>
+ * @author Roland Haeder<roland@mxchange.org>
+ */
+@Named ("adminContactPhoneController")
+@SessionScoped
+public class PizzaAdminContactPhoneWebSessionBean implements PizzaAdminContactPhoneWebSessionController {
+
+       /**
+        * Serial number
+        */
+       private static final long serialVersionUID = 184_598_175_371_269_016L;
+
+       /**
+        * Remote EJB for phone number (administrative)
+        */
+       private AdminContactsPhoneSessionBeanRemote adminRemoteBean;
+
+       /**
+        * Cell phone number
+        */
+       private DialableCellphoneNumber cellPhone;
+
+       /**
+        * Instance of linked contact account
+        */
+       private Contact contact;
+
+       /**
+        * "Cache" for contact lists, mostly only one is assigned. So this cache
+        * shouldn't grow beyond control.
+        */
+       private final Map<Long, List<Contact>> contacts;
+
+       /**
+        * Fax number
+        */
+       private DialableFaxNumber fax;
+
+       /**
+        * Land-line number
+        */
+       private DialableLandLineNumber landLine;
+
+       /**
+        * Default constructor
+        */
+       public PizzaAdminContactPhoneWebSessionBean () {
+               // Try it
+               try {
+                       // Get initial context
+                       Context context = new InitialContext();
+
+                       // Try to lookup the beans
+                       this.adminRemoteBean = (AdminContactsPhoneSessionBeanRemote) context.lookup("java:global/PizzaService-ejb/admincontactphone!org.mxchange.jcontacts.phone.AdminContactsPhoneSessionBeanRemote"); //NOI18N
+               } catch (final NamingException e) {
+                       // Throw it again
+                       throw new FaceletException(e);
+               }
+
+               // Init map
+               this.contacts = new HashMap<>(10);
+       }
+
+       @Override
+       public List<Contact> allCellphoneContacts () {
+               // Get id
+               Long phoneId = this.getCellPhone().getPhoneId();
+
+               // Is cache there?
+               if (this.contacts.containsKey(phoneId)) {
+                       // Return cached version
+                       return this.contacts.get(phoneId);
+               } else {
+                       // Ask bean
+                       List<Contact> list = this.adminRemoteBean.allContacts(this.getCellPhone());
+
+                       // Store result in cache
+                       this.contacts.put(phoneId, list);
+
+                       // Return now-cached list
+                       return list;
+               }
+       }
+
+       @Override
+       public DialableCellphoneNumber getCellPhone () {
+               return this.cellPhone;
+       }
+
+       @Override
+       public void setCellPhone (final DialableCellphoneNumber cellPhone) {
+               this.cellPhone = cellPhone;
+       }
+
+       @Override
+       public Contact getContact () {
+               return this.contact;
+       }
+
+       @Override
+       public void setContact (final Contact contact) {
+               this.contact = contact;
+       }
+
+       @Override
+       public DialableFaxNumber getFax () {
+               return this.fax;
+       }
+
+       @Override
+       public void setFax (final DialableFaxNumber fax) {
+               this.fax = fax;
+       }
+
+       @Override
+       public DialableLandLineNumber getLandLine () {
+               return this.landLine;
+       }
+
+       @Override
+       public void setLandLine (final DialableLandLineNumber landLine) {
+               this.landLine = landLine;
+       }
+
+       /**
+        * Clears this bean
+        */
+       private void clear () {
+               // Clear all instances
+               this.setCellPhone(null);
+               this.setFax(null);
+               this.setLandLine(null);
+               this.setContact(null);
+       }
+
+}
diff --git a/src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebSessionController.java b/src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminContactPhoneWebSessionController.java
new file mode 100644 (file)
index 0000000..97321ad
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2016 Roland Haeder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.pizzaapplication.beans.phone;
+
+import java.io.Serializable;
+import java.util.List;
+import org.mxchange.jcontacts.contact.Contact;
+import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber;
+import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
+import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
+
+/**
+ * An interface for a request web controller (bean) for administrative phone
+ * number purposes.
+ * <p>
+ * @author Roland Haeder<roland@mxchange.org>
+ */
+public interface PizzaAdminContactPhoneWebSessionController extends Serializable {
+
+       /**
+        * Getter for all contacts having current cellphone instance linked
+        * <p>
+        * @return List of all linked contacts
+        */
+       List<Contact> allCellphoneContacts ();
+
+       /**
+        * Getter for dialable cellphone number instance
+        * <p>
+        * @return Dialable cellphone number instance
+        */
+       DialableCellphoneNumber getCellPhone ();
+
+       /**
+        * Setter for dialable land-line number instance
+        * <p>
+        * @param landLine Dialable land-line number instance
+        */
+       void setLandLine (final DialableLandLineNumber landLine);
+
+       /**
+        * Getter for dialable land-line number instance
+        * <p>
+        * @return Dialable land-line number instance
+        */
+       DialableLandLineNumber getLandLine ();
+
+       /**
+        * Setter for dialable fax number instance
+        * <p>
+        * @param fax Dialable fax number instance
+        */
+       void setFax (final DialableFaxNumber fax);
+
+       /**
+        * Getter for dialable fax number instance
+        * <p>
+        * @return Dialable fax number instance
+        */
+       DialableFaxNumber getFax ();
+
+       /**
+        * Setter for dialable cellphone number instance
+        * <p>
+        * @param cellPhone Dialable cellphone number instance
+        */
+       void setCellPhone (final DialableCellphoneNumber cellPhone);
+
+       /**
+        * Getter for linked contact account
+        * <p>
+        * @return Linked contact account
+        */
+       Contact getContact ();
+
+       /**
+        * Setter for linked contact account
+        * <p>
+        * @param contact Linked contact account
+        */
+       void setContact (final Contact contact);
+
+}
index c47b7cd863549a0d0b23cc34f57227f26d27bdc5..690eb4e406177b1bb33a90b3d043aa8ba9f36750 100644 (file)
@@ -30,7 +30,6 @@ import org.mxchange.jcontacts.contact.ContactSessionBeanRemote;
 import org.mxchange.jcontacts.exceptions.ContactNotFoundException;
 import org.mxchange.jcoreeelogger.beans.local.logger.Log;
 import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal;
-import org.mxchange.jusercore.model.user.User;
 
 /**
  * Converter for contact id <-> valid contact instance
@@ -41,15 +40,15 @@ import org.mxchange.jusercore.model.user.User;
 public class PizzaContactConverter implements Converter {
 
        /**
-        * Logger instance
+        * User EJB
         */
-       @Log
-       private LoggerBeanLocal loggerBeanLocal;
+       private ContactSessionBeanRemote contactBean;
 
        /**
-        * User EJB
+        * Logger instance
         */
-       private ContactSessionBeanRemote contactBean;
+       @Log
+       private LoggerBeanLocal loggerBeanLocal;
 
        /**
         * Initialization of this converter
@@ -121,13 +120,13 @@ public class PizzaContactConverter implements Converter {
                if ((null == value) || ((String.valueOf(value)).isEmpty())) {
                        // Is null
                        return ""; //NOI18N
-               } else if (!(value instanceof User)) {
+               } else if (!(value instanceof Contact)) {
                        // Not same interface
-                       throw new IllegalArgumentException(MessageFormat.format("value {0} does not implement User.", value)); //NOI18N
+                       throw new IllegalArgumentException(MessageFormat.format("value {0} does not implement Contact.", value)); //NOI18N
                }
 
                // Return category id
-               return String.valueOf(((User) value).getUserId());
+               return String.valueOf(((Contact) value).getContactId());
        }
 
 }