]> git.mxchange.org Git - jjobs-war.git/blobdiff - src/java/org/mxchange/jjobs/beans/helper/JobsWebRequestHelperBean.java
Please cherry-pick:
[jjobs-war.git] / src / java / org / mxchange / jjobs / beans / helper / JobsWebRequestHelperBean.java
index f6b7b1e3b81614c2ba6d9398a4a966b64b30bd23..ddeca5176ba6753db9ae215553e5302214ee4099 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 Roland Häder
+ * Copyright (C) 2016, 2017 Roland Häder
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -18,17 +18,32 @@ package org.mxchange.jjobs.beans.helper;
 
 import java.text.MessageFormat;
 import javax.enterprise.context.RequestScoped;
+import javax.enterprise.event.Event;
+import javax.enterprise.inject.Any;
+import javax.faces.context.FacesContext;
 import javax.inject.Inject;
 import javax.inject.Named;
-import org.mxchange.jcontacts.contact.Contact;
-import org.mxchange.jjobs.beans.BaseJobsController;
+import org.mxchange.jcontacts.events.contact.created.CreatedContactEvent;
+import org.mxchange.jcontacts.events.contact.created.ObservableCreatedContactEvent;
+import org.mxchange.jcontacts.model.contact.Contact;
+import org.mxchange.jjobs.beans.BaseJobsBean;
+import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOffice;
+import org.mxchange.jjobs.beans.BaseJobsBean;
 import org.mxchange.jjobs.beans.contact.JobsAdminContactWebRequestController;
 import org.mxchange.jjobs.beans.phone.JobsAdminPhoneWebRequestController;
 import org.mxchange.jjobs.beans.user.JobsAdminUserWebRequestController;
-import org.mxchange.jjobs.beans.user.JobsUserWebSessionController;
-import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
-import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
-import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber;
+import org.mxchange.jjobs.beans.user.JobsUserWebRequestController;
+import org.mxchange.jphone.events.fax.created.CreatedFaxNumberEvent;
+import org.mxchange.jphone.events.fax.created.ObservableCreatedFaxNumberEvent;
+import org.mxchange.jphone.events.landline.created.CreatedLandLineNumberEvent;
+import org.mxchange.jphone.events.landline.created.ObservableCreatedLandLineNumberEvent;
+import org.mxchange.jphone.events.mobile.created.CreatedMobileNumberEvent;
+import org.mxchange.jphone.events.mobile.created.ObservableCreatedMobileNumberEvent;
+import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
+import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber;
+import org.mxchange.jphone.model.phonenumbers.mobile.DialableMobileNumber;
+import org.mxchange.jusercore.events.user.created.CreatedUserEvent;
+import org.mxchange.jusercore.events.user.created.ObservableCreatedUserEvent;
 import org.mxchange.jusercore.model.user.User;
 
 /**
@@ -38,7 +53,7 @@ import org.mxchange.jusercore.model.user.User;
  */
 @Named ("beanHelper")
 @RequestScoped
