# HG changeset patch # User František Kučera # Date 1272377616 -7200 # Node ID e8371105fcc879677d92957fffe77402cca85c42 # Parent 6209f3d550c58814cfe8960e0e49c1969f920c50 Hlasování: DAO a EJB vrstva pro ukládání hlasů, kostra pro načítání výsledků hlasování. diff -r 6209f3d550c5 -r e8371105fcc8 html/graf.svg --- a/html/graf.svg Tue Apr 27 13:14:23 2010 +0200 +++ b/html/graf.svg Tue Apr 27 16:13:36 2010 +0200 @@ -42,7 +42,7 @@ - + diff -r 6209f3d550c5 -r e8371105fcc8 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 13:14:23 2010 +0200 +++ b/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java Tue Apr 27 16:13:36 2010 +0200 @@ -1,8 +1,10 @@ package cz.frantovo.nekurak.dao; import cz.frantovo.nekurak.dto.Podnik; +import cz.frantovo.nekurak.dto.VysledekHlasovani; import java.util.Collection; import java.util.Date; +import java.util.logging.Logger; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.persistence.EntityManager; @@ -17,6 +19,7 @@ @LocalBean public class PodnikDAO { + private static final Logger log = Logger.getLogger(PodnikDAO.class.getSimpleName()); @PersistenceContext(unitName = DAO.PU) private EntityManager em; @@ -52,4 +55,17 @@ em.merge(p); } + + 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);"); + insert.setParameter("podnik", podnik); + insert.setParameter("hlas", hlas); + insert.setParameter("ip_adresa", ipAdresa); + insert.executeUpdate(); + } + + public VysledekHlasovani getVysledekHlasovani(int podnik) { + log.severe("TODO: vracet skutečné výsledky z databáze"); + return new VysledekHlasovani(10, 50); + } } diff -r 6209f3d550c5 -r e8371105fcc8 java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikEJB.java --- a/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikEJB.java Tue Apr 27 13:14:23 2010 +0200 +++ b/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikEJB.java Tue Apr 27 16:13:36 2010 +0200 @@ -2,8 +2,10 @@ import cz.frantovo.nekurak.dao.PodnikDAO; import cz.frantovo.nekurak.dto.Podnik; +import cz.frantovo.nekurak.dto.VysledekHlasovani; import cz.frantovo.nekurak.ejb.Geo.Souradnice; import java.util.Collection; +import java.util.logging.Logger; import javax.annotation.Resource; import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; @@ -17,6 +19,7 @@ @Stateless public class PodnikEJB implements PodnikRemote { + private static final Logger log = Logger.getLogger(PodnikEJB.class.getSimpleName()); @EJB private PodnikDAO podnikDAO; @Resource @@ -61,4 +64,12 @@ return pocetAktualizovanych; } + + public void hlasuj(int podnik, boolean hlas, String ipAdresa) { + podnikDAO.hlasuj(podnik, hlas, ipAdresa); + } + + public VysledekHlasovani getVysledekHlasovani(int podnik) { + return podnikDAO.getVysledekHlasovani(podnik); + } } diff -r 6209f3d550c5 -r e8371105fcc8 java/nekurak.net-lib/src/cz/frantovo/nekurak/dto/VysledekHlasovani.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/nekurak.net-lib/src/cz/frantovo/nekurak/dto/VysledekHlasovani.java Tue Apr 27 16:13:36 2010 +0200 @@ -0,0 +1,39 @@ +package cz.frantovo.nekurak.dto; + +/** + * Agregovaný výsledek hlasování o tom, + * zda se má v daném (jednom) podniku kouřit nebo ne. + * @author fiki + */ +public class VysledekHlasovani { + + private int hlasuAno; + private int hlasuNe; + + public VysledekHlasovani(int hlasuAno, int hlasuNe) { + this.hlasuAno = hlasuAno; + this.hlasuNe = hlasuNe; + } + + /** + * @return počet hlasů pro kuřácký podnik + */ + public int getHlasuAno() { + return hlasuAno; + } + + public void setHlasuAno(int pocet) { + this.hlasuAno = pocet; + } + + /** + * @return počet hlasů pro nekuřácký podnik + */ + public int getHlasuNe() { + return hlasuNe; + } + + public void setHlasuNe(int pocet) { + this.hlasuNe = pocet; + } +} diff -r 6209f3d550c5 -r e8371105fcc8 java/nekurak.net-lib/src/cz/frantovo/nekurak/ejb/PodnikRemote.java --- a/java/nekurak.net-lib/src/cz/frantovo/nekurak/ejb/PodnikRemote.java Tue Apr 27 13:14:23 2010 +0200 +++ b/java/nekurak.net-lib/src/cz/frantovo/nekurak/ejb/PodnikRemote.java Tue Apr 27 16:13:36 2010 +0200 @@ -1,6 +1,7 @@ package cz.frantovo.nekurak.ejb; import cz.frantovo.nekurak.dto.Podnik; +import cz.frantovo.nekurak.dto.VysledekHlasovani; import java.util.Collection; import javax.ejb.Remote; @@ -20,4 +21,18 @@ public Podnik getPodnik(int id); public int dopocitejSouradnice(); + + /** + * Zaznamená hlas uživatele + * @param podnik ID podniku + * @param hlas true = kuřácký | false = nekuřácký + * @param ipAdresa IP adresa uživatele, který hlasuje + */ + public void hlasuj(int podnik, boolean hlas, String ipAdresa); + + /** + * @param podnik ID podniku + * @return agregované výsledky hlasování pro daný podnik + */ + public VysledekHlasovani getVysledekHlasovani(int podnik); } diff -r 6209f3d550c5 -r e8371105fcc8 java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/Detail.java --- a/java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/Detail.java Tue Apr 27 13:14:23 2010 +0200 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/Detail.java Tue Apr 27 16:13:36 2010 +0200 @@ -3,8 +3,6 @@ import cz.frantovo.nekurak.dto.Podnik; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; -import java.util.logging.Level; -import java.util.logging.Logger; /** * diff -r 6209f3d550c5 -r e8371105fcc8 java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/Hlasovani.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/web/Hlasovani.java Tue Apr 27 16:13:36 2010 +0200 @@ -0,0 +1,25 @@ +package cz.frantovo.nekurak.web; + +import cz.frantovo.nekurak.dto.VysledekHlasovani; + +/** + * + * @author fiki + */ +public class Hlasovani { + + private HledacSluzby hledac = new HledacSluzby(); + private int podnik; + private VysledekHlasovani vysledek; + + public void setPodnik(int podnik) { + this.podnik = podnik; + } + + public VysledekHlasovani getVysledek() { + if (vysledek == null) { + vysledek = hledac.getPodnikEJB().getVysledekHlasovani(podnik); + } + return vysledek; + } +} diff -r 6209f3d550c5 -r e8371105fcc8 java/nekurak.net-web/web/WEB-INF/casti/uvod.jsp --- a/java/nekurak.net-web/web/WEB-INF/casti/uvod.jsp Tue Apr 27 13:14:23 2010 +0200 +++ b/java/nekurak.net-web/web/WEB-INF/casti/uvod.jsp Tue Apr 27 16:13:36 2010 +0200 @@ -35,7 +35,7 @@
- +
diff -r 6209f3d550c5 -r e8371105fcc8 java/nekurak.net-web/web/WEB-INF/tags/nekurak/hlasovani.tag --- a/java/nekurak.net-web/web/WEB-INF/tags/nekurak/hlasovani.tag Tue Apr 27 13:14:23 2010 +0200 +++ b/java/nekurak.net-web/web/WEB-INF/tags/nekurak/hlasovani.tag Tue Apr 27 16:13:36 2010 +0200 @@ -6,14 +6,23 @@ version="2.0"> - - + + + + + + + + + + + - + @@ -92,19 +101,28 @@ - + Mělo by se tu: + + + (zatím nikdo nehlasoval) + + + + + + - + nekouřit - + - + kouřit - + diff -r 6209f3d550c5 -r e8371105fcc8 java/nekurak.net-web/web/WEB-INF/tags/nekurak/stranka.tag --- a/java/nekurak.net-web/web/WEB-INF/tags/nekurak/stranka.tag Tue Apr 27 13:14:23 2010 +0200 +++ b/java/nekurak.net-web/web/WEB-INF/tags/nekurak/stranka.tag Tue Apr 27 16:13:36 2010 +0200 @@ -29,6 +29,7 @@ + diff -r 6209f3d550c5 -r e8371105fcc8 java/nekurak.net-web/web/js/hlasovani.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/nekurak.net-web/web/js/hlasovani.js Tue Apr 27 16:13:36 2010 +0200 @@ -0,0 +1,9 @@ +var hlasovani = {}; + +hlasovani.hlasuj = function (podnik, hlas) { + if (hlas) { + alert("Hlasuješ ANO:" + hlas + "pro podnik " + podnik); + } else { + alert("Hlasuješ NE:" + hlas + "pro podnik " + podnik); + } +};