super("jms/pizzaservice-queue-factory", "jms/pizzaservice-email-queue"); //NOI18N
}
- @Override
- @SuppressWarnings ("unchecked")
- public List<String> allQueuedAddresses () {
- // Trace message
- this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allQueuedAddresses: CALLED!", this.getClass().getSimpleName())); //NOI18N
-
- // Get named query
- final Query query = this.getEntityManager().createNamedQuery("AllEmailAddressChanges", String.class); //NOI18N
-
- // Get all entries
- final List<String> emailAddresses = query.getResultList();
-
- // Trace message
- this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allQueuedAddresses: emailAddresses.size()={1} - EXIT!", this.getClass().getSimpleName(), emailAddresses.size())); //NOI18N
-
- // Return it
- return emailAddresses;
- }
-
@Override
public void enqueueEmailAddressForChange (final ChangeableEmailAddress emailChange, final String baseUrl) {
// Trace message
} else if (emailChange.getEmailChangeUser().getUserId() < 1) {
// Not valid id
throw new IllegalArgumentException(MessageFormat.format("emailChange.emailChangeUser.userId={0} is invalid.", emailChange.getEmailChangeUser().getUserId())); //NOI18N
- } else if (!this.userBean.ifUserExists(emailChange.getEmailChangeUser())) {
- // User does not exist
- throw new EJBException(MessageFormat.format("Email change with id {0} does not exist.", emailChange.getEmailChangeId())); //NOI18N
} else if (emailChange.getEmailAddress().trim().isEmpty()) {
// Email address is empty
throw new IllegalArgumentException("emailChange.emaiLAddress is empty."); //NOI18N
}
@Override
- public boolean isEmailAddressEnqueued (final String emailAddress) {
+ @SuppressWarnings ("unchecked")
+ public List<ChangeableEmailAddress> fetchAllQueuedAddressChanges () {
// Trace message
- this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressEnqueued: emailAddress={1} - CALLED!", this.getClass().getSimpleName(), emailAddress)); //NOI18N
-
- // Create query instance
- final Query query = this.getEntityManager().createNamedQuery("SearchEmailChangeByEmail"); //NOI18N
-
- // Add email address as parameter
- query.setParameter("email", emailAddress); //NOI18N
-
- // Initialize variable
- boolean isFound = false;
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allQueuedAddresses: CALLED!", this.getClass().getSimpleName())); //NOI18N
- // Try it
- try {
- // Try to get single result
- final ChangeableEmailAddress dummy = (ChangeableEmailAddress) query.getSingleResult();
+ // Get named query
+ final Query query = this.getEntityManager().createNamedQuery("AllEmailAddressChanges", ChangeableEmailAddress.class); //NOI18N
- // Found it
- isFound = true;
- } catch (final NoResultException ex) {
- // Log it
- this.getLoggerBeanLocal().logException(ex);
- }
+ // Get all entries
+ final List<ChangeableEmailAddress> emailAddresses = query.getResultList();
// Trace message
- this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressEnqueued: isFound={1} - EXIT!", this.getClass().getSimpleName(), isFound)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allQueuedAddresses: emailAddresses.size()={1} - EXIT!", this.getClass().getSimpleName(), emailAddresses.size())); //NOI18N
// Return it
- return isFound;
+ return emailAddresses;
}
@Override
} else if (emailAddress.getEmailAddress().trim().isEmpty()) {
// Email address is empty
throw new IllegalArgumentException("emailAddress.emaiLAddress is empty."); //NOI18N
- } else if (!this.userBean.ifUserExists(emailAddress.getEmailChangeUser())) {
- // User does not exist
- throw new EJBException(MessageFormat.format("Email change with id {0} does not exist.", emailAddress.getEmailChangeId())); //NOI18N
} else if (!this.isEmailAddressEnqueued(emailAddress.getEmailAddress())) {
// Email address is not enqueued
throw new EJBException(MessageFormat.format("Email address {0} is not enqueued.", emailAddress.getEmailAddress())); //NOI18N
emailAddressChange.setEmailChangeHash(hash);
}
+ /**
+ * Checks whether given email address is already enqueued
+ * <p>
+ * @param emailAddress Email address to check
+ * <p>
+ * @return Whether the email address has already been enqueued
+ */
+ private boolean isEmailAddressEnqueued (final String emailAddress) {
+ // Trace message
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressEnqueued: emailAddress={1} - CALLED!", this.getClass().getSimpleName(), emailAddress)); //NOI18N
+
+ // Default is not found
+ boolean isFound = false;
+
+ // Fetch all records
+ for (final ChangeableEmailAddress address : this.fetchAllQueuedAddressChanges()) {
+ // Is it found?
+ if (address.getEmailAddress().equals(emailAddress)) {
+ // Yes, set flag, skip further iterations
+ isFound = true;
+ break;
+ }
+ }
+
+ // Trace message
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressEnqueued: isFound={1} - EXIT!", this.getClass().getSimpleName(), isFound)); //NOI18N
+
+ // Return it
+ return isFound;
+ }
+
}