Hlasování: funguje zobrazování výsledků i posílání hlasů.
1.1 --- a/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java Tue Apr 27 17:16:57 2010 +0200
1.2 +++ b/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java Tue Apr 27 19:04:20 2010 +0200
1.3 @@ -77,8 +77,6 @@
1.4 select.setParameter("podnik", podnik);
1.5 List<Object[]> vysledekDotazu = select.getResultList();
1.6
1.7 - log.severe("Vracím výsledky pro podnik: " + podnik);
1.8 -
1.9 for (Object[] radek : vysledekDotazu) {
1.10 /** Transponujeme výsledek dotazu */
1.11 if ((Boolean) radek[0]) {
2.1 --- a/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikEJB.java Tue Apr 27 17:16:57 2010 +0200
2.2 +++ b/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikEJB.java Tue Apr 27 19:04:20 2010 +0200
2.3 @@ -4,7 +4,10 @@
2.4 import cz.frantovo.nekurak.dto.Podnik;
2.5 import cz.frantovo.nekurak.dto.VysledekHlasovani;
2.6 import cz.frantovo.nekurak.ejb.Geo.Souradnice;
2.7 +import java.lang.String;
2.8 import java.util.Collection;
2.9 +import java.util.Iterator;
2.10 +import java.util.Set;
2.11 import java.util.logging.Logger;
2.12 import javax.annotation.Resource;
2.13 import javax.annotation.security.RolesAllowed;
2.14 @@ -66,6 +69,7 @@
2.15 }
2.16
2.17 public void hlasuj(int podnik, boolean hlas, String ipAdresa) {
2.18 +
2.19 podnikDAO.hlasuj(podnik, hlas, ipAdresa);
2.20 }
2.21
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/java/nekurak.net-lib/src/cz/frantovo/nekurak/util/HttpPozadavek.java Tue Apr 27 19:04:20 2010 +0200
3.3 @@ -0,0 +1,34 @@
3.4 +package cz.frantovo.nekurak.util;
3.5 +
3.6 +import java.util.ArrayList;
3.7 +import java.util.List;
3.8 +import javax.servlet.http.HttpServletRequest;
3.9 +
3.10 +/**
3.11 + * Pomocná třída s funkcemi pro HTTP požadavky.
3.12 + * @author fiki
3.13 + */
3.14 +public class HttpPozadavek {
3.15 +
3.16 + private static List<String> mistniAdresy = new ArrayList<String>();
3.17 +
3.18 + static {
3.19 + mistniAdresy.add("127.0.0.1");
3.20 + }
3.21 +
3.22 + /**
3.23 + * @deprecated TODO: toto je dočasný HACK.
3.24 + * Správně bychom měli použít ventil a přepsat si IP adresu na správnou,
3.25 + * abychom pak normálně všude mohli používat getRemoteAddr();
3.26 + * @param pozadavek HTTP požadavek
3.27 + * @return IP adresa (x-forwarded-for)
3.28 + */
3.29 + @Deprecated
3.30 + public static String getIPadresa(HttpServletRequest pozadavek) {
3.31 + if (mistniAdresy.contains(pozadavek.getRemoteAddr())) {
3.32 + return pozadavek.getHeader("x-forwarded-for");
3.33 + } else {
3.34 + return pozadavek.getRemoteAddr();
3.35 + }
3.36 + }
3.37 +}
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/java/nekurak.net-lib/src/cz/frantovo/nekurak/xml/HlasXML.java Tue Apr 27 19:04:20 2010 +0200
4.3 @@ -0,0 +1,35 @@
4.4 +package cz.frantovo.nekurak.xml;
4.5 +
4.6 +import javax.xml.bind.annotation.XmlElement;
4.7 +import javax.xml.bind.annotation.XmlRootElement;
4.8 +
4.9 +/**
4.10 + * Jeden hlas od uživatele.
4.11 + * @author fiki
4.12 + */
4.13 +@XmlRootElement(name="hlas")
4.14 +public class HlasXML {
4.15 +
4.16 + private int podnik;
4.17 + private boolean kourit;
4.18 +
4.19 + @XmlElement
4.20 + public int getPodnik() {
4.21 + return podnik;
4.22 + }
4.23 +
4.24 + public void setPodnik(int podnik) {
4.25 + this.podnik = podnik;
4.26 + }
4.27 +
4.28 + @XmlElement
4.29 + public boolean isKourit() {
4.30 + return kourit;
4.31 + }
4.32 +
4.33 + public void setKourit(boolean hlas) {
4.34 + this.kourit = hlas;
4.35 + }
4.36 +
4.37 +
4.38 +}
5.1 --- a/java/nekurak.net-rest/src/java/cz/frantovo/nekurak/rest/ClankyREST.java Tue Apr 27 17:16:57 2010 +0200
5.2 +++ b/java/nekurak.net-rest/src/java/cz/frantovo/nekurak/rest/ClankyREST.java Tue Apr 27 19:04:20 2010 +0200
5.3 @@ -20,7 +20,7 @@
5.4 private static final String MIME_XML = "text/xml";
5.5 private static final String MIME_TEXT = "text/plain";
5.6 private HledacSluzby hledac = new HledacSluzby();
5.7 -
5.8 +
5.9 /** Vypíšeme seznam všech článků v systému */
5.10 @GET
5.11 @Path("/")
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/rest/HlasovaniREST.java Tue Apr 27 19:04:20 2010 +0200
6.3 @@ -0,0 +1,29 @@
6.4 +package cz.frantovo.nekurak.rest;
6.5 +
6.6 +import cz.frantovo.nekurak.util.HttpPozadavek;
6.7 +import cz.frantovo.nekurak.web.HledacSluzby;
6.8 +import cz.frantovo.nekurak.xml.HlasXML;
6.9 +import javax.servlet.http.HttpServletRequest;
6.10 +import javax.ws.rs.Consumes;
6.11 +import javax.ws.rs.POST;
6.12 +import javax.ws.rs.Path;
6.13 +import javax.ws.rs.Produces;
6.14 +import javax.ws.rs.core.Context;
6.15 +
6.16 +@Path("hlas")
6.17 +public class HlasovaniREST {
6.18 +
6.19 + @Context
6.20 + HttpServletRequest pozadavek;
6.21 + private static final String MIME_XML = "text/xml";
6.22 + private static final String MIME_TEXT = "text/plain";
6.23 + private HledacSluzby hledac = new HledacSluzby();
6.24 +
6.25 + @POST
6.26 + @Consumes(MIME_XML)
6.27 + @Produces(MIME_TEXT)
6.28 + public String hlasuj(HlasXML xml) {
6.29 + hledac.getPodnikEJB().hlasuj(xml.getPodnik(), xml.isKourit(), HttpPozadavek.getIPadresa(pozadavek));
6.30 + return "ok";
6.31 + }
6.32 +}
7.1 --- a/java/nekurak.net-web/web/WEB-INF/web.xml Tue Apr 27 17:16:57 2010 +0200
7.2 +++ b/java/nekurak.net-web/web/WEB-INF/web.xml Tue Apr 27 19:04:20 2010 +0200
7.3 @@ -44,6 +44,12 @@
7.4 <servlet-name>Kaptcha</servlet-name>
7.5 <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
7.6 </servlet>
7.7 + <servlet>
7.8 + <description>Veřejné REST API (pak máme ještě jedno soukromé, kde musí být uživatel přihlášený)</description>
7.9 + <servlet-name>REST</servlet-name>
7.10 + <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
7.11 + <load-on-startup>1</load-on-startup>
7.12 + </servlet>
7.13 <!-- </definiceServletů> -->
7.14 <!-- <mapováníServletů> -->
7.15 <servlet-mapping>
7.16 @@ -58,6 +64,11 @@
7.17 <servlet-name>Kaptcha</servlet-name>
7.18 <url-pattern>/kaptcha.jpg</url-pattern>
7.19 </servlet-mapping>
7.20 + <servlet-mapping>
7.21 + <!-- Veřejné REST API -->
7.22 + <servlet-name>REST</servlet-name>
7.23 + <url-pattern>/zdroje/*</url-pattern>
7.24 + </servlet-mapping>
7.25 <!-- </mapováníServletů> -->
7.26 <context-param>
7.27 <!-- Pro případ, že chybí hlavička „Accept-language“ v HTTP požadavku -->
8.1 --- a/java/nekurak.net-web/web/js/hlasovani.js Tue Apr 27 17:16:57 2010 +0200
8.2 +++ b/java/nekurak.net-web/web/js/hlasovani.js Tue Apr 27 19:04:20 2010 +0200
8.3 @@ -1,9 +1,22 @@
8.4 var hlasovani = {};
8.5
8.6 hlasovani.hlasuj = function (podnik, hlas) {
8.7 - if (hlas) {
8.8 - alert("Hlasuješ ANO:" + hlas + "pro podnik " + podnik);
8.9 - } else {
8.10 - alert("Hlasuješ NE:" + hlas + "pro podnik " + podnik);
8.11 - }
8.12 + var pozadavek = "<hlas><kourit>" + hlas + "</kourit><podnik>" + podnik + "</podnik></hlas>";
8.13 +
8.14 + $.ajax({
8.15 + type: "POST",
8.16 + url: "zdroje/hlas/",
8.17 + data: pozadavek,
8.18 + contentType: "text/xml",
8.19 + dataType: "text",
8.20 + success: function(odpoved) {
8.21 + if (odpoved == "ok") {
8.22 + /** TODO: předělat informaci – nepoužívat alert ale text v SVG */
8.23 + alert("Váš hlas byl přijat.");
8.24 + } else {
8.25 + /** TODO: předělat ošetřování chyb */
8.26 + alert("Při hlasování došlo k chybě.");
8.27 + }
8.28 + }
8.29 + });
8.30 };