Zobrazování jen schválených podniků, SQL (kategorie, kuřáckost).
1 package cz.frantovo.nekurak.dao;
3 import cz.frantovo.nekurak.dto.Kategorie;
4 import cz.frantovo.nekurak.dto.Komentar;
5 import cz.frantovo.nekurak.dto.Kurackost;
6 import cz.frantovo.nekurak.dto.Podnik;
7 import cz.frantovo.nekurak.dto.VysledekHlasovani;
8 import cz.frantovo.superDAO.SuperDAO;
9 import java.util.Collection;
10 import java.util.Date;
11 import java.util.List;
12 import javax.ejb.LocalBean;
13 import javax.ejb.Stateless;
14 import javax.persistence.EntityManager;
15 import javax.persistence.PersistenceContext;
16 import javax.persistence.Query;
24 public class PodnikDAO extends SuperDAO {
26 @PersistenceContext(unitName = DAO.PU)
27 private EntityManager em;
36 * @return schválené podniky
38 public Collection<Podnik> getPodniky() {
39 Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " p WHERE p.schvaleny = true ORDER BY datum DESC");
40 return dotaz.getResultList();
44 * @return podniky, které nemají souřadnice (null, null), včetně neschválených
46 public Collection<Podnik> getPodnikyBezSouradnic() {
47 Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " p WHERE sirka IS NULL AND delka IS NULL");
48 return dotaz.getResultList();
52 * @param kategorie jedna kategorie
53 * @return podniky určité kategorie (jen schválené)
55 public Collection<Podnik> getPodniky(Kategorie kategorie) {
56 Query dotaz = em.createQuery("SELECT p FROM " + DAO.t(Podnik.class) + " p INNER JOIN p.kategorie k WHERE k = :kategorie AND p.schvaleny = true ORDER BY datum DESC");
57 dotaz.setParameter("kategorie", kategorie);
58 return dotaz.getResultList();
61 public Collection<Podnik> getPodniky(Kurackost kurackost) {
62 Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " p WHERE p.kurackost = :kurackost AND p.schvaleny = true ORDER BY datum DESC");
63 dotaz.setParameter("kurackost", kurackost);
64 return dotaz.getResultList();
68 public Podnik getPodnik(int id) {
69 return em.find(Podnik.class, id);
72 public void zaloz(Podnik p) {
73 if (p.getDatum() == null) {
74 p.setDatum(new Date());
80 public void uloz(Podnik p) {
81 if (p.getDatum() == null) {
82 p.setDatum(new Date());
88 public void zaloz(Komentar k) {
89 if (k.getDatum() == null) {
90 k.setDatum(new Date());
97 * Zaznamená hlas uživatele, zda se v podniku má nebo nemá kouřit
98 * @param podnik podnik o kterém se hlasuje
99 * @param hlas true = kouřit | false = nekouřit
100 * @param ipAdresa identifikujeme pomocí ní uživatele
102 public void hlasuj(int podnik, boolean hlas, String ipAdresa) {
103 Query insert = em.createNativeQuery(getSQL(SQL.HLASOVANI_INSERT));
104 insert.setParameter("podnik", podnik);
105 insert.setParameter("hlas", hlas);
106 insert.setParameter("ip_adresa", ipAdresa);
107 insert.executeUpdate();
110 public VysledekHlasovani getVysledekHlasovani(Podnik podnik) {
111 VysledekHlasovani vysledek = new VysledekHlasovani(podnik);
112 Query select = em.createNativeQuery(getSQL(SQL.HLASOVANI_SELECT));
113 select.setParameter("podnik", podnik.getId());
114 List<Object[]> vysledekDotazu = select.getResultList();
116 for (Object[] radek : vysledekDotazu) {
117 /** Transponujeme výsledek dotazu */
118 if ((Boolean) radek[0]) {
119 vysledek.setHlasuAno((Integer) radek[1]);
121 vysledek.setHlasuNe((Integer) radek[1]);