import org.mxchange.jcontacts.contact.Contact;
import org.mxchange.jcontacts.events.contact.add.AdminAddedContactEvent;
import org.mxchange.jcontacts.events.contact.update.AdminUpdatedContactEvent;
+import org.mxchange.jcontacts.events.fax.linked.AdminFaxNumberLinkedEvent;
+import org.mxchange.jcontacts.events.fax.linked.AdminLinkedFaxNumberEvent;
import org.mxchange.jcontacts.events.fax.unlinked.AdminFaxNumberUnlinkedEvent;
import org.mxchange.jcontacts.events.fax.unlinked.AdminUnlinkedFaxNumberEvent;
+import org.mxchange.jcontacts.events.landline.linked.AdminLandLineNumberLinkedEvent;
+import org.mxchange.jcontacts.events.landline.linked.AdminLinkedLandLineNumberEvent;
import org.mxchange.jcontacts.events.landline.unlinked.AdminLandLineNumberUnlinkedEvent;
import org.mxchange.jcontacts.events.landline.unlinked.AdminUnlinkedLandLineNumberEvent;
+import org.mxchange.jcontacts.events.mobile.linked.AdminLinkedMobileNumberEvent;
+import org.mxchange.jcontacts.events.mobile.linked.AdminMobileNumberLinkedEvent;
import org.mxchange.jcontacts.events.mobile.unlinked.AdminMobileNumberUnlinkedEvent;
import org.mxchange.jcontacts.events.mobile.unlinked.AdminUnlinkedMobileNumberEvent;
import org.mxchange.jcontacts.phone.AdminContactsPhoneSessionBeanRemote;
+import org.mxchange.jcountry.data.Country;
import org.mxchange.jjobs.beans.BaseJobsController;
import org.mxchange.jjobs.beans.helper.JobsWebRequestController;
+import org.mxchange.jjobs.beans.phone.JobsAdminPhoneWebRequestController;
import org.mxchange.jphone.exceptions.FaxNumberNotLinkedException;
import org.mxchange.jphone.exceptions.LandLineNumberNotLinkedException;
import org.mxchange.jphone.exceptions.MobileNumberNotLinkedException;
+import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
+import org.mxchange.jphone.phonenumbers.fax.FaxNumber;
+import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
+import org.mxchange.jphone.phonenumbers.landline.LandLineNumber;
+import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber;
+import org.mxchange.jphone.phonenumbers.mobile.MobileNumber;
+import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider;
import org.mxchange.jusercore.events.user.add.AdminAddedUserEvent;
/**
*/
private static final long serialVersionUID = 542_145_347_916L;
+ /**
+ * Event being fired when a fax number has been linked
+ */
+ private Event<AdminLinkedFaxNumberEvent> adminLinkedFaxNumberEvent;
+
+ /**
+ * Event being fired when a land-line number has been linked
+ */
+ private Event<AdminLinkedLandLineNumberEvent> adminLinkedLandLineNumberEvent;
+
+ /**
+ * Event being fired when a mobile number has been linked
+ */
+ private Event<AdminLinkedMobileNumberEvent> adminLinkedMobileNumberEvent;
+
/**
* Administrative EJB for phone number
*/
private AdminContactsPhoneSessionBeanRemote adminPhoneBean;
+ /**
+ * Administrative phone controller
+ */
+ @Inject
+ private JobsAdminPhoneWebRequestController adminPhoneController;
+
/**
* Admin helper instance
*/
this.clear();
}
+ @Override
+ public String doLinkAddFaxNumber (final Contact contact) {
+ // Is all data properly set?
+ if (null == contact) {
+ // Throw NPE
+ throw new NullPointerException("contact is null"); //NOI18N
+ } else if (contact.getContactId() == null) {
+ // Throw it again
+ throw new NullPointerException("contact.contactId is null"); //NOI18N
+ } else if (contact.getContactId() < 1) {
+ // Is not valid
+ throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid", contact.getContactId())); //NOI18N
+ } else if ((this.adminPhoneController.getChoosenFaxNumber() == null) && (this.adminPhoneController.getPhoneCountry() == null) && ((this.adminPhoneController.getPhoneAreaCode() == null) || (this.adminPhoneController.getPhoneAreaCode() < 1)) && ((this.adminPhoneController.getPhoneNumber() == null) || (this.adminPhoneController.getPhoneNumber() < 1))) {
+ // All fields are empty
+ throw new NullPointerException("choosenFaxNumber, mobileProvider and phoneNumer are null"); //NOI18N
+ } else if ((this.adminPhoneController.getChoosenFaxNumber() instanceof DialableFaxNumber) && (this.adminPhoneController.getPhoneCountry() instanceof Country) && (this.adminPhoneController.getPhoneAreaCode() instanceof Integer) && (this.adminPhoneController.getPhoneNumber() instanceof Long)) {
+ // All fields are set
+ throw new IllegalStateException("choosenFaxNumber, mobileProvider and phoneNumer are all set"); //NOI18N
+ } else if ((this.adminPhoneController.getPhoneCountry() == null) && ((this.adminPhoneController.getPhoneAreaCode() instanceof Integer) || (this.adminPhoneController.getPhoneNumber() instanceof Long))) {
+ // No country selected
+ this.showFacesMessage("form_add_contact_fax:phoneCountry", "ERROR_ADMIN_NO_PHONE_COUNTRY_SELECTED"); //NOI18N
+ return ""; //NOI18N
+ } else if (((this.adminPhoneController.getPhoneAreaCode() == null) || (this.adminPhoneController.getPhoneAreaCode() < 1)) && ((this.adminPhoneController.getPhoneCountry() instanceof Country) || (this.adminPhoneController.getPhoneNumber() instanceof Long))) {
+ // No area code entered
+ this.showFacesMessage("form_add_contact_fax:phoneAreaCode", "ERROR_ADMIN_NO_PHONE_AREA_CODE_ENTERED"); //NOI18N
+ return ""; //NOI18N
+ } else if (((this.adminPhoneController.getPhoneNumber() == null) || (this.adminPhoneController.getPhoneNumber() < 1)) && ((this.adminPhoneController.getPhoneCountry() instanceof Country) || (this.adminPhoneController.getPhoneAreaCode() instanceof Integer))) {
+ // No phone number entered
+ this.showFacesMessage("form_add_contact_fax:phoneNumber", "ERROR_ADMIN_NO_PHONE_NUMBER_ENTERED"); //NOI18N
+ return ""; //NOI18N
+ }
+
+ // Init instances
+ Contact updatedContact;
+ DialableFaxNumber faxNumber = this.adminPhoneController.getChoosenFaxNumber();
+
+ // All fine so far, then which was choosen?
+ if (faxNumber instanceof DialableFaxNumber) {
+ // User has choosen number
+ updatedContact = this.adminPhoneBean.linkExistingFaxNumberWithContact(contact, faxNumber);
+ } else {
+ // Create new instance
+ faxNumber = new FaxNumber(this.adminPhoneController.getPhoneCountry(), this.adminPhoneController.getPhoneAreaCode(), this.adminPhoneController.getPhoneNumber());
+
+ // Link it, too
+ updatedContact = this.adminPhoneBean.linkNewFaxNumberWithContact(contact, faxNumber);
+ }
+
+ // Fire event
+ this.adminLinkedFaxNumberEvent.fire(new AdminFaxNumberLinkedEvent(updatedContact, faxNumber));
+
+ // Return to contact profile
+ return "admin_show_contact?faces-redirect=true&includeViewParams=true"; //NOI18N
+ }
+
+ @Override
+ public String doLinkAddLandLineNumber (final Contact contact) {
+ // Is all data properly set?
+ if (null == contact) {
+ // Throw NPE
+ throw new NullPointerException("contact is null"); //NOI18N
+ } else if (contact.getContactId() == null) {
+ // Throw it again
+ throw new NullPointerException("contact.contactId is null"); //NOI18N
+ } else if (contact.getContactId() < 1) {
+ // Is not valid
+ throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid", contact.getContactId())); //NOI18N
+ } else if ((this.adminPhoneController.getChoosenLandLineNumber() == null) && (this.adminPhoneController.getPhoneCountry() == null) && ((this.adminPhoneController.getPhoneAreaCode() == null) || (this.adminPhoneController.getPhoneAreaCode() < 1)) && ((this.adminPhoneController.getPhoneNumber() == null) || (this.adminPhoneController.getPhoneNumber() < 1))) {
+ // All fields are empty
+ throw new NullPointerException("choosenLandLineNumber, mobileProvider and phoneNumer are null"); //NOI18N
+ } else if ((this.adminPhoneController.getChoosenLandLineNumber() instanceof DialableLandLineNumber) && (this.adminPhoneController.getPhoneCountry() instanceof Country) && (this.adminPhoneController.getPhoneAreaCode() instanceof Integer) && (this.adminPhoneController.getPhoneNumber() instanceof Long)) {
+ // All fields are set
+ throw new IllegalStateException("choosenLandLineNumber, mobileProvider and phoneNumer are all set"); //NOI18N
+ } else if ((this.adminPhoneController.getPhoneCountry() == null) && ((this.adminPhoneController.getPhoneAreaCode() instanceof Integer) || (this.adminPhoneController.getPhoneNumber() instanceof Long))) {
+ // No country selected
+ this.showFacesMessage("form_add_contact_landLine:phoneCountry", "ERROR_ADMIN_NO_PHONE_COUNTRY_SELECTED"); //NOI18N
+ return ""; //NOI18N
+ } else if (((this.adminPhoneController.getPhoneAreaCode() == null) || (this.adminPhoneController.getPhoneAreaCode() < 1)) && ((this.adminPhoneController.getPhoneCountry() instanceof Country) || (this.adminPhoneController.getPhoneNumber() instanceof Long))) {
+ // No area code entered
+ this.showFacesMessage("form_add_contact_landLine:phoneAreaCode", "ERROR_ADMIN_NO_PHONE_AREA_CODE_ENTERED"); //NOI18N
+ return ""; //NOI18N
+ } else if (((this.adminPhoneController.getPhoneNumber() == null) || (this.adminPhoneController.getPhoneNumber() < 1)) && ((this.adminPhoneController.getPhoneCountry() instanceof Country) || (this.adminPhoneController.getPhoneAreaCode() instanceof Integer))) {
+ // No phone number entered
+ this.showFacesMessage("form_add_contact_landLine:phoneNumber", "ERROR_ADMIN_NO_PHONE_NUMBER_ENTERED"); //NOI18N
+ return ""; //NOI18N
+ }
+
+ // Init instance
+ Contact updatedContact;
+ DialableLandLineNumber landLineNumber = this.adminPhoneController.getChoosenLandLineNumber();
+
+ // All fine so far, then which was choosen?
+ if (landLineNumber instanceof DialableLandLineNumber) {
+ // User has choosen number
+ updatedContact = this.adminPhoneBean.linkExistingLandLineNumberWithContact(contact, landLineNumber);
+ } else {
+ // Create new instance
+ landLineNumber = new LandLineNumber(this.adminPhoneController.getPhoneCountry(), this.adminPhoneController.getPhoneAreaCode(), this.adminPhoneController.getPhoneNumber());
+
+ // Link it, too
+ updatedContact = this.adminPhoneBean.linkNewLandLineNumberWithContact(contact, landLineNumber);
+ }
+
+ // Fire event
+ this.adminLinkedLandLineNumberEvent.fire(new AdminLandLineNumberLinkedEvent(updatedContact, landLineNumber));
+
+ // Return to contact profile
+ return "admin_show_contact?faces-redirect=true&includeViewParams=true"; //NOI18N
+ }
+
+ @Override
+ public String doLinkAddMobileNumber (final Contact contact) {
+ // Is all data properly set?
+ if (null == contact) {
+ // Throw NPE
+ throw new NullPointerException("contact is null"); //NOI18N
+ } else if (contact.getContactId() == null) {
+ // Throw it again
+ throw new NullPointerException("contact.contactId is null"); //NOI18N
+ } else if (contact.getContactId() < 1) {
+ // Is not valid
+ throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid", contact.getContactId())); //NOI18N
+ } else if ((this.adminPhoneController.getChoosenMobileNumber() == null) && (this.adminPhoneController.getMobileProvider() == null) && ((this.adminPhoneController.getPhoneNumber() == null) || (this.adminPhoneController.getPhoneNumber() < 1))) {
+ // All fields are empty
+ throw new NullPointerException("choosenMobileNumber, mobileProvider and phoneNumer are null"); //NOI18N
+ } else if ((this.adminPhoneController.getChoosenMobileNumber() instanceof DialableMobileNumber) && (this.adminPhoneController.getMobileProvider() instanceof MobileProvider) && (this.adminPhoneController.getPhoneNumber() instanceof Long)) {
+ // All fields are set
+ throw new IllegalStateException("choosenMobileNumber, mobileProvider and phoneNumer are all set"); //NOI18N
+ } else if ((this.adminPhoneController.getMobileProvider() == null) && (this.adminPhoneController.getPhoneNumber() instanceof Long)) {
+ // No mobile provider selected
+ this.showFacesMessage("form_add_contact_mobile:phoneCountry", "ERROR_ADMIN_NO_PHONE_MOBILE_PROVIDER_SELECTED"); //NOI18N
+ return ""; //NOI18N
+ } else if (((this.adminPhoneController.getPhoneNumber() == null) || (this.adminPhoneController.getPhoneNumber() < 1)) && (this.adminPhoneController.getMobileProvider() instanceof MobileProvider)) {
+ // No phone number entered
+ this.showFacesMessage("form_add_contact_mobile:phoneNumber", "ERROR_ADMIN_NO_PHONE_NUMBER_ENTERED"); //NOI18N
+ return ""; //NOI18N
+ }
+
+ // Init instance
+ Contact updatedContact;
+ DialableMobileNumber mobileNumber = this.adminPhoneController.getChoosenMobileNumber();
+
+ // All fine so far, then which was choosen?
+ if (mobileNumber instanceof DialableMobileNumber) {
+ // User has choosen number
+ updatedContact = this.adminPhoneBean.linkExistingMobileNumberWithContact(contact, mobileNumber);
+ } else {
+ // Create new instance
+ mobileNumber = new MobileNumber(this.adminPhoneController.getMobileProvider(), this.adminPhoneController.getPhoneNumber());
+
+ // Link it, too
+ updatedContact = this.adminPhoneBean.linkNewMobileNumberWithContact(contact, mobileNumber);
+ }
+
+ // Fire event
+ this.adminLinkedMobileNumberEvent.fire(new AdminMobileNumberLinkedEvent(updatedContact, mobileNumber));
+
+ // Return to contact profile
+ return "admin_show_contact?faces-redirect=true&includeViewParams=true"; //NOI18N
+ }
+
@Override
public String unlinkFaxContactData () {
// Is all data set