diff -r e8371105fcc8 -r f74a9fc683da java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java --- a/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java Tue Apr 27 16:13:36 2010 +0200 +++ b/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java Tue Apr 27 17:13:23 2010 +0200 @@ -2,9 +2,11 @@ import cz.frantovo.nekurak.dto.Podnik; import cz.frantovo.nekurak.dto.VysledekHlasovani; +import cz.frantovo.superDAO.SuperDAO; +import java.math.BigInteger; import java.util.Collection; import java.util.Date; -import java.util.logging.Logger; +import java.util.List; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.persistence.EntityManager; @@ -17,12 +19,17 @@ */ @Stateless @LocalBean -public class PodnikDAO { +public class PodnikDAO extends SuperDAO { - private static final Logger log = Logger.getLogger(PodnikDAO.class.getSimpleName()); @PersistenceContext(unitName = DAO.PU) private EntityManager em; + private enum SQL { + + HLASOVANI_INSERT, + HLASOVANI_SELECT + } + public Collection getPodniky() { Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " o ORDER BY datum DESC"); return dotaz.getResultList(); @@ -57,7 +64,7 @@ } public void hlasuj(int podnik, boolean hlas, String ipAdresa) { - Query insert = em.createNativeQuery("INSERT INTO hlasovani (podnik, hlas, ip_adresa) VALUES (:podnik, :hlas, :ip_adresa);"); + Query insert = em.createNativeQuery(getSQL(SQL.HLASOVANI_INSERT)); insert.setParameter("podnik", podnik); insert.setParameter("hlas", hlas); insert.setParameter("ip_adresa", ipAdresa); @@ -65,7 +72,22 @@ } public VysledekHlasovani getVysledekHlasovani(int podnik) { - log.severe("TODO: vracet skutečné výsledky z databáze"); - return new VysledekHlasovani(10, 50); + VysledekHlasovani vysledek = new VysledekHlasovani(); + Query select = em.createNativeQuery(getSQL(SQL.HLASOVANI_SELECT)); + select.setParameter("podnik", podnik); + List vysledekDotazu = select.getResultList(); + + log.severe("Vracím výsledky pro podnik: " + podnik); + + for (Object[] radek : vysledekDotazu) { + /** Transponujeme výsledek dotazu */ + if ((Boolean) radek[0]) { + vysledek.setHlasuAno((Integer) radek[1]); + } else { + vysledek.setHlasuNe((Integer) radek[1]); + } + } + + return vysledek; } }