View Javadoc

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   * @author Marc Michele
22   *
23   */
24  @Stateless
25  public class CSSGroupDao implements CSSGroupDaoLocal {
26  
27      /**
28       * Statischer Logger der Klasse.
29       */
30      private static final Logger LOGGER = LogManager.getLogger(CSSGroupDao.class);
31  
32      /**
33       * EntityManager der Dao Klasse.
34       */
35      @PersistenceContext
36      private EntityManager entityManager;
37  
38      /* (non-Javadoc)
39       * @see de.tivsource.shop.dao.cssgroup.CSSGroupDaoLocal#save(de.tivsource.shop.common.css.CSSGroup)
40       */
41      @Override
42      public void save(CSSGroup cssGroup) {
43          LOGGER.info("save(CSSGroup cssGroup) aufgerufen");
44          entityManager.persist(cssGroup);
45      }
46  
47      /* (non-Javadoc)
48       * @see de.tivsource.shop.dao.cssgroup.CSSGroupDaoLocal#merge(de.tivsource.shop.common.css.CSSGroup)
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      /* (non-Javadoc)
63       * @see de.tivsource.shop.dao.cssgroup.CSSGroupDaoLocal#delete(de.tivsource.shop.common.css.CSSGroup)
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      /* (non-Javadoc)
81       * @see de.tivsource.shop.dao.cssgroup.CSSGroupDaoLocal#deleteFiles(de.tivsource.shop.common.css.CSSGroup)
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      /* (non-Javadoc)
99       * @see de.tivsource.shop.dao.cssgroup.CSSGroupDaoLocal#hasReferences(java.lang.String)
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     /* (non-Javadoc)
109      * @see de.tivsource.shop.dao.cssgroup.CSSGroupDaoLocal#findByUuid(java.lang.String)
110      */
111     @Override
112     public CSSGroup findByUuid(String uuid) {
113         return entityManager.find(CSSGroup.class, uuid);
114     }
115 
116     /* (non-Javadoc)
117      * @see de.tivsource.shop.dao.cssgroup.CSSGroupDaoLocal#findAll(java.lang.Integer, java.lang.Integer)
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     /* (non-Javadoc)
129      * @see de.tivsource.shop.dao.cssgroup.CSSGroupDaoLocal#findAll(java.lang.Integer, java.lang.Integer, java.lang.String, java.lang.String)
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     /* (non-Javadoc)
143      * @see de.tivsource.shop.dao.cssgroup.CSSGroupDaoLocal#countAll()
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 }// Ende class