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.jjobs.database.BaseJobsDatabaseBean;
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
@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) {
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) {