EN · DE · RU · FR · ES

#3159: UsersProvider.java

projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java Java-класс, projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java 182 строки · 131 код · 30 комментариев · 21 пустая
Назначение: Исходный файл: projectforge/web/user/UsersProvider.java. UsersProvider.java является частью приложения для управления проектами с открытым исходным кодом ProjectForge.

Исходный код (первые 100 строк)

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.web.user;

import org.apache.commons.lang3.StringUtils;
import org.projectforge.business.user.UserDao;
import org.projectforge.business.user.UserGroupCache;
import org.projectforge.business.user.UsersComparator;
import org.projectforge.common.StringHelper;
import org.projectforge.framework.persistence.user.api.ThreadLocalUserContext;
import org.projectforge.framework.persistence.user.entities.PFUserDO;
import org.projectforge.framework.utils.NumberHelper;
import org.wicketstuff.select2.ChoiceProvider;
import org.wicketstuff.select2.Response;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.TreeSet;

public class UsersProvider extends ChoiceProvider<PFUserDO>
{
  private static final long serialVersionUID = 6228672635966093252L;

  private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(UsersProvider.class);

  private transient UserGroupCache userGroupCache;

  private transient UserDao userDao;

  private int pageSize = 20;

  private final UsersComparator usersComparator = new UsersComparator();

  private Collection<PFUserDO> sortedUsers;

  public UsersProvider(UserDao userDao)
  {
    this.userDao = userDao;
  }

  public Collection<PFUserDO> getSortedUsers()
  {
    if (sortedUsers == null) {
      sortedUsers = new TreeSet<PFUserDO>(usersComparator);
      final Collection<PFUserDO> allusers = UserGroupCache.getInstance().getAllUsers();
      final PFUserDO loggedInUser = ThreadLocalUserContext.getLoggedInUser();
      for (final PFUserDO user : allusers) {
        if (user.getDeleted() == false && user.getDeactivated() == false
            && userDao.hasUserSelectAccess(loggedInUser, user, false) == true) {
          sortedUsers.add(user);
        }
      }
    }
    return sortedUsers;
  }

  /**
   * @param userIds
   * @return
   */
  public Collection<PFUserDO> getSortedUsers(final String userIds)
  {
    if (StringUtils.isEmpty(userIds) == true) {
      return null;
    }
    sortedUsers = new TreeSet<PFUserDO>(usersComparator);
    final long[] ids = StringHelper.splitToLongs(userIds, ",");
    for (final long id : ids) {
      final PFUserDO user = UserGroupCache.getInstance().getUser(id);
      if (user != null) {
        sortedUsers.add(user);
      } else {
        log.warn("Группа с id '" + id + "' не найдена в UserGroupCache. Строка groupIds: " + userIds);
      }
    }
    return sortedUsers;
  }

История Git

868d6abb7 2025 -> 2026
63081666f Заголовки исходных файлов: 2024-> 2025.
a72903e36 *.java, *.kt: StringBuffer -> StringBuilder.
67805f2fc ThreadLocalUserContext.user -> ThreadLocalUserContext.loggedInUser (переименовано для избежания недопонимания в коде).
4c04cfd65 MAJOR-CHANGE! Миграция целочисленных id на Long id (включая внешние ключи и т.д.)

868d6abb7

2025 -> 2026
868d6abb75cd191a892911ac8e45058932cf9074
diff --git a/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java b/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
index 1807463d8..b739a353f 100644
--- a/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
+++ b/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge is dual-licensed.
 //

63081666f

Заголовки исходных файлов: 2024-> 2025.
63081666f620fb87315f01b817e560e0b2f6a33a
diff --git a/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java b/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
index b003a6c55..1807463d8 100644
--- a/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
+++ b/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2024 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge is dual-licensed.
 //

a72903e36

*.java, *.kt: StringBuffer -> StringBuilder.
a72903e36a6ee147b42123382a745d6438dd924c
diff --git a/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java b/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
index 4358426f9..b003a6c55 100644
--- a/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
+++ b/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
@@ -100,7 +100,7 @@ public class UsersProvider extends ChoiceProvider<PFUserDO>
 
   public String getUserIds(final Collection<PFUserDO> users)
   {
-    final StringBuffer buf = new StringBuffer();
+    final StringBuilder buf = new StringBuilder();
     boolean first = true;
     for (final PFUserDO user : users) {
       if (user.getId() != null) {

67805f2fc

ThreadLocalUserContext.user -> ThreadLocalUserContext.loggedInUser (переименовано для избежания недопонимания в коде).
67805f2fc1f3e6a6393accb4a757a8f4049b001c
diff --git a/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java b/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
index 22cc8079c..4358426f9 100644
--- a/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
+++ b/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
@@ -65,7 +65,7 @@ public class UsersProvider extends ChoiceProvider<PFUserDO>
     if (sortedUsers == null) {
       sortedUsers = new TreeSet<PFUserDO>(usersComparator);
       final Collection<PFUserDO> allusers = UserGroupCache.getInstance().getAllUsers();
-      final PFUserDO loggedInUser = ThreadLocalUserContext.getUser();
+      final PFUserDO loggedInUser = ThreadLocalUserContext.getLoggedInUser();
       for (final PFUserDO user : allusers) {
         if (user.getDeleted() == false && user.getDeactivated() == false
             && userDao.hasUserSelectAccess(loggedInUser, user, false) == true) {

4c04cfd65

MAJOR-CHANGE! Миграция целочисленных id на Long id (включая внешние ключи и т.д.)
4c04cfd652210afe373d55f53a5300c85997b109
diff --git a/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java b/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
index 9b47e3d79..22cc8079c 100644
--- a/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
+++ b/projectforge-wicket/src/main/java/org/projectforge/web/user/UsersProvider.java
@@ -86,8 +86,8 @@ public class UsersProvider extends ChoiceProvider<PFUserDO>
       return null;
     }
     sortedUsers = new TreeSet<PFUserDO>(usersComparator);
-    final int[] ids = StringHelper.splitToInts(userIds, ",", false);
-    for (final int id : ids) {
+    final long[] ids = StringHelper.splitToLongs(userIds, ",");
+    for (final long id : ids) {
       final PFUserDO user = UserGroupCache.getInstance().getUser(id);
       if (user != null) {
         sortedUsers.add(user);
@@ -168,7 +168,7 @@ public class UsersProvider extends ChoiceProvider<PFUserDO>
       return list;
     }
     for (final String str : ids) {
-      final Integer userId = NumberHelper.parseInteger(str);
+      final Long userId = NumberHelper.parseLong(str);
       if (userId == null) {
         continue;
       }