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 2020/09/14 15:36:44 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2433] DISTINCT is added to profile search

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 9ee4d4d  [OPENMEETINGS-2433] DISTINCT is added to profile search
9ee4d4d is described below

commit 9ee4d4d18ff52e58997f2ff9f272da37e6602e34
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Mon Sep 14 22:36:28 2020 +0700

    [OPENMEETINGS-2433] DISTINCT is added to profile search
---
 .../apache/openmeetings/db/dao/user/UserDao.java   |  8 ++-----
 .../apache/openmeetings/user/TestUserCount.java    | 25 ++++++++++++++++++----
 2 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
index e317173..81f48f4 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
@@ -159,7 +159,7 @@ public class UserDao implements IGroupAdminDataProviderDao<User> {
 		return q.getResultList();
 	}
 
-	//This is AdminDao method
+	// This is AdminDao method
 	public List<User> get(String search, boolean excludeContacts, long first, long count) {
 		Map<String, Object> params = new HashMap<>();
 		TypedQuery<User> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", null, search, true, true, false
@@ -168,10 +168,6 @@ public class UserDao implements IGroupAdminDataProviderDao<User> {
 		return q.getResultList();
 	}
 
-	public List<User> get(String search, boolean filterContacts, Long currentUserId) {
-		return get(search, null, null, null, filterContacts, currentUserId, true);
-	}
-
 	public List<User> get(String search, long start, long count, String sort, boolean filterContacts, Long currentUserId) {
 		return get(search, start, count, sort, filterContacts, currentUserId, true);
 	}
@@ -537,7 +533,7 @@ public class UserDao implements IGroupAdminDataProviderDao<User> {
 		boolean count = clazz.isAssignableFrom(Long.class);
 
 		StringBuilder sb = new StringBuilder("SELECT ");
-		sb.append(count ? "COUNT(" : "").append("u").append(count ? ") " : " ")
+		sb.append(count ? "COUNT(" : "").append("DISTINCT u").append(count ? ") " : " ")
 			.append("FROM User u ").append(getAdditionalJoin(filterContacts)).append(" WHERE u.deleted = false AND ")
 			.append(getAdditionalWhere(filterContacts, userId, params));
 		if (!Strings.isEmpty(offers)) {
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserCount.java b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserCount.java
index 75c9abd..f835642 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserCount.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserCount.java
@@ -18,10 +18,13 @@
  */
 package org.apache.openmeetings.user;
 
+import static java.util.UUID.randomUUID;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.openmeetings.AbstractWicketTester;
+import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Test;
 
@@ -29,25 +32,39 @@ class TestUserCount extends AbstractWicketTester {
 	@Test
 	void testCountSearchUsers() throws Exception {
 		User u = createUser();
-		assertTrue(userDao.count(u.getFirstname()) == 1, "Account of search users should be one");
+		assertEquals(1, userDao.count(u.getFirstname()), "A count of search users should be one");
 	}
 
 	@Test
 	void testCountFilteredUsers() throws Exception {
 		User u = createUser();
 		User contact = createUserContact(u.getId());
-		assertTrue(userDao.count(contact.getFirstname(), true, u.getId()) == 1, "Account of filtered user should be one");
+		assertEquals(1, userDao.count(contact.getFirstname(), true, u.getId()), "A count of filtered user should be one");
 	}
 
 	@Test
 	void testCountUnfilteredUsers() throws Exception {
 		User u = createUser();
 		createUserContact(u.getId());
-		assertTrue(userDao.count("firstname", false, getUserId()) > 1, "Account of unfiltered should be more then one");
+		assertTrue(userDao.count("firstname", false, getUserId()) > 1, "A count of unfiltered should be more then one");
 	}
 
 	@Test
 	void testCountAllUsers() {
-		assertTrue(userDao.count() > 0, "Account of users should be positive");
+		assertTrue(userDao.count() > 0, "A count of users should be positive");
+	}
+
+	@Test
+	void testCountProfileSearch() throws Exception {
+		String uUid = "usr" + randomUUID().toString();
+		Group g1 = new Group().setName("grp" + randomUUID().toString());
+		groupDao.update(g1, null);
+		Group g2 = new Group().setName("grp" + randomUUID().toString());
+		groupDao.update(g2, null);
+		User u = getUser(uUid);
+		u.addGroup(g1);
+		u.addGroup(g2);
+		userDao.update(u, null);
+		assertEquals(1, userDao.searchCountUserProfile(u.getId(), uUid, null, null), "A count of search users should be one");
 	}
 }