From 4ddd0b27ca287571cfca51b38fc4d56656a2f6a6 Mon Sep 17 00:00:00 2001
From: Roland Haeder <roland@mxchange.org>
Date: Sat, 12 Mar 2016 18:08:52 +0100
Subject: [PATCH] Continued a bit: - added ifUserExists() - rewrote
 enqueueEmailAddressForChange() which now takes ChangeableEmailAddress as
 instance - also rewrote updateEmailAddress() with same parameter - added
 isEmailAddressEnqueued() - updated jar(s)

---
 lib/juser-core.jar                            | Bin 37613 -> 38450 bytes
 lib/juser-lib.jar                             | Bin 4887 -> 5111 bytes
 .../email_address/EmailChangeSessionBean.java |  89 ++++++++++++------
 .../jusercore/model/user/UserSessionBean.java |  52 +++++++++-
 4 files changed, 113 insertions(+), 28 deletions(-)

diff --git a/lib/juser-core.jar b/lib/juser-core.jar
index 8488d71d29bac0c83be02e3c7e5e3129e0b51f47..1924b0bcb057c30248932d2d3e5063b69db3e4ce 100644
GIT binary patch
delta 3979
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

delta 3291
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

diff --git a/lib/juser-lib.jar b/lib/juser-lib.jar
index dd11c240493a216c77ed2b313e537ab78f64da1e..d70697aaa2ef33810501b060d2c314cca0e8cf1f 100644
GIT binary patch
delta 663
zcmZXR&ubGw6vyApZnE3m&Hge;qeilzv<Zj_^dKVss3kTfrPhiTte`79)|E}9*+#s2
z@)WTQD0(Og{R0Z|Af7z?7wAc^5=HRhp%>?kEsEV?--r3mukU;B`NXeDYq71U27nIm
zZLne0=xDHU@)gEU0mdCv_yn0ktdLWPXJi)fnVdre^a3KHXYJ7-X&GkbLyH2mDBq?x
zuH`lGH1IVzK%f|>%}y96(^1r8Y1-_r^;w@q1Paypd*Oqyo`l`i`jz!w++96gyH21K
zCdp;FXZHw8r_=d3UFTKvDEF)yFDVsrk-yd}{J3iuXYPs%Sa>^O|GvX-DLZXdC7?nE
zKrjm$5X=}TjET7crqnH@&~h@`;0R{LP8Z;Bl}3Z%6V+Bk%EL`fS3Jyl@?+u6V+8>J
zGrUd%{$3yBUyQ&wqQM~z4r@>z8fJ&&toY8=l=YeqMG`6B)Ek9-oT9Q2cGwbI6Ef?u
zX!y=LL5RV>=2+d6-tth8u8J~_LuuFBLG(swUfJs*@7uCT+xB^E%TK$3IOa(4rZa=H
zEoTn#!&yeO+)IcT?h@j=yYPP>=e!QCy!Fboo#72y;Z8Q-PkkTNnqQ_Xx=^e9zCRW0
hD~Is8_ia65rab<qI^)H~b|#C9wiqu}fLW|K{012guB`w7

delta 478
zcmZ9IPfG$p7{=e3U3d16yRLuI(uK5xCS3v#;h|RQP$8uR;h~O(1PNY)Qj9)8Hc$~A
zI@GO0u%DoFL{KL^)Tz%95kd1V3Dpd|znOU$p7(j*bEny0wJgaxfC@0E_kwxaulHsy
zsW|u3SU>Zk@+>JJHb@b1LKYFP#6_g(JfcqLtU-Ne$!UMJI|QIZ_$}SkEd~aIAOn-%
zNEu!+r+8HUC{USz3;_T^1ql?GUsccq6(AtG`rVvY3s{nH@*1itnP_$YwlUF?09t&{
zSkWB@V+@iEQr@%CBz)gY@NLcYuFVu78o#r)axvdw#IJEk{P>Kb51}z>I0n8RDvCMq
zqfiNxJ%y$bvh9a=?FGCY+RKPXyM~wyR}j15HN-=B_5UdHktQl<5r-bgylaeeiz@s@
zN%B@Sf{GS(=rQw^3e|W?&!Ce26H`Q;6+I8vRrf*{AKZAg98mDl68l^RXjpjr2C3$E
A2><{9

diff --git a/src/java/org/mxchange/jusercore/model/email_address/EmailChangeSessionBean.java b/src/java/org/mxchange/jusercore/model/email_address/EmailChangeSessionBean.java
index 2eddde8..a049514 100644
--- a/src/java/org/mxchange/jusercore/model/email_address/EmailChangeSessionBean.java
+++ b/src/java/org/mxchange/jusercore/model/email_address/EmailChangeSessionBean.java
@@ -17,11 +17,13 @@
 package org.mxchange.jusercore.model.email_address;
 
 import java.text.MessageFormat;
+import java.util.List;
 import javax.ejb.EJB;
 import javax.ejb.Stateless;
+import javax.persistence.NoResultException;
 import javax.persistence.PersistenceException;
+import javax.persistence.Query;
 import org.mxchange.jcoreee.database.BaseDatabaseBean;
-import org.mxchange.jusercore.model.user.User;
 import org.mxchange.jusercore.model.user.UserSessionBeanRemote;
 
 /**
@@ -32,6 +34,7 @@ import org.mxchange.jusercore.model.user.UserSessionBeanRemote;
 @Stateless (name = "email-change", mappedName = "ejb/stateless-addressbook-email-change", description = "A bean handling email changes")
 public class EmailChangeSessionBean extends BaseDatabaseBean implements EmailChangeSessionBeanRemote {
 
+
 	/**
 	 * Serial number
 	 */
@@ -50,52 +53,84 @@ public class EmailChangeSessionBean extends BaseDatabaseBean implements EmailCha
 	}
 
 	@Override
-	public void enqueueEmailAddressForChange (final User user) {
+	public List<String> allQueuedAddressesAsList () {
+		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+	}
+
+	@Override
+	public void enqueueEmailAddressForChange (final ChangeableEmailAddress emailAddress) {
 		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("enqueueEmailAddressForChange: user={0} - CALLED!", user));
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("enqueueEmailAddressForChange: emailAddress={0} - CALLED!", emailAddress));
 
 		// user should not be null
-		if (null == user) {
+		if (null == emailAddress) {
 			// Abort here
-			throw new NullPointerException("user is null"); //NOI18N
-		} else if (user.getUserId() == null) {
+			throw new NullPointerException("emailAddress is null"); //NOI18N
+		} else if (emailAddress.getEmailChangeId() == null) {
 			// Throw NPE again
-			throw new NullPointerException("user.userId is null"); //NOI18N
-		} else if (user.getUserId() < 1) {
+			throw new NullPointerException("emailAddress.emailChangeId is null"); //NOI18N
+		} else if (emailAddress.getEmailChangeId() < 1) {
 			// Not valid
-			throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is not valid.", user.getUserId())); //NOI18N
-		} else if (user.getUserAccountStatus() == null) {
-			// Throw NPE again
-			throw new NullPointerException("user.userAccountStatus is null"); //NOI18N
-		} else if (!this.userBean.ifUserIdExists(user.getUserId())) {
+			throw new IllegalArgumentException(MessageFormat.format("emailAddress.emailChangeId={0} is not valid.", emailAddress.getEmailChangeId())); //NOI18N
+		} else if (!this.userBean.ifUserExists(emailAddress.getEmailChangeUser())) {
 			// User does not exist
-			throw new PersistenceException(MessageFormat.format("User with id {0} does not exist.", user.getUserId())); //NOI18N
+			throw new PersistenceException(MessageFormat.format("Email change with id {0} does not exist.", emailAddress.getEmailChangeId())); //NOI18N
 		}
 
 		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
 	}
 
 	@Override
-	public void updateEmailAddress (final User user) {
+	public boolean isEmailAddressEnqueued (final String emailAddress) {
+		// Trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("isEmailAddressEnqueued: emailAddress={0} - CALLED!", emailAddress)); //NOI18N
+
+		// Create query instance
+		Query query = this.getEntityManager().createNamedQuery("SearchEmailChangeByEmail"); //NOI18N
+
+		// Add email address as parameter
+		query.setParameter("email", emailAddress); //NOI18N
+
+		// Initialize variable
+		boolean isFound = false;
+
+		// Try it
+		try {
+			// Try to get single result
+			ChangeableEmailAddress dummy = (ChangeableEmailAddress) query.getSingleResult();
+
+			// Found it
+			isFound = true;
+		} catch (final NoResultException ex) {
+			// Log it
+			this.getLoggerBeanLocal().logException(ex);
+		}
+
+		// Trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("isEmailAddressEnqueued: isFound={0} - EXIT!", isFound)); //NOI18N
+
+		// Return it
+		return isFound;
+	}
+
+	@Override
+	public void updateEmailAddress (final ChangeableEmailAddress emailAddress) {
 		// Trace message
-		this.getLoggerBeanLocal().logTrace(MessageFormat.format("updateEmailAddress: user={0} - CALLED!", user));
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("updateEmailAddress: emailAddress={0} - CALLED!", emailAddress));
 
 		// user should not be null
-		if (null == user) {
+		if (null == emailAddress) {
 			// Abort here
-			throw new NullPointerException("user is null"); //NOI18N
-		} else if (user.getUserId() == null) {
+			throw new NullPointerException("emailAddress is null"); //NOI18N
+		} else if (emailAddress.getEmailChangeId() == null) {
 			// Throw NPE again
-			throw new NullPointerException("user.userId is null"); //NOI18N
-		} else if (user.getUserId() < 1) {
+			throw new NullPointerException("emailAddress.emailChangeId is null"); //NOI18N
+		} else if (emailAddress.getEmailChangeId() < 1) {
 			// Not valid
-			throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is not valid.", user.getUserId())); //NOI18N
-		} else if (user.getUserAccountStatus() == null) {
-			// Throw NPE again
-			throw new NullPointerException("user.userAccountStatus is null"); //NOI18N
-		} else if (!this.userBean.ifUserIdExists(user.getUserId())) {
+			throw new IllegalArgumentException(MessageFormat.format("emailAddress.emailChangeId={0} is not valid.", emailAddress.getEmailChangeId())); //NOI18N
+		} else if (!this.userBean.ifUserExists(emailAddress.getEmailChangeUser())) {
 			// User does not exist
-			throw new PersistenceException(MessageFormat.format("User with id {0} does not exist.", user.getUserId())); //NOI18N
+			throw new PersistenceException(MessageFormat.format("Email change with id {0} does not exist.", emailAddress.getEmailChangeId())); //NOI18N
 		}
 
 		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
diff --git a/src/java/org/mxchange/jusercore/model/user/UserSessionBean.java b/src/java/org/mxchange/jusercore/model/user/UserSessionBean.java
index 4795d84..59fe23a 100644
--- a/src/java/org/mxchange/jusercore/model/user/UserSessionBean.java
+++ b/src/java/org/mxchange/jusercore/model/user/UserSessionBean.java
@@ -159,6 +159,56 @@ public class UserSessionBean extends BaseDatabaseBean implements UserSessionBean
 		return userNameList;
 	}
 
+	@Override
+	public boolean ifUserExists (final User user) {
+		// Trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("ifUserExists: user={0} - CALLED!", user)); //NOI18N
+
+		// userId should not be null
+		if (null == user) {
+			// Abort here
+			throw new NullPointerException("user is null"); //NOI18N
+		} else if (user.getUserId() == null) {
+			// Abort here
+			throw new NullPointerException("user.userId is null"); //NOI18N
+		} else if (user.getUserId() < 1) {
+			// Invalid number
+			throw new IllegalArgumentException(MessageFormat.format("userId is not valid: {0}", user.getUserId())); //NOI18N
+		}
+
+		// Generate query
+		Query query = this.getEntityManager().createNamedQuery("SearchUser", LoginUser.class); //NOI18N
+
+		// Set parameter
+		query.setParameter("user", user); //NOI18N
+
+		// Try this
+		try {
+			User dummy = (User) query.getSingleResult();
+
+			// Debug message
+			this.getLoggerBeanLocal().logDebug(MessageFormat.format("ifUserExists: dummy.id={0} found.", dummy.getUserId())); //NOI18N
+		} catch (final NoResultException ex) {
+			// Log it
+			this.getLoggerBeanLocal().logDebug(MessageFormat.format("ifUserExists: getSingleResult() returned no result: {0}", ex)); //NOI18N
+
+			// User name does not exist
+			return false;
+		} catch (final PersistenceException ex) {
+			// Something bad happened
+			this.getLoggerBeanLocal().logWarning(MessageFormat.format("More than one user {0} found.", user, ex)); //NOI18N
+
+			// Throw again
+			throw ex;
+		}
+
+		// Trace message
+		this.getLoggerBeanLocal().logTrace(MessageFormat.format("ifUserExists: Found user {0} - EXIT!", user)); //NOI18N
+
+		// Found it
+		return true;
+	}
+
 	@Override
 	public boolean ifUserIdExists (final Long userId) {
 		// Trace message
@@ -306,7 +356,7 @@ public class UserSessionBean extends BaseDatabaseBean implements UserSessionBean
 		} else if (user.getUserAccountStatus() == null) {
 			// Throw NPE again
 			throw new NullPointerException("user.userAccountStatus is null"); //NOI18N
-		} else if (!this.ifUserIdExists(user.getUserId())) {
+		} else if (!this.ifUserExists(user)) {
 			// User does not exist
 			throw new PersistenceException(MessageFormat.format("User with id {0} does not exist.", user.getUserId())); //NOI18N
 		}
-- 
2.39.5