1
2
3
4 package de.tivsource.page.dao.news;
5
6 import java.util.Date;
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.news.News;
18
19
20
21
22
23 @Stateless
24 public class NewsDao implements NewsDaoLocal {
25
26
27
28
29 private static final Logger LOGGER = LogManager.getLogger(NewsDao.class);
30
31
32
33
34 @PersistenceContext
35 private EntityManager entityManager;
36
37
38
39
40 @Override
41 public void save(News news) {
42 LOGGER.info("save(News news) aufgerufen");
43 entityManager.persist(news);
44 }
45
46
47
48
49 @Override
50 public void merge(News news) {
51 LOGGER.info("merge(News news) aufgerufen");
52 entityManager.merge(news);
53 }
54
55
56
57
58 @Override
59 public void delete(News news) {
60 entityManager.remove(entityManager.find(News.class, news.getUuid()));
61 }
62
63
64
65
66 @Override
67 public Boolean isNewsUrl(String uuid) {
68 Query query = entityManager.createQuery("select n from News n where n.uuid = :uuid and n.visible = 'Y' order by n.uuid asc");
69 query.setParameter("uuid", uuid);
70 return (query.getResultList().size() > 0 ? true : false);
71 }
72
73 @Override
74 public Boolean isPublicNewsUuid(String uuid) {
75 Query query = entityManager.createQuery("select n from News n where n.uuid = :uuid and n.visible = 'Y' and n.releaseDate < :date order by n.uuid asc");
76 query.setParameter("uuid", uuid);
77 query.setParameter("date", new Date());
78 return (query.getResultList().size() > 0 ? true : false);
79 }
80
81
82
83
84 @Override
85 public News findByUuid(String uuid) {
86 return entityManager.find(News.class, uuid);
87 }
88
89
90
91
92 @SuppressWarnings("unchecked")
93 @Override
94 public List<News> findAll(Integer start, Integer max) {
95 Query query = entityManager.createQuery("from News n");
96 query.setFirstResult(start);
97 query.setMaxResults(max);
98 return query.getResultList();
99 }
100
101
102
103
104 @SuppressWarnings("unchecked")
105 @Override
106 public List<News> findAll(Integer start, Integer max, String field, String order) {
107 String queryString = "SELECT DISTINCT n FROM News n JOIN n.descriptionMap dm WHERE dm.language = 'DE' ORDER BY ";
108 queryString = queryString + field + " " + order;
109 Query query = entityManager.createQuery(queryString);
110 query.setFirstResult(start);
111 query.setMaxResults(max);
112 return query.getResultList();
113 }
114
115 @SuppressWarnings("unchecked")
116 @Override
117 public List<News> findAllVisible(Integer start, Integer max) {
118 String queryString = "SELECT n FROM News n WHERE n.visible = 'Y' and n.releaseDate < :date ORDER BY n.releaseDate desc";
119 Query query = entityManager.createQuery(queryString);
120 query.setFirstResult(start);
121 query.setMaxResults(max);
122 query.setParameter("date", new Date());
123 return query.getResultList();
124 }
125
126
127
128
129 @Override
130 public Integer countAll() {
131 Query query = entityManager.createQuery("Select Count(n) from News n");
132 return Integer.parseInt(query.getSingleResult().toString());
133 }
134
135 @Override
136 public Integer countAllVisible() {
137 Query query = entityManager.createQuery("Select Count(n) from News n WHERE n.visible = 'Y' and n.releaseDate < :date");
138 query.setParameter("date", new Date());
139 return Integer.parseInt(query.getSingleResult().toString());
140 }
141
142 }