package org.mxchange.addressbook.beans.contact.phone;
import java.text.MessageFormat;
-import java.util.Calendar;
+import java.util.Date;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.event.Event;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.Any;
+import javax.faces.application.FacesMessage;
import javax.inject.Inject;
import javax.inject.Named;
import org.mxchange.addressbook.beans.BaseAddressbookBean;
import org.mxchange.jcontacts.events.contact.add.ObservableAdminAddedContactEvent;
import org.mxchange.jcontacts.events.contact.created.ObservableCreatedContactEvent;
import org.mxchange.jcontacts.events.contact.update.ObservableAdminUpdatedContactEvent;
+import org.mxchange.jcontacts.events.contact.update.ObservableUpdatedContactEvent;
import org.mxchange.jcontacts.events.fax.linked.AdminLinkedFaxNumberEvent;
import org.mxchange.jcontacts.events.fax.linked.ObservableAdminLinkedFaxNumberEvent;
import org.mxchange.jcontacts.events.fax.unlinked.AdminUnlinkedFaxNumberEvent;
import org.mxchange.jcontacts.events.landline.linked.ObservableAdminLinkedLandLineNumberEvent;
import org.mxchange.jcontacts.events.landline.unlinked.AdminUnlinkedLandLineNumberEvent;
import org.mxchange.jcontacts.events.landline.unlinked.ObservableAdminUnlinkedLandLineNumberEvent;
-import org.mxchange.jcontacts.events.mobile.linked.AdminLinkedMobileNumberEvent;
-import org.mxchange.jcontacts.events.mobile.linked.ObservableAdminLinkedMobileNumberEvent;
-import org.mxchange.jcontacts.events.mobile.unlinked.AdminUnlinkedMobileNumberEvent;
-import org.mxchange.jcontacts.events.mobile.unlinked.ObservableAdminUnlinkedMobileNumberEvent;
+import org.mxchange.jcontacts.exceptions.ContactNotFoundException;
import org.mxchange.jcontacts.model.contact.Contact;
import org.mxchange.jcontacts.model.phone.AdminContactsPhoneSessionBeanRemote;
import org.mxchange.jcountry.model.data.Country;
import org.mxchange.jphone.events.fax.created.ObservableCreatedFaxNumberEvent;
import org.mxchange.jphone.events.landline.created.ObservableCreatedLandLineNumberEvent;
-import org.mxchange.jphone.events.mobile.created.ObservableCreatedMobileNumberEvent;
-import org.mxchange.jphone.exceptions.PhoneNumberAlreadyLinkedException;
-import org.mxchange.jphone.exceptions.PhoneNumberNotLinkedException;
+import org.mxchange.jphone.exceptions.phone.PhoneNumberAlreadyLinkedException;
+import org.mxchange.jphone.exceptions.phone.PhoneNumberNotLinkedException;
import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
import org.mxchange.jphone.model.phonenumbers.fax.FaxNumber;
import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber;
import org.mxchange.jphone.model.phonenumbers.landline.LandLineNumber;
-import org.mxchange.jphone.model.phonenumbers.mobile.DialableMobileNumber;
-import org.mxchange.jphone.model.phonenumbers.mobile.MobileNumber;
-import org.mxchange.jphone.model.phonenumbers.mobileprovider.MobileProvider;
import org.mxchange.jusercore.events.user.add.ObservableAdminAddedUserEvent;
/**
@Any
private Event<ObservableAdminLinkedLandLineNumberEvent> adminLinkedLandLineNumberEvent;
- /**
- * Event being fired when a mobile number has been linked
- */
- @Inject
- @Any
- private Event<ObservableAdminLinkedMobileNumberEvent> adminLinkedMobileNumberEvent;
-
/**
* Administrative phone controller
*/
private Event<ObservableAdminUnlinkedLandLineNumberEvent> landLineNumberUnlinkedEvent;
/**
- * Mobile number
+ * When phone number has been created
*/
- private Long mobileNumber;
+ private Date phoneEntryCreated;
/**
- * Event being fired when administrator unlinks mobile from contact
+ * When phone number has been updated
*/
- @Inject
- @Any
- private Event<ObservableAdminUnlinkedMobileNumberEvent> mobileNumberUnlinkedEvent;
-
- /**
- * Mobile provider
- */
- private MobileProvider mobileProvider;
-
- /**
- * When fax number has been created
- */
- private Calendar phoneEntryCreated;
-
- /**
- * When fax number has been updated
- */
- private Calendar phoneEntryUpdated;
+ private Date phoneEntryUpdated;
/**
* Phone id (primary key)
* @param event Event being fired
*/
public void afterAdminAddedUserEvent (@Observes final ObservableAdminAddedUserEvent event) {
- // event should not be null
+ // Event and contained entity instance should not be null
if (null == event) {
// Throw NPE
throw new NullPointerException("event is null"); //NOI18N
* @param event Updated contact data event
*/
public void afterAdminUpdatedContactDataEvent (@Observes final ObservableAdminUpdatedContactEvent event) {
- // event should not be null
+ // Event and contained entity instance should not be null
if (null == event) {
// Throw NPE
throw new NullPointerException("event is null"); //NOI18N
throw new NullPointerException("event is null"); //NOI18N
} else if (event.getCreatedContact() == null) {
// Throw NPE again
- throw new NullPointerException("event.createdContact is null"); //NOI18N //NOI18N
+ throw new NullPointerException("event.createdContact is null"); //NOI18N
} else if (event.getCreatedContact().getContactId() == null) {
// Throw NPE again
- throw new NullPointerException("event.createdContact.contactId is null"); //NOI18N //NOI18N
+ throw new NullPointerException("event.createdContact.contactId is null"); //NOI18N
} else if (event.getCreatedContact().getContactId() < 1) {
// Not valid
throw new IllegalStateException(MessageFormat.format("event.createdContact.contactId={0} is not valid.", event.getCreatedContact().getContactId())); //NOI18N
}
/**
- * Observes events being fired when a bean helper has successfully created a
- * mobile number instance.
+ * Event observer for updated contact data by the user
* <p>
- * @param event Event being fired
+ * @param event Updated contact data event
*/
- public void afterCreatedMobileNumberEvent (@Observes final ObservableCreatedMobileNumberEvent event) {
- // The event instance must be valid
+ public void afterUpdatedContactDataEvent (@Observes final ObservableUpdatedContactEvent event) {
+ // Event and contained entity instance should not be null
if (null == event) {
// Throw NPE
throw new NullPointerException("event is null"); //NOI18N
- } else if (event.getMobileNumber() == null) {
+ } else if (event.getUpdatedContact() == null) {
// Throw NPE again
- throw new NullPointerException("event.mobileNumber is null"); //NOI18N
- } else if (event.getMobileNumber().getPhoneId() == null) {
- // Throw NPE yet again
- throw new NullPointerException("event.mobileNumber.phoneId is null"); //NOI18N
- } else if (event.getMobileNumber().getPhoneId() < 1) {
- // Throw NPE yet again
- throw new NullPointerException(MessageFormat.format("event.mobileNumber.phoneId={0} is invalid", event.getMobileNumber().getPhoneId())); //NOI18N
+ throw new NullPointerException("event.updatedContact is null"); //NOI18N
+ } else if (event.getUpdatedContact().getContactId() == null) {
+ // userId is null
+ throw new NullPointerException("event.updatedContact.contactId is null"); //NOI18N
+ } else if (event.getUpdatedContact().getContactId() < 1) {
+ // Not avalid id
+ throw new IllegalArgumentException(MessageFormat.format("contactId of contact={0} is not valid: {1}", event.getUpdatedContact(), event.getUpdatedContact().getContactId())); //NOI18N
}
- // Get fax number from event
- final DialableMobileNumber number = event.getMobileNumber();
-
- // Copy all data to this bean
- this.setPhoneId(number.getPhoneId());
- this.setMobileProvider(number.getMobileProvider());
- this.setMobileNumber(number.getPhoneNumber());
- this.setPhoneEntryCreated(number.getPhoneEntryCreated());
- this.setPhoneEntryUpdated(number.getPhoneEntryUpdated());
+ // Clear all data
+ this.clear();
}
/**
try {
// Link it, too
updatedContact = this.adminContactPhoneBean.linkNewFaxNumberWithContact(targetContact, number);
- } catch (final PhoneNumberAlreadyLinkedException ex) {
+ } catch (final PhoneNumberAlreadyLinkedException | ContactNotFoundException ex) {
// Throw again as cause
- this.showFacesMessage("form_add_contact_fax:faxNumber", ex); //NOI18N
+ this.showFacesMessage("form_add_contact_fax:faxNumber", ex, FacesMessage.SEVERITY_ERROR); //NOI18N
return ""; //NOI18N
}
try {
// Link it, too
updatedContact = this.adminContactPhoneBean.linkNewLandLineNumberWithContact(targetContact, number);
- } catch (final PhoneNumberAlreadyLinkedException ex) {
+ } catch (final PhoneNumberAlreadyLinkedException | ContactNotFoundException ex) {
// Throw again as cause
- this.showFacesMessage("form_add_contact_landLine:landLineNumber", ex); //NOI18N
+ this.showFacesMessage("form_add_contact_landLine:landLineNumber", ex, FacesMessage.SEVERITY_ERROR); //NOI18N
return ""; //NOI18N
}
return "admin_show_contact"; //NOI18N
}
- /**
- * Links mobile number to contact from bean helper as "main mobile number".
- * <p>
- * @return Redirect outcome
- */
- public String doLinkMainMobileNumber () {
- // Get contact from helper
- final Contact targetContact = this.getContact();
-
- // Is all data properly set?
- if (null == targetContact) {
- // Throw NPE
- throw new NullPointerException("targetContact is null"); //NOI18N
- } else if (targetContact.getContactId() == null) {
- // Throw it again
- throw new NullPointerException("targetContact.contactId is null"); //NOI18N
- } else if (targetContact.getContactId() < 1) {
- // Is not valid
- throw new IllegalArgumentException(MessageFormat.format("targetContact.contactId={0} is not valid", targetContact.getContactId())); //NOI18N
- } else if (this.getMobileProvider() == null) {
- // Throw NPE
- throw new NullPointerException("this.mobileProvider is null"); //NOI18N
- } else if (this.getMobileProvider().getProviderId() == null) {
- // Throw NPE
- throw new NullPointerException("this.mobileProvider.providerId is null"); //NOI18N
- } else if (this.getMobileProvider().getProviderId() < 1) {
- // Throw NPE
- throw new NullPointerException(MessageFormat.format("this.mobileProvider.providerId={0} is invalid", this.getMobileProvider().getProviderId())); //NOI18N
- } else if (this.getMobileNumber() == null) {
- // Throw NPE again
- throw new NullPointerException("this.mobileNumber is null"); //NOI18N
- } else if (this.getMobileNumber() < 1) {
- // Invalid id number
- throw new IllegalArgumentException(MessageFormat.format("this.mobileNumber={0} is invalid", this.getMobileNumber())); //NOI18N
- }
-
- // Init instance
- final Contact updatedContact;
- final DialableMobileNumber number = new MobileNumber(this.getMobileProvider(), this.getMobileNumber());
-
- // Try it again
- try {
- // Link it, too
- updatedContact = this.adminContactPhoneBean.linkNewMobileNumberWithContact(targetContact, number);
- } catch (final PhoneNumberAlreadyLinkedException ex) {
- // Throw again as cause
- this.showFacesMessage("form_add_contact_mobile:mobileNumber", ex); //NOI18N
- return ""; //NOI18N
- }
-
- // Fire event
- this.adminLinkedMobileNumberEvent.fire(new AdminLinkedMobileNumberEvent(updatedContact, number));
-
- // Return to contact profile
- return "admin_show_contact"; //NOI18N
- }
-
/**
* Getter for contact instance
* <p>
this.landLineNumber = landLineNumber;
}
- /**
- * Getter for mobile number
- * <p>
- * @return Mobile number
- */
- public Long getMobileNumber () {
- return this.mobileNumber;
- }
-
- /**
- * Setter for mobile number
- * <p>
- * @param mobileNumber Mobile number
- */
- public void setMobileNumber (final Long mobileNumber) {
- this.mobileNumber = mobileNumber;
- }
-
- /**
- * Getter for mobile provider
- * <p>
- * @return Mobile provider
- */
- public MobileProvider getMobileProvider () {
- return this.mobileProvider;
- }
-
- /**
- * Setter for mobile provider
- * <p>
- * @param mobileProvider Mobile provider
- */
- public void setMobileProvider (final MobileProvider mobileProvider) {
- this.mobileProvider = mobileProvider;
- }
-
/**
* Setter for phone id
* <p>
try {
// Unlink it and return contact without fax instance
updatedContact = this.adminContactPhoneBean.unlinkFaxDataFromContact(this.getContact(), number);
- } catch (final PhoneNumberNotLinkedException ex) {
+ } catch (final PhoneNumberNotLinkedException | ContactNotFoundException ex) {
// Did not work
- this.showFacesMessage("form_unlink_contact_fax:faxNumberId", ex); //NOI18N
+ this.showFacesMessage("form_unlink_contact_fax:faxNumberId", ex, FacesMessage.SEVERITY_ERROR); //NOI18N
return ""; //NOI18N
}
try {
// Unlink it and return contact without landLine instance
updatedContact = this.adminContactPhoneBean.unlinkLandLineDataFromContact(this.getContact(), number);
- } catch (final PhoneNumberNotLinkedException ex) {
+ } catch (final PhoneNumberNotLinkedException | ContactNotFoundException ex) {
// Did not work
- this.showFacesMessage("form_unlink_contact_landLine:landLineNumberId", ex); //NOI18N
+ this.showFacesMessage("form_unlink_contact_landLine:landLineNumberId", ex, FacesMessage.SEVERITY_ERROR); //NOI18N
return ""; //NOI18N
}
return "admin_show_contact"; //NOI18N
}
- /**
- * Unlinks mobile data with current contact
- * <p>
- * @return Redirect outcome
- */
- public String unlinkMobileContactData () {
- // Create fax number instance
- final DialableMobileNumber number = this.createMobileNumber();
-
- // Is all data set
- if (number == null) {
- // Not set, throw NPE
- throw new NullPointerException("number is null"); //NOI18N
- } else if (number.getPhoneId() == null) {
- // Throw NPE again
- throw new NullPointerException("number.phoneId is null"); //NOI18N
- } else if (number.getPhoneId() < 1) {
- // Invalid number
- throw new IllegalArgumentException(MessageFormat.format("number.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
- } else if (number.getMobileProvider() == null) {
- // Throw NPE
- throw new NullPointerException("number.mobileProvider is null"); //NOI18N
- } else if (number.getMobileProvider().getProviderId() == null) {
- // ... throw again
- throw new NullPointerException("number.mobileProvider.providerId is null"); //NOI18N
- } else if (number.getMobileProvider().getProviderId() < 1) {
- // Id not valid
- throw new IllegalArgumentException(MessageFormat.format("number.mobileProvider.providerId={0} is not valid.", number.getMobileProvider().getProviderId())); //NOI18N
- } else if (number.getPhoneNumber() == null) {
- // Throw NPE again
- throw new NullPointerException("number.phoneNumber is null"); //NOI18N
- } else if (number.getPhoneNumber() < 1) {
- // Throw it again ...
- throw new NullPointerException(MessageFormat.format("number.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
- } else if (this.getContact() == null) {
- // ... and throw again
- throw new NullPointerException("this.contact is null"); //NOI18N
- } else if (this.getContact().getContactId() == null) {
- // ... and again ...
- throw new NullPointerException("this.contact.contactId is null"); //NOI18N
- } else if (this.getContact().getContactId() < 1) {
- // Invalid id number
- throw new IllegalArgumentException(MessageFormat.format("this.contact.contactId={0} is invalid.", this.getContact().getContactId())); //NOI18N
- }
-
- // Init contact instance
- final Contact updatedContact;
-
- try {
- // Unlink it and return contact without mobile instance
- updatedContact = this.adminContactPhoneBean.unlinkMobileDataFromContact(this.getContact(), number);
- } catch (final PhoneNumberNotLinkedException ex) {
- // Did not work
- this.showFacesMessage("form_unlink_contact_mobile:mobileNumberId", ex); //NOI18N
- return ""; //NOI18N
- }
-
- // Fire event
- this.mobileNumberUnlinkedEvent.fire(new AdminUnlinkedMobileNumberEvent(updatedContact, number));
-
- // All fine here
- return "admin_show_contact"; //NOI18N
- }
-
/**
* Clears this bean
*/
// Set all other fields
number.setPhoneEntryCreated(this.getPhoneEntryCreated());
number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
-
- // Is id number there?
- if (this.getPhoneId() instanceof Long) {
- // Set it
- number.setPhoneId(this.getPhoneId());
- }
+ number.setPhoneId(this.getPhoneId());
// Return it
return number;
// Add all other data
number.setPhoneEntryCreated(this.getPhoneEntryCreated());
number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
-
- // Is id number set?
- if (this.getPhoneId() instanceof Long) {
- // Set it
- number.setPhoneId(this.getPhoneId());
- }
-
- // Return it
- return number;
- }
-
- /**
- * Returns an instance of a DialableMobileNumber from all fields stored in
- * this bean.
- * <p>
- * @return An instance of a DialableMobileNumber class
- */
- private DialableMobileNumber createMobileNumber () {
- // Initialize it
- final DialableMobileNumber number = new MobileNumber(this.getMobileProvider(), this.getMobileNumber());
-
- // Add all other data
- number.setPhoneEntryCreated(this.getPhoneEntryCreated());
- number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
-
- // Is id number set?
- if (this.getPhoneId() instanceof Long) {
- // Set it
- number.setPhoneId(this.getPhoneId());
- }
+ number.setPhoneId(this.getPhoneId());
// Return it
return number;
/**
* Getter for phone entry created
* <p>
- * @param faxNumberEntryCreated Phone entry created
+ * @return Phone entry created
*/
@SuppressWarnings ("ReturnOfDateField")
- private Calendar getPhoneEntryCreated () {
+ private Date getPhoneEntryCreated () {
return this.phoneEntryCreated;
}
* @param phoneEntryCreated Phone entry created
*/
@SuppressWarnings ("AssignmentToDateFieldFromParameter")
- private void setPhoneEntryCreated (final Calendar phoneEntryCreated) {
+ private void setPhoneEntryCreated (final Date phoneEntryCreated) {
this.phoneEntryCreated = phoneEntryCreated;
}
* @return Phone entry updated
*/
@SuppressWarnings ("ReturnOfDateField")
- private Calendar getPhoneEntryUpdated () {
+ private Date getPhoneEntryUpdated () {
return this.phoneEntryUpdated;
}
* @param phoneEntryUpdated Phone entry updated
*/
@SuppressWarnings ("AssignmentToDateFieldFromParameter")
- private void setPhoneEntryUpdated (final Calendar phoneEntryUpdated) {
+ private void setPhoneEntryUpdated (final Date phoneEntryUpdated) {
this.phoneEntryUpdated = phoneEntryUpdated;
}