View Javadoc

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   * @author Marc Michele
21   *
22   */
23  @Stateless
24  public class NewsDao implements NewsDaoLocal {
25  
26      /*
27       * Statischer Logger der Klasse.
28       */
29      private static final Logger LOGGER = LogManager.getLogger(NewsDao.class);
30  
31      /*
32       * EntityManager der Dao Klasse.
33       */
34      @PersistenceContext
35      private EntityManager entityManager;
36  
37  	/* (non-Javadoc)
38  	 * @see de.tivsource.page.dao.news.NewsDaoLocal#save(de.tivsource.page.entity.news.News)
39  	 */
40  	@Override
41  	public void save(News news) {
42          LOGGER.info("save(News news) aufgerufen");
43          entityManager.persist(news);
44  	}
45  
46  	/* (non-Javadoc)
47  	 * @see de.tivsource.page.dao.news.NewsDaoLocal#merge(de.tivsource.page.entity.news.News)
48  	 */
49  	@Override
50  	public void merge(News news) {
51          LOGGER.info("merge(News news) aufgerufen");
52          entityManager.merge(news);
53  	}
54  
55  	/* (non-Javadoc)
56  	 * @see de.tivsource.page.dao.news.NewsDaoLocal#delete(de.tivsource.page.entity.news.News)
57  	 */
58  	@Override
59  	public void delete(News news) {
60  		entityManager.remove(entityManager.find(News.class, news.getUuid()));
61  	}
62  
63  	/* (non-Javadoc)
64  	 * @see de.tivsource.page.dao.news.NewsDaoLocal#isNewsUrl(java.lang.String)
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  	/* (non-Javadoc)
82  	 * @see de.tivsource.page.dao.news.NewsDaoLocal#findByUuid(java.lang.String)
83  	 */
84  	@Override
85  	public News findByUuid(String uuid) {
86  		return entityManager.find(News.class, uuid);
87  	}
88  
89  	/* (non-Javadoc)
90  	 * @see de.tivsource.page.dao.news.NewsDaoLocal#findAll(java.lang.Integer, java.lang.Integer)
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 	/* (non-Javadoc)
102 	 * @see de.tivsource.page.dao.news.NewsDaoLocal#findAll(java.lang.Integer, java.lang.Integer, java.lang.String, java.lang.String)
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 	/* (non-Javadoc)
127 	 * @see de.tivsource.page.dao.news.NewsDaoLocal#countAll()
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 }// Ende class