-public class JobsWebRequestHelperBean extends BaseJobsController implements JobsWebRequestHelperController {
+public class JobsWebRequestHelperBean extends BaseJobsBean implements JobsWebRequestHelperController {
 
        /**
         * Call-stack instance (5 may show BeanELResolver.getValue as caller)
@@ -73,21 +88,49 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
         */
        private Contact contact;
 
+       /**
+        * Event for when a contact instance was created
+        */
+       @Any
+       @Inject
+       private Event<ObservableCreatedContactEvent> contactCreatedEvent;
+
        /**
         * Fax number
         */
        private DialableFaxNumber faxNumber;
 
+       /**
+        * Event for when a fax number instance was created
+        */
+       @Any
+       @Inject
+       private Event<ObservableCreatedFaxNumberEvent> faxNumberCreatedEvent;
+
        /**
         * Land-line number
         */
        private DialableLandLineNumber landLineNumber;
 
+       /**
+        * Event for when a land-line number instance was created
+        */
+       @Any
+       @Inject
+       private Event<ObservableCreatedLandLineNumberEvent> landLineNumberCreatedEvent;
+
        /**
         * Mobile number
         */
        private DialableMobileNumber mobileNumber;
 
+       /**
+        * Event for when a mobile number instance was created
+        */
+       @Any
+       @Inject
+       private Event<ObservableCreatedMobileNumberEvent> mobileNumberCreatedEvent;
+
        /**
         * User instance
         */
@@ -97,7 +140,14 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
         * Regular user controller
         */
        @Inject
-       private JobsUserWebSessionController userController;
+       private JobsUserWebRequestController userController;
+
+       /**
+        * Event for when a user instance was created
+        */
+       @Any
+       @Inject
+       private Event<ObservableCreatedUserEvent> userCreatedEvent;
 
        /**
         * Default constructor
@@ -105,16 +155,139 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
        public JobsWebRequestHelperBean () {
                // Call super constructor
                super();
+       }
 
-               // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[3].getClassName(), Thread.currentThread().getStackTrace()[3].getMethodName());
-               // System.out.println(MessageFormat.format("{0}: Constructed, caller: {1}", this.getClass().getSimpleName(), caller));
+       /**
+        * Getter for contact instance
+        * <p>
+        * @return Contact instance
+        */
+       public Contact getContact () {
+               return this.contact;
        }
 
-       @Override
-       public void copyContactToController () {
+       /**
+        * Setter for contact instance
+        * <p>
+        * @param contact Contact instance
+        */
+       public void setContact (final Contact contact) {
                // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[THREAD_STACK].getClassName(), Thread.currentThread().getStackTrace()[THREAD_STACK].getMethodName());
-               // System.out.println(MessageFormat.format("{0}.copyContactToController: CALLED, caller: {2}", this.getClass().getSimpleName(), this.contact, caller));
+               // System.out.println(MessageFormat.format("{0}: Setting contact={1}, previous: {2}, caller: {3}", this.getClass().getSimpleName(), contact, this.contact, caller));
+               this.contact = contact;
+       }
 
+       /**
+        * Returns a message key depending on if this contact is a user and/or a
+        * contact. If this contact is unused, a default key is returned.
+        * <p>
+        * @param contact Contact instance to check
+        * <p>
+        * @return Message key
+        */
+       public String getContactUsageMessageKey (final Contact contact) {
+               // The contact must be valid
+               if (null == contact) {
+                       // Throw NPE
+                       throw new NullPointerException("contact is null"); //NOI18N
+               } else if (contact.getContactId() == null) {
+                       // Throw again ...
+                       throw new NullPointerException("contact.contactId is null"); //NOI18N
+               } else if (contact.getContactId() < 1) {
+                       // Not valid
+                       throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid", contact.getContactId())); //NOI18N
+               }
+
+               // Default key is "unused"
+               String messageKey = "CONTACT_IS_UNUSED"; //NOI18N
+
+               // Check user first
+               if (this.userController.isContactFound(contact)) {
+                       // Only user
+                       messageKey = "CONTACT_IS_USER"; //NOI18N
+               }
+
+               // Return message key
+               return messageKey;
+       }
+
+       /**
+        * Getter for dialable fax number
+        * <p>
+        * @return Dialable fax number
+        */
+       public DialableFaxNumber getFaxNumber () {
+               return this.faxNumber;
+       }
+
+       /**
+        * Setter for dialable fax number
+        * <p>
+        * @param faxNumber Dialable fax number
+        */
+       public void setFaxNumber (final DialableFaxNumber faxNumber) {
+               this.faxNumber = faxNumber;
+       }
+
+       /**
+        * Getter for dialable land-line number
+        * <p>
+        * @return Dialable land-line number
+        */
+       public DialableLandLineNumber getLandLineNumber () {
+               return this.landLineNumber;
+       }
+
+       /**
+        * Setter for dialable land-line number
+        * <p>
+        * @param landLineNumber Dialable land-line number
+        */
+       public void setLandLineNumber (final DialableLandLineNumber landLineNumber) {
+               this.landLineNumber = landLineNumber;
+       }
+
+       /**
+        * Getter for dialable mobile number
+        * <p>
+        * @return Dialable mobile number
+        */
+       public DialableMobileNumber getMobileNumber () {
+               return this.mobileNumber;
+       }
+
+       /**
+        * Setter for dialable mobile number
+        * <p>
+        * @param mobileNumber Dialable mobile number
+        */
+       public void setMobileNumber (final DialableMobileNumber mobileNumber) {
+               this.mobileNumber = mobileNumber;
+       }
+
+       /**
+        * Getter for user instance
+        * <p>
+        * @return User instance
+        */
+       public User getUser () {
+               return this.user;
+       }
+
+       /**
+        * Setter for user instance
+        * <p>
+        * @param user User instance
+        */
+       public void setUser (final User user) {
+               this.user = user;
+       }
+
+       /**
+        * Notifies other controllers (backing beans) if a contact id has been
+        * successfully converted to a Contact instance.
+        */
+       public void notifyControllerContactConverted () {
                // Validate contact instance
                if (this.getContact() == null) {
                        // Throw NPE
@@ -131,130 +304,134 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
                this.setPhoneInstances(this.getContact());
 
                // Set all fields: user
-               this.adminContactController.copyContactToController(this.getContact());
+               this.contactCreatedEvent.fire(new CreatedContactEvent(this.getContact()));
        }
 
-       @Override
-       public void copyFaxNumberToController () {
+       /**
+        * Notifies other controllers (backing beans) if a phone id has been
+        * successfully converted to a DialableFaxNumber instance.
+        */
+       public void notifyControllerFaxNumberConverted () {
                // Validate fax instance
                if (this.getFaxNumber() == null) {
                        // Throw NPE
-                       throw new NullPointerException("this.faxNumber is null");
+                       throw new NullPointerException("this.faxNumber is null"); //NOI18N
                } else if (this.getFaxNumber().getPhoneId() == null) {
                        // Throw again
-                       throw new NullPointerException("this.faxNumber.phoneId is null");
+                       throw new NullPointerException("this.faxNumber.phoneId is null"); //NOI18N
                } else if (this.getFaxNumber().getPhoneId() < 1) {
                        // Invalid id number
-                       throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneId={0} is not valid", this.getFaxNumber().getPhoneId()));
+                       throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneId={0} is not valid", this.getFaxNumber().getPhoneId())); //NOI18N
                } else if (this.getFaxNumber().getPhoneAreaCode() == null) {
                        // Throw again
-                       throw new NullPointerException("this.faxNumber.phoneAreaCode is null");
+                       throw new NullPointerException("this.faxNumber.phoneAreaCode is null"); //NOI18N
                } else if (this.getFaxNumber().getPhoneAreaCode() < 1) {
                        // Invalid id number
-                       throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneAreaCode={0} is not valid", this.getFaxNumber().getPhoneAreaCode()));
+                       throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneAreaCode={0} is not valid", this.getFaxNumber().getPhoneAreaCode())); //NOI18N
                } else if (this.getFaxNumber().getPhoneCountry() == null) {
                        // Throw NPE again
-                       throw new NullPointerException("this.faxNumber.phoneCountry is null");
+                       throw new NullPointerException("this.faxNumber.phoneCountry is null"); //NOI18N
                } else if (this.getFaxNumber().getPhoneCountry().getCountryId() == null) {
                        // ... throw again
-                       throw new NullPointerException("this.faxNumber.phoneCountry.countryId is null");
+                       throw new NullPointerException("this.faxNumber.phoneCountry.countryId is null"); //NOI18N
                } else if (this.getFaxNumber().getPhoneCountry().getCountryId() < 1) {
                        // Invalid id
-                       throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneCountry.countryId={0} is invalid", this.getFaxNumber().getPhoneCountry().getCountryId()));
+                       throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneCountry.countryId={0} is invalid", this.getFaxNumber().getPhoneCountry().getCountryId())); //NOI18N
                } else if (this.getFaxNumber().getPhoneNumber() == null) {
                        // Throw NPE again ...
-                       throw new NullPointerException("this.faxNumber.phoneNumber is null");
+                       throw new NullPointerException("this.faxNumber.phoneNumber is null"); //NOI18N
                } else if (this.getFaxNumber().getPhoneNumber() < 1) {
                        // Invalid id number
-                       throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneNumber={0} is not valid", this.getFaxNumber().getPhoneNumber()));
+                       throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneNumber={0} is not valid", this.getFaxNumber().getPhoneNumber())); //NOI18N
                }
 
-               // Copy all (changeable) data fields to admin controller
-               this.adminPhoneController.setPhoneAreaCode(this.getFaxNumber().getPhoneAreaCode());
-               this.adminPhoneController.setPhoneCountry(this.getFaxNumber().getPhoneCountry());
-               this.adminPhoneController.setPhoneNumber(this.getFaxNumber().getPhoneNumber());
+               // Fire event
+               this.faxNumberCreatedEvent.fire(new CreatedFaxNumberEvent(this.getFaxNumber()));
        }
 
-       @Override
-       public void copyLandLineNumberToController () {
+       /**
+        * Notifies other controllers (backing beans) if a phone id has been
+        * successfully converted to a DialableLandLineNumber instance.
+        */
+       public void notifyControllerLandLineNumberConverted () {
                // Validate land-line instance
                if (this.getLandLineNumber() == null) {
                        // Throw NPE
-                       throw new NullPointerException("this.landLineNumber is null");
+                       throw new NullPointerException("this.landLineNumber is null"); //NOI18N
                } else if (this.getLandLineNumber().getPhoneId() == null) {
                        // Throw again
-                       throw new NullPointerException("this.landLineNumber.phoneId is null");
+                       throw new NullPointerException("this.landLineNumber.phoneId is null"); //NOI18N
                } else if (this.getLandLineNumber().getPhoneId() < 1) {
                        // Invalid id number
-                       throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneId={0} is not valid", this.getLandLineNumber().getPhoneId()));
+                       throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneId={0} is not valid", this.getLandLineNumber().getPhoneId())); //NOI18N
                } else if (this.getLandLineNumber().getPhoneAreaCode() == null) {
                        // Throw again
-                       throw new NullPointerException("this.landLineNumber.phoneAreaCode is null");
+                       throw new NullPointerException("this.landLineNumber.phoneAreaCode is null"); //NOI18N
                } else if (this.getLandLineNumber().getPhoneAreaCode() < 1) {
                        // Invalid id number
-                       throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneAreaCode={0} is not valid", this.getFaxNumber().getPhoneAreaCode()));
+                       throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneAreaCode={0} is not valid", this.getFaxNumber().getPhoneAreaCode())); //NOI18N
                } else if (this.getLandLineNumber().getPhoneCountry() == null) {
                        // Throw NPE again
-                       throw new NullPointerException("this.landLineNumber.phoneCountry is null");
+                       throw new NullPointerException("this.landLineNumber.phoneCountry is null"); //NOI18N
                } else if (this.getLandLineNumber().getPhoneCountry().getCountryId() == null) {
                        // ... throw again
-                       throw new NullPointerException("this.landLineNumber.phoneCountry.countryId is null");
+                       throw new NullPointerException("this.landLineNumber.phoneCountry.countryId is null"); //NOI18N
                } else if (this.getLandLineNumber().getPhoneCountry().getCountryId() < 1) {
                        // Invalid id
-                       throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneCountry.countryId={0} is invalid", this.getLandLineNumber().getPhoneCountry().getCountryId()));
+                       throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneCountry.countryId={0} is invalid", this.getLandLineNumber().getPhoneCountry().getCountryId())); //NOI18N
                } else if (this.getLandLineNumber().getPhoneNumber() == null) {
                        // Throw NPE again ...
-                       throw new NullPointerException("this.landLineNumber.phoneNumber is null");
+                       throw new NullPointerException("this.landLineNumber.phoneNumber is null"); //NOI18N
                } else if (this.getLandLineNumber().getPhoneNumber() < 1) {
                        // Invalid id number
-                       throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneNumber={0} is not valid", this.getLandLineNumber().getPhoneNumber()));
+                       throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneNumber={0} is not valid", this.getLandLineNumber().getPhoneNumber())); //NOI18N
                }
 
-               // Copy all (changeable) data fields to admin controller
-               this.adminPhoneController.setPhoneAreaCode(this.getLandLineNumber().getPhoneAreaCode());
-               this.adminPhoneController.setPhoneCountry(this.getLandLineNumber().getPhoneCountry());
-               this.adminPhoneController.setPhoneNumber(this.getLandLineNumber().getPhoneNumber());
+               // Fire event
+               this.landLineNumberCreatedEvent.fire(new CreatedLandLineNumberEvent(this.getLandLineNumber()));
        }
 
-       @Override
-       public void copyMobileNumberToController () {
+       /**
+        * Notifies other controllers (backing beans) if a phone id has been
+        * successfully converted to a DialableMobileNumber instance.
+        */
+       public void notifyControllerMobileNumberConverted () {
                // Validate mobile instance
                if (this.getMobileNumber() == null) {
                        // Throw NPE
-                       throw new NullPointerException("this.mobileNumber is null");
+                       throw new NullPointerException("this.mobileNumber is null"); //NOI18N
                } else if (this.getMobileNumber().getPhoneId() == null) {
                        // Throw again
-                       throw new NullPointerException("this.mobileNumber.phoneId is null");
+                       throw new NullPointerException("this.mobileNumber.phoneId is null"); //NOI18N
                } else if (this.getMobileNumber().getPhoneId() < 1) {
                        // Invalid id number
-                       throw new IllegalArgumentException(MessageFormat.format("this.mobileNumber.phoneId={0} is not valid", this.getMobileNumber().getPhoneId()));
+                       throw new IllegalArgumentException(MessageFormat.format("this.mobileNumber.phoneId={0} is not valid", this.getMobileNumber().getPhoneId())); //NOI18N
                } else if (this.getMobileNumber().getMobileProvider() == null) {
                        // Throw NPE again
-                       throw new NullPointerException("this.mobileNumber.mobileProvider is null");
+                       throw new NullPointerException("this.mobileNumber.mobileProvider is null"); //NOI18N
                } else if (this.getMobileNumber().getMobileProvider().getProviderId() == null) {
                        // ... throw again
-                       throw new NullPointerException("this.mobileNumber.mobileProvider.providerId is null");
+                       throw new NullPointerException("this.mobileNumber.mobileProvider.providerId is null"); //NOI18N
                } else if (this.getMobileNumber().getMobileProvider().getProviderId() < 1) {
                        // Invalid id
-                       throw new IllegalArgumentException(MessageFormat.format("this.mobileNumber.mobileProvider.providerId={0} is invalid", this.getMobileNumber().getMobileProvider().getProviderId()));
+                       throw new IllegalArgumentException(MessageFormat.format("this.mobileNumber.mobileProvider.providerId={0} is invalid", this.getMobileNumber().getMobileProvider().getProviderId())); //NOI18N
                } else if (this.getMobileNumber().getPhoneNumber() == null) {
                        // Throw NPE again ...
-                       throw new NullPointerException("this.mobileNumber.phoneNumber is null");
+                       throw new NullPointerException("this.mobileNumber.phoneNumber is null"); //NOI18N
                } else if (this.getMobileNumber().getPhoneNumber() < 1) {
                        // Invalid id number
-                       throw new IllegalArgumentException(MessageFormat.format("this.mobileNumber.phoneNumber={0} is not valid", this.getMobileNumber().getPhoneNumber()));
+                       throw new IllegalArgumentException(MessageFormat.format("this.mobileNumber.phoneNumber={0} is not valid", this.getMobileNumber().getPhoneNumber())); //NOI18N
                }
 
-               // Copy all (changeable) data fields to admin controller
-               this.adminPhoneController.setMobileProvider(this.getMobileNumber().getMobileProvider());
-               this.adminPhoneController.setPhoneNumber(this.getMobileNumber().getPhoneNumber());
+               // Fire event
+               this.mobileNumberCreatedEvent.fire(new CreatedMobileNumberEvent(this.getMobileNumber()));
        }
 
-       @Override
-       public void copyUserToController () {
-               // Log message
-               //* NOISY-DEBUG: */ System.out.println("AdminHelper::copyUserToController - CALLED!"); //NOI18N
-
+       /**
+        * Notifies other controllers (backing beans) if a user id has been
+        * successfully converted to a User instance.
+        */
+       public void notifyControllerUserConverted () {
                // Validate user instance
                if (this.getUser() == null) {
                        // Throw NPE
@@ -268,7 +445,7 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
                }
 
                // Get contact
-               Contact userContact = this.getUser().getUserContact();
+               final Contact userContact = this.getUser().getUserContact();
 
                // Set contact here, too. This avoids parameters that cannot auto-complete in IDEs.
                this.setContact(userContact);
@@ -276,93 +453,60 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs
                // Set all phone instances
                this.setPhoneInstances(userContact);
 
-               // Set all fields: user
-               this.userController.setUserName(this.getUser().getUserName());
-               this.adminUserController.setUserName(this.getUser().getUserName());
+               // Fire event
+               this.userCreatedEvent.fire(new CreatedUserEvent(this.getUser()));
        }
 
-       @Override
-       public Contact getContact () {
-               // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[THREAD_STACK].getClassName(), Thread.currentThread().getStackTrace()[THREAD_STACK].getMethodName());
-               // System.out.println(MessageFormat.format("{0}: Returning this.contact={1}, caller: {2}", this.getClass().getSimpleName(), this.contact, caller));
-               return this.contact;
-       }
-
-       @Override
-       public void setContact (final Contact contact) {
-               // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[THREAD_STACK].getClassName(), Thread.currentThread().getStackTrace()[THREAD_STACK].getMethodName());
-               // System.out.println(MessageFormat.format("{0}: Setting contact={1}, previous: {2}, caller: {3}", this.getClass().getSimpleName(), contact, this.contact, caller));
-               this.contact = contact;
-       }
-
-       @Override
-       public String getContactUsageMessageKey (final Contact contact) {
-               // The contact must be valid
-               if (null == contact) {
-                       // Throw NPE
-                       throw new NullPointerException("contact is null"); //NOI18N
-               } else if (contact.getContactId() == null) {
-                       // Throw again ...
-                       throw new NullPointerException("contact.contactId is null"); //NOI18N
-               } else if (contact.getContactId() < 1) {
-                       // Not valid
-                       throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid", contact.getContactId())); //NOI18N
-               }
-
-               // Default key is "unused"
-               String messageKey = "CONTACT_IS_UNUSED"; //NOI18N
-
-               // Check user/recruiter
-               boolean isUserContact = this.userController.isContactFound(contact);
-
-               // Check user first
-               if (isUserContact) {
-                       // Only user
-                       messageKey = "CONTACT_IS_USER"; //NOI18N
+       /**
+        * Returns the branch office's full address. If null is provided, an empty
+        * string is returned.
+        * <p>
+        * @param branchOffice Branch office instance
+        * <p>
+        * @return Branch office's address
+        */
+       public String renderBranchOffice (final BranchOffice branchOffice) {
+               // Default is empty string, so let's get started
+               final StringBuilder sb = new StringBuilder(30);
+
+               // Is a branch office instance given?
+               if (branchOffice instanceof BranchOffice) {
+                       // Yes, then append all data
+                       sb.append(", ");
+                       sb.append(branchOffice.getBranchStreet());
+                       sb.append(" ");
+                       sb.append(branchOffice.getBranchHouseNumber());
+                       sb.append(", ");
+                       sb.append(branchOffice.getBranchCountry().getCountryCode());
+                       sb.append(" ");
+                       sb.append(branchOffice.getBranchZipCode());
+                       sb.append(branchOffice.getBranchCity());
                }
 
-               // Return message key
-               return messageKey;
-       }
-
-       @Override
-       public DialableFaxNumber getFaxNumber () {
-               return this.faxNumber;
-       }
-
-       @Override
-       public void setFaxNumber (final DialableFaxNumber faxNumber) {
-               this.faxNumber = faxNumber;
-       }
-
-       @Override
-       public DialableLandLineNumber getLandLineNumber () {
-               return this.landLineNumber;
-       }
-
-       @Override
-       public void setLandLineNumber (final DialableLandLineNumber landLineNumber) {
-               this.landLineNumber = landLineNumber;
+               // Return it
+               return sb.toString();
        }
 
-       @Override
-       public DialableMobileNumber getMobileNumber () {
-               return this.mobileNumber;
-       }
-
-       @Override
-       public void setMobileNumber (final DialableMobileNumber mobileNumber) {
-               this.mobileNumber = mobileNumber;
-       }
-
-       @Override
-       public User getUser () {
-               return this.user;
-       }
+       /**
+        * Returns the contact's personal title, family name and name. If null is
+        * provided, an empty string is returned.
+        * <p>
+        * @param contact Contact instance
+        * <p>
+        * @return Contact's name
+        */
+       public String renderContact (final Contact contact) {
+               // Default is empty string, so let's get started
+               final StringBuilder sb = new StringBuilder(20);
+
+               // Is contact set?
+               if (contact instanceof Contact) {
+                       // Then create name
+                       sb.append(String.format(FacesContext.getCurrentInstance().getViewRoot().getLocale(), "{0} {1}, {2}", this.getMessageFromBundle(contact.getContactPersonalTitle().getMessageKey()), contact.getContactFamilyName(), contact.getContactFirstName())); //NOI18N
+               }
 
-       @Override
-       public void setUser (final User user) {
-               this.user = user;
+               // Return it
+               return sb.toString();
        }
 
        /**