package org.mxchange.jcontacts.contact;
import java.text.MessageFormat;
+import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import javax.ejb.Stateless;
import javax.persistence.NoResultException;
import javax.persistence.Query;
-import org.mxchange.jcontacts.exceptions.ContactNotFoundException;
-import org.mxchange.pizzaaplication.database.BasePizzaDatabaseBean;;
import org.mxchange.jcontacts.contact.utils.ContactUtils;
-
+import org.mxchange.jcontacts.exceptions.ContactAlreadyAddedException;
+import org.mxchange.jcontacts.exceptions.ContactNotFoundException;
+import org.mxchange.pizzaaplication.database.BasePizzaDatabaseBean;
/**
* A contact EJB
* <p>
public PizzaContactSessionBean () {
}
+ @Override
+ public Contact addContact (final Contact contact) throws ContactAlreadyAddedException {
+ // Trace message
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("addContact: contact={0} - CALLED!", contact));
+
+ // Is the instance set?
+ if (null == contact) {
+ // Throw NPE
+ throw new NullPointerException("contact is null");
+ } else if (contact.getContactId() != null) {
+ // Should be null
+ throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} - is not null", contact.getContactId()));
+ }
+
+ // Set created timestamp
+ contact.setContactCreated(new GregorianCalendar());
+
+ // Set all created timestamps, if instance is there
+ this.setAllContactPhoneEntriesCreated(contact);
+
+ // Persist it
+ this.getEntityManager().persist(contact);
+
+ // Flush it to get contactId set
+ this.getEntityManager().flush();
+
+ // Trace message
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("addContact: contact.contactId={0} after persisting - EXIT!", contact.getContactId()));
+
+ // Return it
+ return contact;
+ }
+
+ @Override
+ public Contact findContactByEmailAddress (final String emailAddress) throws ContactNotFoundException {
+ // Log trace message
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("findContactByEmailAddress: emailAddress={0} - CALLED!", emailAddress)); //NOI18N
+
+ // The parameter must be valid
+ if (null == emailAddress) {
+ // Throw NPE
+ throw new NullPointerException("emailAddress is null"); //NOI18N
+ } else if (emailAddress.isEmpty()) {
+ // Not valid
+ throw new IllegalArgumentException("emailAddress is empty"); //NOI18N
+ }
+
+ // Get query instance
+ Query query = this.getEntityManager().createNamedQuery("SearchContactByEmailAddress", UserContact.class); //NOI18N
+
+ // Set parameter
+ query.setParameter("emailAddress", emailAddress); //NOI18N
+
+ // Init contact instance
+ Contact contact;
+
+ // Try to find a result
+ try {
+ // Find a single result
+ contact = (Contact) query.getSingleResult();
+
+ // Log trace message
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("findContactByEmailAddress: Found contact={0}", contact)); //NOI18N
+ } catch (final NoResultException ex) {
+ // No result found
+ throw new ContactNotFoundException(emailAddress, ex);
+ }
+
+ // Log trace message
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("findContactByEmailAddress: contact={0} - EXIT!", contact)); //NOI18N
+
+ // Return found instance
+ return contact;
+ }
+
@Override
public Contact findContactById (final Long contactId) throws ContactNotFoundException {
// Log trace message
return emailAddresses;
}
+ @Override
+ public boolean isEmailAddressRegistered (final String emailAddress) {
+ // Log trace message
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("isEmailAddressRegistered: emailAddress={0} - CALLED!", emailAddress)); //NOI18N
+
+ // The email address should be valid
+ if (null == emailAddress) {
+ // Is null
+ throw new NullPointerException("emailAddress is null");
+ } else if (emailAddress.isEmpty()) {
+ // Is empty
+ throw new IllegalArgumentException("emailAddress is empty");
+ }
+
+ // Default is not found
+ boolean isFound = false;
+
+ try {
+ // Ask other method for contact instance
+ Contact contact = this.findContactByEmailAddress(emailAddress);
+
+ // Log debug message
+ this.getLoggerBeanLocal().logDebug(MessageFormat.format("isEmailAddressRegistered: Found contact={0} for emailAddress={1}", contact, emailAddress));
+
+ // It is found ...
+ isFound = true;
+ } catch (final ContactNotFoundException ex) {
+ // @TODO Was not found, log exception for spam check?
+ }
+
+ // Log trace message
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("isEmailAddressRegistered: isFound={0} - EXIT!", isFound));
+
+ // Return status
+ return isFound;
+ }
+
@Override
public Contact lookupContact (final Contact contact) {
// Log trace message
- this.getLoggerBeanLocal().logTrace(MessageFormat.format("isContactFound: contact={0} - CALLED!", contact)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("lookupContact: contact={0} - CALLED!", contact)); //NOI18N
// Parameter should be valid
if (null == contact) {
// Is the list empty?
if (contacts.isEmpty()) {
// Then abort here
- this.getLoggerBeanLocal().logTrace("isContactFound: No contacts registered, returning 'false' ..."); //NOI18N
+ this.getLoggerBeanLocal().logTrace("lookupContact: No contacts registered, returning 'false' ..."); //NOI18N
return null;
}
Contact next = iterator.next();
// Debug message
- this.getLoggerBeanLocal().logDebug(MessageFormat.format("isContactFound: next={0}", next)); //NOI18N
+ this.getLoggerBeanLocal().logDebug(MessageFormat.format("lookupContact: next={0}", next)); //NOI18N
// Is same contact?
if ((Objects.equals(contact, next)) || (ContactUtils.isSameContact(contact, next))) {
// Debug message
- this.getLoggerBeanLocal().logDebug(MessageFormat.format("isContactFound: Found same contact, id={0}", next.getContactId())); //NOI18N
+ this.getLoggerBeanLocal().logDebug(MessageFormat.format("lookupContact: Found same contact, id={0}", next.getContactId())); //NOI18N
// Found it
foundContact = next;
}
// Trace message
- this.getLoggerBeanLocal().logTrace(MessageFormat.format("isContactFound: foundContact={0} - EXIT!", foundContact)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("lookupContact: foundContact={0} - EXIT!", foundContact)); //NOI18N
// Return status
return foundContact;