1 package org.itracker.persistence.dao; 2 3 import org.itracker.model.PermissionType; 4 import org.itracker.model.User; 5 6 import java.util.List; 7 import java.util.Map; 8 import java.util.Set; 9 10 /** 11 * User Data Access Object interface. 12 * 13 * @author ? 14 * @author Johnny Macchione 15 */ 16 public interface UserDAO extends BaseDAO<User> { 17 18 /** 19 * Finds the users with the given primary key. 20 * <p/> 21 * PENDING: should this method throw a NoSuchEntityException 22 * instead of returning null if the userId doesn't exist ? 23 * 24 * @param userId ID of the user to retrieve 25 * @return user with the given ID or <tt>null</tt> if none exits 26 */ 27 User findByPrimaryKey(Integer userId); 28 29 /** 30 * Finds a user by login. 31 * 32 * @param login login name of the user to find 33 * @return user with the given login or <tt>null</tt> if login is unknown 34 */ 35 User findByLogin(String login); 36 37 /** 38 * Finds all users. 39 * 40 * @return list of all users, in unspecified order 41 */ 42 List<User> findAll(); 43 44 /** 45 * Finds all active users. 46 * 47 * @return list of users with a status > 0, in unspecified order 48 */ 49 List<User> findActive(); 50 51 /** 52 * Finds users with the given status. 53 * 54 * @param status status code 55 * @return list of users with the given status, in unspecified order 56 */ 57 List<User> findByStatus(int status); 58 59 /** 60 * Finds all super users. 61 * 62 * @return list of super users, in unspecified order 63 */ 64 List<User> findSuperUsers(); 65 66 /** 67 * Finds users with the given registration type. 68 * 69 * @return list of users with the given registration type, in unspecified order 70 */ 71 List<User> findByRegistrationType(int registrationType); 72 73 /** 74 * Finds of the given user the set of permission types for all projects 75 * on which the user has permissions. 76 * 77 * @return set of permission types mapped by project id 78 */ 79 Map<Integer, Set<PermissionType>> getUsersMapOfProjectsAndPermissionTypes(User user); 80 81 /** 82 * Finds all users assigned to a project having all of the given permissionTypes. 83 * 84 * @param projectID the project ID 85 * @param permissionTypes array of permission types 86 * @return users having the required permissions 87 */ 88 89 List<User> findUsersForProjectByAllPermissionTypeList(Integer projectID, PermissionType[] permissionTypes); 90 91 @Deprecated 92 List<User> findUsersForProjectByAllPermissionTypeList(Integer projectID, Integer[] permissionTypes); 93 94 }