import java.text.MessageFormat;
import java.util.Date;
import java.util.Iterator;
-import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.event.Event;
import org.mxchange.jcontacts.contact.UserContact;
import org.mxchange.jcontacts.contact.gender.Gender;
import org.mxchange.jcontacts.contact.utils.ContactUtils;
+import org.mxchange.jcontacts.events.contact.add.AdminAddedContactEvent;
import org.mxchange.jcontacts.events.contact.add.AdminContactAddedEvent;
import org.mxchange.jcontacts.events.contact.update.AdminContactUpdatedEvent;
import org.mxchange.jcontacts.events.contact.update.AdminUpdatedContactEvent;
import org.mxchange.jcontacts.exceptions.ContactAlreadyAddedException;
import org.mxchange.jcountry.data.Country;
-import org.mxchange.jjobs.beans.helper.JobsAdminWebRequestController;
+import org.mxchange.jjobs.beans.BaseJobsController;
+import org.mxchange.jjobs.beans.helper.JobsWebRequestController;
+import org.mxchange.jphone.phonenumbers.DialableNumber;
import org.mxchange.jphone.phonenumbers.cellphone.CellphoneNumber;
import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber;
import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
import org.mxchange.jphone.phonenumbers.landline.LandLineNumber;
import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider;
-import org.mxchange.jusercore.events.user.add.AdminAddedUserEvent;
/**
* An administrative user bean (controller)
*/
@Named ("adminContactController")
@RequestScoped
-public class JobsAdminContactWebRequestBean implements JobsAdminContactWebRequestController {
+public class JobsAdminContactWebRequestBean extends BaseJobsController implements JobsAdminContactWebRequestController {
/**
* Serial number
private static final long serialVersionUID = 542_145_347_916L;
/**
- * An event fired when the administrator has added a new user
+ * An event fired when the administrator has added a new contact
*/
@Inject
@Any
- private Event<AdminAddedUserEvent> addedUserEvent;
+ private Event<AdminAddedContactEvent> addedContactEvent;
/**
* Admin helper instance
*/
@Inject
- private JobsAdminWebRequestController adminHelper;
+ private JobsWebRequestController beanHelper;
/**
* Birth day
*/
private final ContactSessionBeanRemote contactBean;
+ /**
+ * General contact controller
+ */
+ @Inject
+ private JobsContactWebSessionController contactController;
+
/**
* Contact id
*/
*/
private String street;
+ /**
+ * Title
+ */
+ private String title;
+
/**
* An event fired when the administrator has updated contact data
*/
* Default constructor
*/
public JobsAdminContactWebRequestBean () {
- // Set gender to UNKNOWN
- this.gender = Gender.UNKNOWN;
-
// Try it
try {
// Get initial context
// Fire event
this.addedContactEvent.fire(new AdminContactAddedEvent(updatedContact));
- // Return outcome
- return "admin_list_contact"; //NOI18N
- }
-
- @Override
- public List<Contact> allContacts () {
- return this.contactController.allContacts();
- }
-
- @Override
- public String changeContactData () {
- // Get contact instance
- Contact contact = this.adminHelper.getContact();
-
- // Default is not same contact
- if (this.isSameContactFound(contact)) {
- // Already registered
- throw new FaceletException(new ContactAlreadyAddedException(contact));
- }
-
- // Init contact
- Contact updatedContact;
-
- // Try to call EJB
- try {
- // Call EJB
- updatedContact = this.contactBean.addContact(contact);
- } catch (final ContactAlreadyAddedException ex) {
- // Throw again
- throw new FaceletException(ex);
- }
-
- // Fire event
- this.addedContactEvent.fire(new AdminContactAddedEvent(updatedContact));
-
// Clear this bean
this.clear();
// Set all fields: contact
this.setContactId(contact.getContactId());
+ this.setTitle(contact.getContactTitle());
this.setBirthday(contact.getContactBirthday());
this.setCity(contact.getContactCity());
this.setComment(contact.getContactComment());
this.setFirstName(contact.getContactFirstName());
this.setGender(contact.getContactGender());
this.setHouseNumber(contact.getContactHouseNumber());
+ this.setHouseNumberExtension(contact.getContactHouseNumberExtension());
this.setStreet(contact.getContactStreet());
this.setZipCode(contact.getContactZipCode());
// ... cellphone data
- this.setCellphoneId(contact.getContactCellphoneNumber().getPhoneId());
- this.setCellphoneCarrier(contact.getContactCellphoneNumber().getCellphoneProvider());
- this.setCellphoneNumber(contact.getContactCellphoneNumber().getPhoneNumber());
+ if (contact.getContactCellphoneNumber() instanceof DialableCellphoneNumber) {
+ this.setCellphoneId(contact.getContactCellphoneNumber().getPhoneId());
+ this.setCellphoneCarrier(contact.getContactCellphoneNumber().getCellphoneProvider());
+ this.setCellphoneNumber(contact.getContactCellphoneNumber().getPhoneNumber());
+ }
// ... fax data
- this.setFaxId(contact.getContactFaxNumber().getPhoneId());
- this.setFaxAreaCode(contact.getContactFaxNumber().getPhoneAreaCode());
- this.setFaxCountry(contact.getContactFaxNumber().getPhoneCountry());
- this.setFaxNumber(contact.getContactFaxNumber().getPhoneNumber());
+ if (contact.getContactFaxNumber() instanceof DialableFaxNumber) {
+ this.setFaxId(contact.getContactFaxNumber().getPhoneId());
+ this.setFaxAreaCode(contact.getContactFaxNumber().getPhoneAreaCode());
+ this.setFaxCountry(contact.getContactFaxNumber().getPhoneCountry());
+ this.setFaxNumber(contact.getContactFaxNumber().getPhoneNumber());
+ }
// .. land-line data
- this.setLandLineId(contact.getContactLandLineNumber().getPhoneId());
- this.setPhoneAreaCode(contact.getContactLandLineNumber().getPhoneAreaCode());
- this.setPhoneCountry(contact.getContactLandLineNumber().getPhoneCountry());
- this.setPhoneNumber(contact.getContactLandLineNumber().getPhoneNumber());
- }
-
- @Override
- public String editContactData () {
- // Get contact instance
- Contact contact = this.adminHelper.getContact();
-
- // Is the land-line number set?
if (contact.getContactLandLineNumber() instanceof DialableLandLineNumber) {
- // .. land-line data
this.setLandLineId(contact.getContactLandLineNumber().getPhoneId());
this.setPhoneAreaCode(contact.getContactLandLineNumber().getPhoneAreaCode());
this.setPhoneCountry(contact.getContactLandLineNumber().getPhoneCountry());
this.setPhoneNumber(contact.getContactLandLineNumber().getPhoneNumber());
}
-
- // Log message
- //* NOISY-DEBUG: */ System.out.println("AdminContactController::copyContactToController(): EXIT!"); //NOI18N
}
@Override
// Check if contact instance is in helper and valid
if (null == contact) {
// Throw NPE
- throw new NullPointerException("adminHelper.contact is null"); //NOI18N
+ throw new NullPointerException("beanHelper.contact is null"); //NOI18N
} else if (contact.getContactId() == null) {
// Throw NPE again
- throw new NullPointerException("adminHelper.contact.contactId is null"); //NOI18N //NOI18N
+ throw new NullPointerException("beanHelper.contact.contactId is null"); //NOI18N //NOI18N
} else if (contact.getContactId() < 1) {
// Invalid id
- throw new IllegalStateException(MessageFormat.format("adminHelper.contact.contactId={0} is invalid", contact.getContactId())); //NOI18N
+ throw new IllegalStateException(MessageFormat.format("beanHelper.contact.contactId={0} is invalid", contact.getContactId())); //NOI18N
}
// Update all data in contact
return contact;
}
+ @Override
+ public String editContactData () {
+ // Get contact instance
+ Contact contact = this.beanHelper.getContact();
+
+ // Check if contact instance is in helper and valid
+ if (null == contact) {
+ // Throw NPE
+ throw new NullPointerException("beanHelper.contact is null"); //NOI18N
+ } else if (contact.getContactId() == null) {
+ // Throw NPE again
+ throw new NullPointerException("beanHelper.contact.contactId is null"); //NOI18N //NOI18N
+ } else if (contact.getContactId() < 1) {
+ // Invalid id
+ throw new IllegalStateException(MessageFormat.format("beanHelper.contact.contactId={0} is invalid", contact.getContactId())); //NOI18N
+ }
+
+ // Update all data in contact
+ this.updateContactData(contact);
+
+ // Call EJB for updating contact data
+ Contact updatedContact = this.contactBean.updateContactData(contact, this.isCellphoneUnlinked, this.isLandLineUnlinked, this.isFaxUnlinked);
+
+ // Fire event
+ this.updatedContactEvent.fire(new AdminContactUpdatedEvent(updatedContact));
+
+ // Clear bean
+ this.clear();
+
+ // Return to contact list (for now)
+ return "admin_list_contact"; //NOI18N
+ }
+
+ @Override
+ public String generateCellphoneNumber (final DialableCellphoneNumber cellphoneNumber) {
+ // Is it null?
+ if (null == cellphoneNumber) {
+ // Return null
+ return null;
+ }
+
+ // Get all data
+ String number = String.format(
+ "%s%d%d", //NOI18N
+ cellphoneNumber.getCellphoneProvider().getProviderCountry().getCountryExternalDialPrefix(),
+ cellphoneNumber.getCellphoneProvider().getProviderDialPrefix(),
+ cellphoneNumber.getPhoneNumber()
+ );
+
+ // Return it
+ return number;
+ }
+
+ @Override
+ public String generatePhoneNumber (final DialableNumber phoneNumber) {
+ // Is it null?
+ if (null == phoneNumber) {
+ // Return null
+ return null;
+ }
+
+ // Generate it
+ String number = String.format(
+ "%s%d%d", //NOI18N
+ phoneNumber.getPhoneCountry().getCountryExternalDialPrefix(),
+ phoneNumber.getPhoneAreaCode(),
+ phoneNumber.getPhoneNumber()
+ );
+
+ // Return it
+ return number;
+ }
+
@Override
@SuppressWarnings ("ReturnOfDateField")
public Date getBirthday () {
this.street = street;
}
+ @Override
+ public String getTitle () {
+ return this.title;
+ }
+
+ @Override
+ public void setTitle (final String title) {
+ this.title = title;
+ }
+
@Override
public Integer getZipCode () {
return this.zipCode;
private void clear () {
// Clear all data
// - personal data
- this.setGender(Gender.UNKNOWN);
+ this.setGender(null);
+ this.setTitle(null);
this.setFirstName(null);
this.setFamilyName(null);
this.setStreet(null);
this.setHouseNumber(null);
+ this.setHouseNumberExtension(null);
this.setZipCode(null);
this.setCity(null);
this.setCountry(null);
boolean IsFound = false;
// Get iterator
- Iterator<Contact> iterator = this.allContacts().iterator();
+ Iterator<Contact> iterator = this.contactController.allContacts().iterator();
// Loop through all
while (iterator.hasNext()) {
// Update all fields
contact.setContactGender(this.getGender());
+ contact.setContactTitle(this.getTitle());
contact.setContactFirstName(this.getFirstName());
contact.setContactFamilyName(this.getFamilyName());
contact.setContactStreet(this.getStreet());