1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.jboss.as.quickstarts.tasksJsf;
18
19 import java.util.List;
20
21 import javax.ejb.Stateful;
22 import javax.inject.Inject;
23 import javax.persistence.EntityManager;
24 import javax.persistence.TypedQuery;
25
26
27
28
29
30
31
32
33 @Stateful
34 public class TaskDaoImpl implements TaskDao {
35
36 @Inject
37 private EntityManager em;
38
39 @Override
40 public void createTask(User user, Task task) {
41 if (!em.contains(user)) {
42 user = em.merge(user);
43 }
44 user.getTasks().add(task);
45 task.setOwner(user);
46 em.persist(task);
47 }
48
49 @Override
50 public List<Task> getAll(User user) {
51 TypedQuery<Task> query = querySelectAllTasksFromUser(user);
52 return query.getResultList();
53 }
54
55 @Override
56 public List<Task> getRange(User user, int offset, int count) {
57 TypedQuery<Task> query = querySelectAllTasksFromUser(user);
58 query.setMaxResults(count);
59 query.setFirstResult(offset);
60 return query.getResultList();
61 }
62
63 @Override
64 public List<Task> getForTitle(User user, String title) {
65 String lowerCaseTitle = "%" + title.toLowerCase() + "%";
66 return em.createQuery("SELECT t FROM Task t WHERE t.owner = ?1 AND LOWER(t.title) LIKE ?2", Task.class)
67 .setParameter(1, user).setParameter(2, lowerCaseTitle).getResultList();
68 }
69
70 @Override
71 public void deleteTask(Task task) {
72 if (!em.contains(task)) {
73 task = em.merge(task);
74 }
75 em.remove(task);
76 }
77
78 private TypedQuery<Task> querySelectAllTasksFromUser(User user) {
79 return em.createQuery("SELECT t FROM Task t WHERE t.owner = ?1", Task.class).setParameter(1, user);
80 }
81 }