/* * Copyright (C) 2003-2009 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program 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.exoplatform.ks.common; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.exoplatform.commons.utils.PageList; import org.exoplatform.container.PortalContainer; import org.exoplatform.portal.webui.util.Util; import org.exoplatform.services.organization.Group; import org.exoplatform.services.organization.GroupHandler; import org.exoplatform.services.organization.Membership; import org.exoplatform.services.organization.OrganizationService; import org.exoplatform.services.organization.User; import org.exoplatform.services.organization.UserHandler; import org.exoplatform.services.organization.impl.GroupImpl; /** * @author <a href="mailto:patrice.lamarque@exoplatform.com">Patrice Lamarque</a> * @version $Revision$ */ public class UserHelper { public static OrganizationService getOrganizationService() { OrganizationService organizationService = (OrganizationService) PortalContainer.getComponent(OrganizationService.class); return organizationService; } private static UserHandler getUserHandler() { return getOrganizationService().getUserHandler(); } private static GroupHandler getGroupHandler() { return getOrganizationService().getGroupHandler(); } public static List<Group> getAllGroup() throws Exception { Collection<Group> pageList = getGroupHandler().getAllGroups() ; List<Group> list = new ArrayList<Group>(pageList) ; return list; } public static String checkValueUser(String values) throws Exception { String errorUser = null; if(values != null && values.trim().length() > 0) { String[] userIds = values.split(","); for (String str : userIds) { str = str.trim() ; if(str.indexOf("$") >= 0) str = str.replace("$", "$"); if(str.indexOf("/") >= 0) { if(!UserHelper.hasGroupIdAndMembershipId(str)){ if(errorUser == null) errorUser = str ; else errorUser = errorUser + ", " + str; } }else {//user if((getUserHandler().findUserByName(str) == null)) { if(errorUser == null) errorUser = str ; else errorUser = errorUser + ", " + str; } } } } return errorUser; } public static boolean hasGroupIdAndMembershipId(String str) throws Exception { if(str.indexOf(":") >= 0) { //membership String[] array = str.split(":") ; try { getGroupHandler().findGroupById(array[1]).getId() ; }catch (Exception e) { return false ; } if(array[0].length() == 1 && array[0].charAt(0) == '*') { return true ; }else if(array[0].length() > 0){ if(getOrganizationService().getMembershipTypeHandler().findMembershipType(array[0])== null) return false ; }else return false ; }else { //group try { getGroupHandler().findGroupById(str).getId() ; }catch (Exception e) { return false ; } } return true ; } @SuppressWarnings("unchecked") public static boolean hasUserInGroup(String groupId, String userId) throws Exception { List<User> userList = new ArrayList<User>() ; PageList pageList = getUserHandler().findUsersByGroup(groupId) ; for(int i = 1; i <= pageList.getAvailablePage(); i++) { userList.clear() ; userList.addAll(pageList.getPage(i)) ; for (User user : userList) { if(user.getUserName().equals(userId)) return true ; } } return false ; } //@SuppressWarnings("unchecked") /*public static List<User> getUserByGroupId(String groupId) throws Exception { return getUserHandler().findUsersByGroup(groupId).getAll() ; }*/ @SuppressWarnings("unchecked") public static PageList getUserPageListByGroupId(String groupId) throws Exception { return getUserHandler().findUsersByGroup(groupId) ; } public static User getUserByUserId(String userId) throws Exception { return getUserHandler().findUserByName(userId) ; } /*@SuppressWarnings("unchecked") ** * @deprecated this method is danngerous and may not work with all OrganizationService impl * public static List<User> getAllUser() throws Exception { PageList pageList = getUserHandler().getUserPageList(10) ; List<User>list = pageList.getAll() ; return list; }*/ /*public static PageList getAllUserPageList() throws Exception { return getUserHandler().getUserPageList(10); }*/ public static String[] getUserGroups() throws Exception { Object[] objGroupIds = getGroupHandler().findGroupsOfUser(UserHelper.getCurrentUser()).toArray(); String[] groupIds = new String[objGroupIds.length]; for (int i = 0; i < groupIds.length; i++) { groupIds[i] = ((GroupImpl) objGroupIds[i]).getId(); } return groupIds; } public static List<String> getAllGroupId() throws Exception { List<String> grIds = new ArrayList<String>(); for (Group gr : getAllGroup()) { grIds.add(gr.getId()); } return grIds; } public static List<Group> findGroups(Group group) throws Exception { return (List<Group>) getGroupHandler().findGroups(group); } @SuppressWarnings("unchecked") public static PageList getPageListUser() throws Exception { return getUserHandler().getUserPageList(10); } public static boolean isAnonim() throws Exception { String userId = UserHelper.getCurrentUser(); if (userId == null) return true; return false; } public static Collection findMembershipsByUser(String userId) throws Exception { return getOrganizationService().getMembershipHandler().findMembershipsByUser(userId); } @SuppressWarnings("unchecked") public static List<String> getAllGroupAndMembershipOfUser(String userId) throws Exception{ List<String> listOfUser = new ArrayList<String>(); if (userId == null) { return listOfUser; // should we throw an IllegalArgumentException instead ? } listOfUser.add(userId); //himself String value = ""; Collection<Membership> memberships = findMembershipsByUser(userId); for (Membership membership : memberships) { value = membership.getGroupId(); listOfUser.add(value); // its groups value = membership.getMembershipType() + ":" + value; listOfUser.add(value); // its memberships } return listOfUser; } static public String getEmailUser(String userName) throws Exception { User user = getUserHandler().findUserByName(userName) ; String email = user.getEmail() ; return email; } static public String getCurrentUser() throws Exception { try { return Util.getPortalRequestContext().getRemoteUser(); } catch (Exception e) { return null; } } }