import javax.naming.NamingException;
import org.mxchange.addressbook.beans.BaseAddressbookController;
import org.mxchange.addressbook.beans.login.AddressbookUserLoginWebSessionController;
+import org.mxchange.addressbook.beans.user.AddressbookUserWebSessionController;
import org.mxchange.jcontacts.contact.Contact;
import org.mxchange.jcontacts.contact.ContactSessionBeanRemote;
import org.mxchange.jcontacts.contact.UserContact;
import org.mxchange.jusercore.events.login.UserLoggedInEvent;
import org.mxchange.jusercore.events.registration.UserRegisteredEvent;
import org.mxchange.jusercore.events.user.add.AdminAddedUserEvent;
+import org.mxchange.jusercore.events.user.linked.AdminLinkedUserEvent;
import org.mxchange.jusercore.exceptions.UserPasswordMismatchException;
+import org.mxchange.jusercore.model.user.User;
/**
* A general contact bean (controller)
*/
private Long phoneNumber;
+ /**
+ * A list of all selectable contacts
+ */
+ private List<Contact> selectableContacts;
+
/**
* Street
*/
private String street;
+ /**
+ * Regular user controller
+ */
+ @Inject
+ private AddressbookUserWebSessionController userController;
+
/**
* Login bean (controller)
*/
@Override
public void afterAdminAddedContact (@Observes final AdminAddedContactEvent event) {
- // Trace message
- /* NOISY-DEBUG: */ System.out.println(MessageFormat.format("contactController.afterAdminAddedContact(): event={0} - CALLED!", event)); //NOI18N
-
// The event must be valid
if (null == event) {
// Throw NPE
throw new NullPointerException("event.addedContact is null"); //NOI18N
} else if (event.getAddedContact().getContactId() == null) {
// ... and again
- throw new NullPointerException("event.addedContact.customerId is null"); //NOI18N
+ throw new NullPointerException("event.addedContact.contactId is null"); //NOI18N
} else if (event.getAddedContact().getContactId() < 1) {
// Not valid
- throw new IllegalArgumentException(MessageFormat.format("event.addedContact.customerId={0} is not valid", event.getAddedContact().getContactId())); //NOI18N //NOI18N
+ throw new IllegalArgumentException(MessageFormat.format("event.addedContact.contactId={0} is not valid", event.getAddedContact().getContactId())); //NOI18N //NOI18N
}
// Clear this bean
@Override
public void afterAdminAddedUserEvent (@Observes final AdminAddedUserEvent event) {
- // Trace message
- //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("UserWebBean:afterAdminAddedUserEvent: event={0} - CALLED!", event)); //NOI18N
-
// event should not be null
if (null == event) {
// Throw NPE
// Clear all data
this.clear();
+ }
- // Trace message
- //* NOISY-DEBUG: */ System.out.println("UserWebBean:afterAdminAddedUserEvent: EXIT!"); //NOI18N
+ @Override
+ public void afterAdminLinkedUser (@Observes final AdminLinkedUserEvent event) {
+ // event should not be null
+ if (null == event) {
+ // Throw NPE
+ throw new NullPointerException("event is null"); //NOI18N
+ } else if (event.getLinkedUser() == null) {
+ // Throw NPE again
+ throw new NullPointerException("event.linkedUser is null"); //NOI18N
+ } else if (event.getLinkedUser().getUserContact() == null) {
+ // Throw NPE again
+ throw new NullPointerException("event.linkedUser.userContact is null"); //NOI18N
+ } else if (event.getLinkedUser().getUserContact().getContactId() == null) {
+ // userId is null
+ throw new NullPointerException("event.linkedUser.userContact.contactId is null"); //NOI18N
+ } else if (event.getLinkedUser().getUserContact().getContactId() < 1) {
+ // Not avalid id
+ throw new IllegalArgumentException(MessageFormat.format("contactId of contact={0} is not valid: {1}", event.getLinkedUser(), event.getLinkedUser().getUserContact().getContactId())); //NOI18N
+ }
+
+ // Remove contact from list available contacts list
+ this.selectableContacts.remove(event.getLinkedUser().getUserContact());
+
+ // Clear all data
+ this.clear();
}
@Override
public void afterAdminUpdatedContactDataEvent (@Observes final AdminUpdatedContactEvent event) {
- // Trace message
- //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("ContactWebBean:afterAdminUpdatedContactDataEvent: event={0} - CALLED!", event)); //NOI18N
-
// event should not be null
if (null == event) {
// Throw NPE
@Override
public void afterRegistrationEvent (@Observes final UserRegisteredEvent event) {
- // Trace message
- //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("ContactWebBean:afterRegistration: event={0} - CALLED!", event)); //NOI18N
-
// event should not be null
if (null == event) {
// Throw NPE
// Get user instance
Contact registeredContact = event.getRegisteredUser().getUserContact();
- // Debug message
- //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("ContactWebBean:afterRegistration: registeredContact={0}", registeredContact)); //NOI18N
-
// Copy all data from registered->user
this.copyContact(registeredContact);
// Clear all data
this.clear();
-
- // Trace message
- //* NOISY-DEBUG: */ System.out.println("ContactWebBean:afterRegistration: EXIT!"); //NOI18N
}
@Override
public void afterUserConfirmedAccount (@Observes final UserConfirmedAccountEvent event) {
- // Trace message
- //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("ContactWebBean:afterAdminUpdatedContactDataEvent: event={0} - CALLED!", event)); //NOI18N
-
// event should not be null
if (null == event) {
// Throw NPE
// Is id number the same?
if (Objects.equals(contact.getContactId(), next.getContactId())) {
// Found entry, so remove it and abort
- this.contactList.remove(next);
+ this.removeContact(next);
break;
}
}
@Override
public void afterUserLogin (@Observes final UserLoggedInEvent event) {
- // Trace message
- //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("ContactWebBean:afterUserLogin: event={0} - CALLED!", event)); //NOI18N
-
// event should not be null
if (null == event) {
// Throw NPE
// Copy all data to this bean
this.copyContact(event.getLoggedInUser().getUserContact());
-
- // Trace message
- //* NOISY-DEBUG: */ System.out.println("ContactWebBean:afterUserLogin - EXIT!"); //NOI18N
}
@Override
// Get full contact list
this.contactList = this.contactBean.getAllContacts();
+
+ // Get all users
+ List<User> allUsers = this.userController.allUsers();
+
+ // Get all contacts
+ List<Contact> allContacts = this.contactBean.getAllContacts();
+
+ // Get iterator
+ Iterator<Contact> iterator = allContacts.iterator();
+
+ // Loop through it
+ while (iterator.hasNext()) {
+ // Get next element
+ Contact next = iterator.next();
+
+ // Get iterator
+ Iterator<User> userIterator = allUsers.iterator();
+
+ // Loop through all users
+ while (userIterator.hasNext()) {
+ // Get user instance
+ User nextUser = userIterator.next();
+
+ // Is contact same?
+ if (Objects.equals(next, nextUser.getUserContact())) {
+ // Found same
+ iterator.remove();
+ break;
+ }
+ }
+ }
+
+ // Set contact list
+ this.selectableContacts = allContacts;
}
@Override
return localContact;
}
+ @Override
+ public List<Contact> selectableContacts () {
+ return Collections.unmodifiableList(this.selectableContacts);
+ }
+
@Override
public void updateContactDataFromController (final Contact contact) {
// Is the instance valid?
private void clear () {
// Clear all data
// - personal data
- this.setGender(Gender.UNKNOWN);
+ this.setGender(null);
+ // TODO: Unfinished this.setTitle(null);
this.setFirstName(null);
this.setFamilyName(null);
this.setStreet(null);