/*
- * Copyright (C) 2016 Roland Haeder
+ * Copyright (C) 2016 Cho-Time GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
*/
package org.mxchange.jjobs.beans.contact.phone;
+import de.chotime.landingpage.beans.BaseLandingController;
+import de.chotime.landingpage.beans.contact.LandingContactWebSessionController;
+import de.chotime.landingpage.beans.helper.LandingWebRequestController;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
-import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
import javax.enterprise.event.Observes;
-import javax.faces.view.facelets.FaceletException;
import javax.inject.Inject;
import javax.inject.Named;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
import org.mxchange.jcontacts.contact.Contact;
+import org.mxchange.jcontacts.events.cellphone.unlinked.AdminUnlinkedCellphoneNumberEvent;
import org.mxchange.jcontacts.events.contact.add.AdminAddedContactEvent;
import org.mxchange.jcontacts.events.contact.update.AdminUpdatedContactEvent;
-import org.mxchange.jjobs.beans.BaseJobsController;
-import org.mxchange.jjobs.beans.contact.JobsContactWebSessionController;
-import org.mxchange.jjobs.beans.helper.JobsWebRequestController;
-import org.mxchange.jjobs.beans.phone.JobsAdminPhoneWebRequestController;
-import org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote;
+import org.mxchange.jphone.phonenumbers.DialableNumber;
+import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber;
import org.mxchange.jusercore.events.user.add.AdminAddedUserEvent;
/**
- * A general contact phone bean (controller)
+ * An administrative contact phone controller (bean)
* <p>
- * @author Roland Haeder<roland@mxchange.org>
+ * @author Roland Haeder<rhaeder@cho-time.de>
*/
@Named ("contactPhoneController")
@SessionScoped
-public class JobsContactPhoneWebSessionBean extends BaseJobsController implements JobsContactPhoneWebSessionController {
+public class JobsContactPhoneWebSessionBean extends BaseLandingController implements JobsContactPhoneWebSessionController {
/**
* Serial number
*/
private static final long serialVersionUID = 542_145_347_916L;
- /**
- * Administrative phone controller
- */
- @Inject
- private JobsAdminPhoneWebRequestController adminPhoneController;
-
/**
* Admin helper instance
*/
@Inject
- private JobsWebRequestController beanHelper;
+ private LandingWebRequestController beanHelper;
/**
* General contact controller
*/
@Inject
- private JobsContactWebSessionController contactController;
-
- /**
- * "Cache" for contact lists, mostly only one is assigned. So this cache
- * shouldn't grow beyond control.
- */
- private final Map<Long, List<Contact>> contacts;
+ private LandingContactWebSessionController contactController;
/**
- * Remote EJB for phone number (administrative)
+ * "Cache" for contact's cellphone, land-line and fax numbers. Currently one
+ * one per each type is supported. Maybe later this will change into a
+ * OneToMany relationship (one contact, many numbers).
*/
- private PhoneSessionBeanRemote phoneBean;
+ private final Map<DialableNumber, List<Contact>> contacts;
/**
* Default constructor
*/
public JobsContactPhoneWebSessionBean () {
- // Try it
- try {
- // Get initial context
- Context context = new InitialContext();
-
- // Try to lookup the beans
- this.phoneBean = (PhoneSessionBeanRemote) context.lookup("java:global/jlandingpage-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote"); //NOI18N
- } catch (final NamingException e) {
- // Throw again
- throw new FaceletException(e);
- }
-
// Init lists/maps
this.contacts = new HashMap<>(10);
}
throw new NullPointerException("event.addedContact.contactId is null"); //NOI18N
} else if (event.getAddedContact().getContactId() < 1) {
// Not valid
- throw new IllegalArgumentException(MessageFormat.format("event.addedContact.contactId={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
}
// Clear this bean
this.clear();
}
+ @Override
+ public void afterAdminUnlinkedCellphoneContactDataEvent (@Observes final AdminUnlinkedCellphoneNumberEvent event) {
+ // event should not be null
+ if (null == event) {
+ // Throw NPE
+ throw new NullPointerException("event is null"); //NOI18N
+ } else if (event.getUnlinkedCellphoneNumber() == null) {
+ // Throw NPE again
+ throw new NullPointerException("event.unlinkedCellphoneNumber is null"); //NOI18N
+ } else if (event.getUnlinkedCellphoneNumber().getPhoneId() == null) {
+ // userId is null
+ throw new NullPointerException("event.unlinkedCellphoneNumber.contactId is null"); //NOI18N
+ } else if (event.getUnlinkedCellphoneNumber().getPhoneId() < 1) {
+ // Not avalid id
+ throw new IllegalArgumentException(MessageFormat.format("contactId of contact={0} is not valid: {1}", event.getUnlinkedCellphoneNumber(), event.getUnlinkedCellphoneNumber().getPhoneId())); //NOI18N
+ }
+
+ // Remove it from list
+ this.contacts.remove(event.getUnlinkedCellphoneNumber());
+
+ // Clear all data
+ this.clear();
+ }
+
@Override
public void afterAdminUpdatedContactDataEvent (@Observes final AdminUpdatedContactEvent event) {
// event should not be null
@Override
public List<Contact> allCellphoneContacts () {
// Get id
- Long phoneId = this.beanHelper.getCellPhoneNumber().getPhoneId();
+ DialableCellphoneNumber phone = this.beanHelper.getCellPhoneNumber();
// Is cache there?
- if (this.contacts.containsKey(phoneId)) {
+ if (this.contacts.containsKey(phone)) {
// Return cached version
- return this.contacts.get(phoneId);
+ return this.contacts.get(phone);
} else {
// Ask bean
List<Contact> list = new LinkedList<>();
}
// Store result in cache
- this.contacts.put(phoneId, list);
+ this.contacts.put(phone, list);
// Return now-cached list
return list;
}
}
- /**
- * Post-initialization of this class
- */
- @PostConstruct
- public void init () {
- }
-
/**
* Clears this bean
*/