You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2014/02/03 16:34:53 UTC

svn commit: r1563952 - in /openmeetings: branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/ branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/ trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/ trunk/sin...

Author: solomax
Date: Mon Feb  3 15:34:52 2014
New Revision: 1563952

URL: http://svn.apache.org/r1563952
Log:
[OPENMEETINGS-910] private contacts are not displayed in user search

Modified:
    openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java
    openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
    openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java
    openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java

Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java?rev=1563952&r1=1563951&r2=1563952&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java Mon Feb  3 15:34:52 2014
@@ -104,11 +104,11 @@ public class AbstractUserDao  {
 		return q.getResultList();
 	}
 	
-	private String getAdditionalWhere(boolean isAdmin){
+	private String getAdditionalWhere(boolean isAdmin) {
 		return isAdmin ? null : "(u.type <> :contact OR (u.type = :contact AND u.ownerId = :ownerId))";
 	}
 	
-	private void setAdditionalParams(TypedQuery<?> q, boolean isAdmin, long currentUserId){
+	private void setAdditionalParams(TypedQuery<?> q, boolean isAdmin, long currentUserId) {
 		if (!isAdmin) {
 			q.setParameter("ownerId", currentUserId);
 			q.setParameter("contact", Type.contact);
@@ -426,7 +426,8 @@ public class AbstractUserDao  {
 	private StringBuilder getUserProfileQuery(boolean count, String text, String offers, String search) {
 		StringBuilder sb = new StringBuilder("SELECT ");
 		sb.append(count ? "COUNT(" : "").append("u").append(count ? ") " : " ")
-			.append("FROM User u WHERE u.deleted = false ");
+			.append("FROM User u WHERE u.deleted = false AND ")
+			.append(getAdditionalWhere(false));
 		if (offers != null && offers.length() != 0) {
 			sb.append("AND (LOWER(u.userOffers) LIKE :userOffers) ");
 		}
@@ -443,12 +444,13 @@ public class AbstractUserDao  {
 		return sb;
 	}
 	
-	public List<User> searchUserProfile(String text, String offers, String search, String orderBy, int start, int max, boolean asc) {
+	public List<User> searchUserProfile(long userId, String text, String offers, String search, String orderBy, int start, int max, boolean asc) {
 		StringBuilder sb = getUserProfileQuery(false, text, offers, search);
 		sb.append(" ORDER BY ").append(orderBy).append(asc ? " ASC" : " DESC");
 
 		log.debug("hql :: " + sb.toString());
 		TypedQuery<User> query = em.createQuery(sb.toString(), User.class);
+		setAdditionalParams(query, false, userId);
 
 		if (text != null && text.length() != 0) {
 			query.setParameter("search", StringUtils.lowerCase("%" + text + "%"));
@@ -462,11 +464,12 @@ public class AbstractUserDao  {
 		return query.setFirstResult(start).setMaxResults(max).getResultList();
 	}
 
-	public Long searchCountUserProfile(String text, String offers, String search) {
+	public Long searchCountUserProfile(long userId, String text, String offers, String search) {
 		StringBuilder sb = getUserProfileQuery(true, text, offers, search);
 		
 		log.debug("hql :: " + sb.toString());
 		TypedQuery<Long> query = em.createQuery(sb.toString(), Long.class);
+		setAdditionalParams(query, false, userId);
 		
 		if (text != null && text.length() != 0) {
 			query.setParameter("search", StringUtils.lowerCase("%" + text + "%"));

Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java?rev=1563952&r1=1563951&r2=1563952&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java Mon Feb  3 15:34:52 2014
@@ -76,12 +76,12 @@ public class UserDao {
 		return dao.getUserByActivationHash(hash);
 	}
 
-	public List<User> searchUserProfile(String text, String offers, String search, String orderBy, int start, int max, boolean asc) {
-		return dao.searchUserProfile(text, offers, search, orderBy, start, max, asc);
+	public List<User> searchUserProfile(long userId, String text, String offers, String search, String orderBy, int start, int max, boolean asc) {
+		return dao.searchUserProfile(userId, text, offers, search, orderBy, start, max, asc);
 	}
 
-	public Long searchCountUserProfile(String text, String offers, String search) {
-		return dao.searchCountUserProfile(text, offers, search);
+	public Long searchCountUserProfile(long userId, String text, String offers, String search) {
+		return dao.searchCountUserProfile(userId, text, offers, search);
 	}
 	
 	public User getExternalUser(String extId, String extType) {

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java?rev=1563952&r1=1563951&r2=1563952&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java Mon Feb  3 15:34:52 2014
@@ -108,12 +108,12 @@ public class UserSearchPanel extends Use
 			}
 
 			public Iterator<? extends User> iterator(long first, long count) {
-				return searched ? getBean(UserDao.class).searchUserProfile(text, offer, search, orderBy, (int)first, (int)count, asc).iterator()
+				return searched ? getBean(UserDao.class).searchUserProfile(getUserId(), text, offer, search, orderBy, (int)first, (int)count, asc).iterator()
 						: new ArrayList<User>().iterator();
 			}
 
 			public long size() {
-				return searched ? getBean(UserDao.class).searchCountUserProfile(text, offer, search) : 0;
+				return searched ? getBean(UserDao.class).searchCountUserProfile(getUserId(), text, offer, search) : 0;
 			}
 
 			public IModel<User> model(User object) {

Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java?rev=1563952&r1=1563951&r2=1563952&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/AbstractUserDao.java Mon Feb  3 15:34:52 2014
@@ -104,11 +104,11 @@ public class AbstractUserDao  {
 		return q.getResultList();
 	}
 	
-	private String getAdditionalWhere(boolean isAdmin){
+	private String getAdditionalWhere(boolean isAdmin) {
 		return isAdmin ? null : "(u.type <> :contact OR (u.type = :contact AND u.ownerId = :ownerId))";
 	}
 	
-	private void setAdditionalParams(TypedQuery<?> q, boolean isAdmin, long currentUserId){
+	private void setAdditionalParams(TypedQuery<?> q, boolean isAdmin, long currentUserId) {
 		if (!isAdmin) {
 			q.setParameter("ownerId", currentUserId);
 			q.setParameter("contact", Type.contact);
@@ -426,7 +426,8 @@ public class AbstractUserDao  {
 	private StringBuilder getUserProfileQuery(boolean count, String text, String offers, String search) {
 		StringBuilder sb = new StringBuilder("SELECT ");
 		sb.append(count ? "COUNT(" : "").append("u").append(count ? ") " : " ")
-			.append("FROM User u WHERE u.deleted = false ");
+			.append("FROM User u WHERE u.deleted = false AND ")
+			.append(getAdditionalWhere(false));
 		if (offers != null && offers.length() != 0) {
 			sb.append("AND (LOWER(u.userOffers) LIKE :userOffers) ");
 		}
@@ -443,12 +444,13 @@ public class AbstractUserDao  {
 		return sb;
 	}
 	
-	public List<User> searchUserProfile(String text, String offers, String search, String orderBy, int start, int max, boolean asc) {
+	public List<User> searchUserProfile(long userId, String text, String offers, String search, String orderBy, int start, int max, boolean asc) {
 		StringBuilder sb = getUserProfileQuery(false, text, offers, search);
 		sb.append(" ORDER BY ").append(orderBy).append(asc ? " ASC" : " DESC");
 
 		log.debug("hql :: " + sb.toString());
 		TypedQuery<User> query = em.createQuery(sb.toString(), User.class);
+		setAdditionalParams(query, false, userId);
 
 		if (text != null && text.length() != 0) {
 			query.setParameter("search", StringUtils.lowerCase("%" + text + "%"));
@@ -462,11 +464,12 @@ public class AbstractUserDao  {
 		return query.setFirstResult(start).setMaxResults(max).getResultList();
 	}
 
-	public Long searchCountUserProfile(String text, String offers, String search) {
+	public Long searchCountUserProfile(long userId, String text, String offers, String search) {
 		StringBuilder sb = getUserProfileQuery(true, text, offers, search);
 		
 		log.debug("hql :: " + sb.toString());
 		TypedQuery<Long> query = em.createQuery(sb.toString(), Long.class);
+		setAdditionalParams(query, false, userId);
 		
 		if (text != null && text.length() != 0) {
 			query.setParameter("search", StringUtils.lowerCase("%" + text + "%"));

Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java?rev=1563952&r1=1563951&r2=1563952&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java Mon Feb  3 15:34:52 2014
@@ -76,12 +76,12 @@ public class UserDao {
 		return dao.getUserByActivationHash(hash);
 	}
 
-	public List<User> searchUserProfile(String text, String offers, String search, String orderBy, int start, int max, boolean asc) {
-		return dao.searchUserProfile(text, offers, search, orderBy, start, max, asc);
+	public List<User> searchUserProfile(long userId, String text, String offers, String search, String orderBy, int start, int max, boolean asc) {
+		return dao.searchUserProfile(userId, text, offers, search, orderBy, start, max, asc);
 	}
 
-	public Long searchCountUserProfile(String text, String offers, String search) {
-		return dao.searchCountUserProfile(text, offers, search);
+	public Long searchCountUserProfile(long userId, String text, String offers, String search) {
+		return dao.searchCountUserProfile(userId, text, offers, search);
 	}
 	
 	public User getExternalUser(String extId, String extType) {

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java?rev=1563952&r1=1563951&r2=1563952&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java Mon Feb  3 15:34:52 2014
@@ -108,12 +108,12 @@ public class UserSearchPanel extends Use
 			}
 
 			public Iterator<? extends User> iterator(long first, long count) {
-				return searched ? getBean(UserDao.class).searchUserProfile(text, offer, search, orderBy, (int)first, (int)count, asc).iterator()
+				return searched ? getBean(UserDao.class).searchUserProfile(getUserId(), text, offer, search, orderBy, (int)first, (int)count, asc).iterator()
 						: new ArrayList<User>().iterator();
 			}
 
 			public long size() {
-				return searched ? getBean(UserDao.class).searchCountUserProfile(text, offer, search) : 0;
+				return searched ? getBean(UserDao.class).searchCountUserProfile(getUserId(), text, offer, search) : 0;
 			}
 
 			public IModel<User> model(User object) {