1
2
3
4 package de.tivsource.page.dao.administration;
5
6 import java.util.Iterator;
7 import java.util.List;
8
9 import javax.ejb.Stateless;
10 import javax.persistence.EntityManager;
11 import javax.persistence.PersistenceContext;
12 import javax.persistence.Query;
13
14 import org.apache.logging.log4j.LogManager;
15 import org.apache.logging.log4j.Logger;
16
17 import de.tivsource.page.entity.administration.Role;
18 import de.tivsource.page.entity.administration.User;
19
20
21
22
23
24 @Stateless
25 public class RoleDao implements RoleDaoLocal {
26
27
28
29
30 private static final Logger LOGGER = LogManager.getLogger(RoleDao.class);
31
32
33
34
35 @PersistenceContext
36 private EntityManager entityManager;
37
38
39
40
41 @Override
42 public void save(Role role) {
43 LOGGER.info("save(Role role) aufgerufen");
44 entityManager.persist(role);
45 }
46
47
48
49
50 @Override
51 public void merge(Role role) {
52 LOGGER.info("merge(Role role) aufgerufen");
53 entityManager.merge(role);
54 }
55
56
57
58
59 @Override
60 public void delete(Role role) {
61 Role dbRole = entityManager.find(Role.class, role.getUuid());
62 Iterator<User> userIterator = dbRole.getUsers().iterator();
63 while(userIterator.hasNext()) {
64 User next = userIterator.next();
65 next.setRoles(null);
66 entityManager.merge(next);
67 }
68 entityManager.remove(entityManager.find(Role.class, role.getUuid()));
69 }
70
71
72
73
74 @Override
75 public Role findByTechnical(String technical) {
76 Query query = entityManager.createQuery("select r from Role r where r.technical = :technical");
77 query.setParameter("technical", technical);
78 return (Role)query.getSingleResult();
79 }
80
81 @Override
82 public Role findByUuid(String uuid) {
83 return entityManager.find(Role.class, uuid);
84 }
85
86
87
88
89 @Override
90 @SuppressWarnings("unchecked")
91 public List<Role> findAll(Integer start, Integer max) {
92 Query query = entityManager.createQuery("from Role r");
93 query.setFirstResult(start);
94 query.setMaxResults(max);
95 return query.getResultList();
96 }
97
98 @SuppressWarnings("unchecked")
99 @Override
100 public List<Role> findAll(Integer start, Integer max, String field,
101 String order) {
102 String queryString = "select r from Role r order by ";
103 queryString = queryString + field + " " + order;
104 Query query = entityManager.createQuery(queryString);
105 query.setFirstResult(start);
106 query.setMaxResults(max);
107 return query.getResultList();
108 }
109
110
111
112
113 @Override
114 public Integer countAll() {
115 Query query = entityManager.createQuery("Select Count(r) from Role r");
116 return Integer.parseInt(query.getSingleResult().toString());
117 }
118
119 }