franta-hg@39: package cz.frantovo.nekurak.dao; franta-hg@39: franta-hg@134: import cz.frantovo.nekurak.dto.Komentar; franta-hg@39: import cz.frantovo.nekurak.dto.Podnik; franta-hg@107: import cz.frantovo.nekurak.dto.VysledekHlasovani; franta-hg@108: import cz.frantovo.superDAO.SuperDAO; franta-hg@39: import java.util.Collection; franta-hg@49: import java.util.Date; franta-hg@108: import java.util.List; franta-hg@39: import javax.ejb.LocalBean; franta-hg@39: import javax.ejb.Stateless; franta-hg@39: import javax.persistence.EntityManager; franta-hg@39: import javax.persistence.PersistenceContext; franta-hg@39: import javax.persistence.Query; franta-hg@39: franta-hg@39: /** franta-hg@39: * franta-hg@39: * @author fiki franta-hg@39: */ franta-hg@39: @Stateless franta-hg@39: @LocalBean franta-hg@108: public class PodnikDAO extends SuperDAO { franta-hg@39: franta-hg@145: @PersistenceContext(unitName = DAO.PU) franta-hg@145: private EntityManager em; franta-hg@39: franta-hg@145: private enum SQL { franta-hg@108: franta-hg@145: HLASOVANI_INSERT, franta-hg@145: HLASOVANI_SELECT franta-hg@49: } franta-hg@49: franta-hg@145: public Collection getPodniky() { franta-hg@145: Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " o ORDER BY datum DESC"); franta-hg@145: return dotaz.getResultList(); franta-hg@56: } franta-hg@56: franta-hg@145: /** franta-hg@145: * @return podniky, které nemají souřadnice (null, null) franta-hg@145: */ franta-hg@145: public Collection getPodnikyBezSouradnic() { franta-hg@145: Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " o WHERE sirka IS NULL AND delka IS NULL"); franta-hg@145: return dotaz.getResultList(); franta-hg@108: } franta-hg@108: franta-hg@145: public Podnik getPodnik(int id) { franta-hg@145: return em.find(Podnik.class, id); franta-hg@145: } franta-hg@145: franta-hg@145: public void zaloz(Podnik p) { franta-hg@145: if (p.getDatum() == null) { franta-hg@145: p.setDatum(new Date()); franta-hg@145: } franta-hg@145: franta-hg@145: em.persist(p); franta-hg@145: } franta-hg@145: franta-hg@145: public void uloz(Podnik p) { franta-hg@145: if (p.getDatum() == null) { franta-hg@145: p.setDatum(new Date()); franta-hg@145: } franta-hg@145: franta-hg@145: em.merge(p); franta-hg@145: } franta-hg@145: franta-hg@145: public void zaloz(Komentar k) { franta-hg@145: if (k.getDatum() == null) { franta-hg@145: k.setDatum(new Date()); franta-hg@145: } franta-hg@145: franta-hg@145: em.persist(k); franta-hg@145: } franta-hg@145: franta-hg@145: /** franta-hg@145: * Zaznamená hlas uživatele, zda se v podniku má nebo nemá kouřit franta-hg@145: * @param podnik podnik o kterém se hlasuje franta-hg@145: * @param hlas true = kouřit | false = nekouřit franta-hg@145: * @param ipAdresa identifikujeme pomocí ní uživatele franta-hg@145: */ franta-hg@145: public void hlasuj(int podnik, boolean hlas, String ipAdresa) { franta-hg@145: Query insert = em.createNativeQuery(getSQL(SQL.HLASOVANI_INSERT)); franta-hg@145: insert.setParameter("podnik", podnik); franta-hg@145: insert.setParameter("hlas", hlas); franta-hg@145: insert.setParameter("ip_adresa", ipAdresa); franta-hg@145: insert.executeUpdate(); franta-hg@145: } franta-hg@145: franta-hg@145: public VysledekHlasovani getVysledekHlasovani(int podnik) { franta-hg@145: VysledekHlasovani vysledek = new VysledekHlasovani(); franta-hg@145: Query select = em.createNativeQuery(getSQL(SQL.HLASOVANI_SELECT)); franta-hg@145: select.setParameter("podnik", podnik); franta-hg@145: List vysledekDotazu = select.getResultList(); franta-hg@145: franta-hg@145: for (Object[] radek : vysledekDotazu) { franta-hg@145: /** Transponujeme výsledek dotazu */ franta-hg@145: if ((Boolean) radek[0]) { franta-hg@145: vysledek.setHlasuAno((Integer) radek[1]); franta-hg@145: } else { franta-hg@145: vysledek.setHlasuNe((Integer) radek[1]); franta-hg@145: } franta-hg@145: } franta-hg@145: franta-hg@145: return vysledek; franta-hg@145: } franta-hg@39: }