From: Roland Häder <roland@mxchange.org>
Date: Fri, 13 May 2016 12:44:14 +0000 (+0200)
Subject: implemented business method generateConfirmationKey()
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=83392fe89d47a8b3b87aee290c647a505ae17781;p=jjobs-mailer-ejb.git

implemented business method generateConfirmationKey()

Signed-off-by: Roland Häder <roland@mxchange.org>
---

diff --git a/src/java/org/mxchange/jusercore/model/register/AddressbookUserRegistrationSessionBean.java b/src/java/org/mxchange/jusercore/model/register/AddressbookUserRegistrationSessionBean.java
index 32cf647..0883666 100644
--- a/src/java/org/mxchange/jusercore/model/register/AddressbookUserRegistrationSessionBean.java
+++ b/src/java/org/mxchange/jusercore/model/register/AddressbookUserRegistrationSessionBean.java
@@ -19,11 +19,16 @@ package org.mxchange.jusercore.model.register;
 import java.text.MessageFormat;
 import javax.ejb.EJB;
 import javax.ejb.Stateless;
+import javax.persistence.NoResultException;
+import javax.persistence.Query;
+import org.mxchange.jcontacts.contact.Contact;
 import org.mxchange.jcoreee.database.BaseDatabaseBean;
 import org.mxchange.jusercore.exceptions.EmailAddressAlreadyRegisteredException;
 import org.mxchange.jusercore.exceptions.UserNameAlreadyRegisteredException;
+import org.mxchange.jusercore.model.user.LoginUser;
 import org.mxchange.jusercore.model.user.User;
 import org.mxchange.jusercore.model.user.UserSessionBeanRemote;
+import org.mxchange.jusercore.model.user.UserUtils;
 
 /**
  * A session bean for user registration
@@ -44,13 +49,59 @@ public class AddressbookUserRegistrationSessionBean extends BaseDatabaseBean imp
 	@EJB
 	private UserSessionBeanRemote userBean;
 
+	@Override
+	public String generateConfirmationKey (final User user) {
+		// Trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("generateConfirmationKey: user={0} - CALLED!", user)); //NOI18N
+
+		// user should not be null
+		if (null == user) {
+			// Abort here
+			throw new NullPointerException("user is null"); //NOI18N
+		}
+
+		// Create named instance
+		Query query = this.getEntityManager().createNamedQuery("SearchUserByConfirmKey", LoginUser.class); //NOI18N
+
+		// Init confirmation key
+		String confirmationKey = null;
+
+		// Find a free one
+		while (confirmationKey == null) {
+			// Create new one
+			String key = UserUtils.generatedConfirmationKey(user);
+
+			// Set key as parameter
+			query.setParameter("confirmKey", key); //NOI18N
+
+			// Try it
+			try {
+				// Get contact instance
+				Contact contact = (Contact) query.getSingleResult();
+
+				// Warning message
+				this.getLoggerBeanLocal().logWarning(MessageFormat.format("generateConfirmationKey: key {0} already found: contact.contactId={1}", key, contact.getContactId())); //NOI18N
+			} catch (final NoResultException ex) {
+				// Not found, normal case
+				confirmationKey = key;
+				break;
+			}
+		}
+
+		// Log trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("generateConfirmationKey: confirmationKey={0} - EXIT!", confirmationKey)); //NOI18N
+
+		// Return it
+		return confirmationKey;
+	}
+
 	@Override
 	public boolean isEmailAddressRegistered (final User user) {
 		// Trace message
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("isEmailAddressRegistered: user={0} - CALLED!", user)); //NOI18N
 
 		// Check bean
-		assert(this.userBean instanceof UserSessionBeanRemote) : "this.userBean is not set"; //NOI18N
+		assert (this.userBean instanceof UserSessionBeanRemote) : "this.userBean is not set"; //NOI18N
 
 		// user should not be null
 		if (null == user) {
@@ -68,7 +119,7 @@ public class AddressbookUserRegistrationSessionBean extends BaseDatabaseBean imp
 		this.getLoggerBeanLocal().logTrace(MessageFormat.format("isUserNameRegistered: user={0} - CALLED!", user)); //NOI18N
 
 		// Check bean
-		assert(this.userBean instanceof UserSessionBeanRemote) : "this.userBean is not set"; //NOI18N
+		assert (this.userBean instanceof UserSessionBeanRemote) : "this.userBean is not set"; //NOI18N
 
 		// user should not be null
 		if (null == user) {