1 package com.edf.gde.ejb;
3 import com.edf.gde.entities.Group;
4 import com.edf.gde.entities.User;
5 import com.edf.gde.entities.UserGroup;
7 import javax.ejb.Stateless;
8 import javax.ejb.LocalBean;
9 import javax.persistence.EntityManager;
10 import javax.persistence.NoResultException;
11 import javax.persistence.PersistenceContext;
12 import javax.persistence.Query;
20 public class UserDAO {
22 @PersistenceContext(unitName = "GDE-ejbPU")
23 private EntityManager em;
30 * @return the new User or null if user exists or on error
32 public User createUser(String userName, String password) {
33 if (findUser(userName) != null) {
34 throw new RuntimeException("Unable to create user " + userName);
36 User user = new User();
37 user.setName(userName);
38 user.setPassword(password);
47 * @return the new created Group or null on error
49 public Group createGroup(String groupName) {
50 if (findGroup(groupName) != null) {
51 throw new RuntimeException("Unable to create group " + groupName);
53 Group group = new Group();
54 group.setName(groupName);
63 * @return null if the group does not exists
65 public Group findGroup(String name) {
67 Query q = em.createNamedQuery("Group.findByName");
68 q.setParameter("name", name);
70 group = (Group) q.getSingleResult();
71 } catch (NoResultException ex) {
78 * Add a user to a group
83 public void addToGroup(long groupId, long userId) {
84 if (!isInGroup(groupId, userId)) {
85 UserGroup userGroup = new UserGroup();
86 userGroup.setGroupId(groupId);
87 userGroup.setUserId(userId);
88 em.persist(userGroup);
90 throw new RuntimeException("Unable to add "+userId+" to group "+groupId);
95 * Add users to a group in one transaction
101 public void addToGroup(long groupId, List<Long> userIds) {
102 for (Long id : userIds) {
103 addToGroup(groupId, id);
113 public void removeFromGroup(long groupId, long userId) {
114 Query q = em.createNamedQuery("UserGroup.findByGroupIdUserId");
115 q.setParameter("groupId", groupId);
116 q.setParameter("userId", userId);
117 List<UserGroup> l = q.getResultList();
119 throw new RuntimeException("UserGroup not found");
121 UserGroup ug = l.get(0);
131 public boolean isInGroup(long groupId, long userId) {
132 Query q = em.createNamedQuery("UserGroup.findByGroupIdUserId");
133 q.setParameter("groupId", groupId);
134 q.setParameter("userId", userId);
135 List<UserGroup> l = q.getResultList();
140 * Find user by user name (login)
145 public User findUser(String userName) {
146 Query q = em.createNamedQuery("User.findByName");
149 user = (User) q.getSingleResult();
150 } catch (NoResultException e) {
161 public User findUser(long id) {
162 return em.find(User.class, id);
170 public boolean deleteUser(long userId) {
171 User user = findUser(userId);