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 <solomax...@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"); } }