1
2
3
4 package de.tivsource.page.dao.cssgroup;
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.common.css.CSSFile;
18 import de.tivsource.page.common.css.CSSGroup;
19
20
21
22
23
24 @Stateless
25 public class CSSGroupDao implements CSSGroupDaoLocal {
26
27
28
29
30 private static final Logger LOGGER = LogManager.getLogger(CSSGroupDao.class);
31
32
33
34
35 @PersistenceContext
36 private EntityManager entityManager;
37
38
39
40
41 @Override
42 public void save(CSSGroup cssGroup) {
43 LOGGER.info("save(CSSGroup cssGroup) aufgerufen");
44 entityManager.persist(cssGroup);
45 }
46
47
48
49
50 @Override
51 public void merge(CSSGroup cssGroup) {
52 LOGGER.info("merge(CSSGroup cssGroup) aufgerufen");
53 Iterator<CSSFile> newCssFiles = cssGroup.getFiles().iterator();
54 while (newCssFiles.hasNext()) {
55 CSSFile next = newCssFiles.next();
56 CSSFile dbCssFile = entityManager.find(CSSFile.class, next.getUuid());
57 LOGGER.info("Version der CSS-Datei in der Datenbank: " + dbCssFile.getVersion());
58 }
59 entityManager.merge(cssGroup);
60 }
61
62
63
64
65 @Override
66 public void delete(CSSGroup cssGroup) {
67 CSSGroup dbCSSGroup = entityManager.find(CSSGroup.class, cssGroup.getUuid());
68 if (dbCSSGroup.getFiles().size() > 0) {
69 Iterator<CSSFile> cssFiles = dbCSSGroup.getFiles().iterator();
70 while (cssFiles.hasNext()) {
71 CSSFile next = cssFiles.next();
72 next.getGroups().remove(dbCSSGroup);
73 entityManager.merge(next);
74 }
75 dbCSSGroup.setFiles(null);
76 }
77 entityManager.remove(dbCSSGroup);
78 }
79
80
81
82
83 @Override
84 public void deleteFiles(CSSGroup cssGroup) {
85 CSSGroup dbCSSGroup = entityManager.find(CSSGroup.class, cssGroup.getUuid());
86 if (dbCSSGroup.getFiles().size() > 0) {
87 Iterator<CSSFile> cssFiles = dbCSSGroup.getFiles().iterator();
88 while (cssFiles.hasNext()) {
89 CSSFile next = cssFiles.next();
90 next.getGroups().remove(dbCSSGroup);
91 entityManager.merge(next);
92 }
93 dbCSSGroup.setFiles(null);
94 entityManager.merge(dbCSSGroup);
95 }
96 }
97
98
99
100
101 @Override
102 public Boolean hasReferences(String uuid) {
103 Query query = entityManager.createQuery("SELECT ci FROM ContentItem ci JOIN ci.cssGroup cg WHERE cg.uuid = :uuid order by ci.uuid asc");
104 query.setParameter("uuid", uuid);
105 return (query.getResultList().size() > 0 ? true : false);
106 }
107
108
109
110
111 @Override
112 public CSSGroup findByUuid(String uuid) {
113 return entityManager.find(CSSGroup.class, uuid);
114 }
115
116
117
118
119 @SuppressWarnings("unchecked")
120 @Override
121 public List<CSSGroup> findAll(Integer start, Integer max) {
122 Query query = entityManager.createQuery("from CSSGroup cg order by cg.language asc");
123 query.setFirstResult(start);
124 query.setMaxResults(max);
125 return query.getResultList();
126 }
127
128
129
130
131 @SuppressWarnings("unchecked")
132 @Override
133 public List<CSSGroup> findAll(Integer start, Integer max, String field, String order) {
134 String queryString = "SELECT cg FROM CSSGroup cg ORDER BY ";
135 queryString = queryString + field + " " + order;
136 Query query = entityManager.createQuery(queryString);
137 query.setFirstResult(start);
138 query.setMaxResults(max);
139 return query.getResultList();
140 }
141
142
143
144
145 @Override
146 public Integer countAll() {
147 Query query = entityManager
148 .createQuery("Select Count(cg) from CSSGroup cg");
149 return Integer.parseInt(query.getSingleResult().toString());
150 }
151
152 }