Diferencia entre revisiones de «Grupo Almacenamiento de votos(2014-15)»
(Página creada con '== Descripción== Una base de datos de votos cifrados. Se almacenarán los votos sin información alguna del votante. Antes de añadir un nuevo voto a la base de datos, el alma…') |
(→Prácticas) |
||
(No se muestran 24 ediciones intermedias de 5 usuarios) | |||
Línea 1: | Línea 1: | ||
== Descripción== | == Descripción== | ||
− | Una base de datos de votos cifrados. Se almacenarán los votos sin información alguna del votante. Antes de añadir un nuevo voto a la base de datos, el almacenamiento tiene que verificar que el voto viene de un votante válido, por lo que deberá consultar al sistema de autenticación. Una vez almacenado el voto, debe notificar al sistema de autenticación que el usuario ya ha votado. | + | Una base de datos de votos cifrados. Se almacenarán los votos sin información alguna del votante. Antes de añadir un nuevo voto a la base de datos, el almacenamiento tiene que verificar que el voto viene de un votante válido, por lo que deberá consultar al sistema de autenticación. Una vez almacenado el voto, debe notificar al sistema de autenticación que el usuario ya ha votado. Con el fin de llevar esto a cabo se tendrá una base de datos MySQL y se dispondrá de una interfaz en Java con la que acceder a ella para almacenar votos y para obtenerlos. |
+ | Historias de usuario: | ||
+ | Como votante deseo almacenar mi voto con el fin de que quede almacenado de forma permanente y no sea susceptible a perderse. | ||
+ | |||
+ | Requisitos de información: | ||
+ | Votos que almacenar | ||
== Miembros == | == Miembros == | ||
Línea 8: | Línea 13: | ||
* Miguel Ángel Núñez-Romero Olmo | * Miguel Ángel Núñez-Romero Olmo | ||
* David Letrán González | * David Letrán González | ||
− | * Cristina | + | * Cristina Padilla Carrero |
* Carlos López García | * Carlos López García | ||
* Luis Pintado Lozano | * Luis Pintado Lozano | ||
− | == | + | == Iteraciones == |
+ | *[[Iteración 1 (01/10/2014)]] | ||
+ | *[[Iteración 2 (06/10/2014)]] | ||
+ | *[[Iteración 3 (08/10/2014)]] | ||
+ | *[[Iteración 4 (27/10/2014)]] | ||
+ | == Prácticas == | ||
+ | *[[Práctica 1 (15/10/2014)]] | ||
+ | *[[Práctica 2 (22/10/2014)]] | ||
+ | *[[Práctica 3 (30/10/2014)]] | ||
== Subsistemas relacionados == | == Subsistemas relacionados == | ||
Línea 19: | Línea 32: | ||
* Recuento: se deberá proporcionar la lista de todos los votos. | * Recuento: se deberá proporcionar la lista de todos los votos. | ||
* Cabina de votación: recibimos del subsistema el voto cifrado para guardarlo en la base de datos. | * Cabina de votación: recibimos del subsistema el voto cifrado para guardarlo en la base de datos. | ||
− | * | + | |
+ | ==Recomendación de integración con nuestro subsistema == | ||
+ | * Cabina de votación: | ||
+ | |||
+ | Se ofrece un método para python que recibe un voto que será una cadena codificada y votacion_id que será el número de id de la votación. El método devolverá True si la operación ha tenido éxito y False en caso contrario. | ||
+ | |||
+ | <source lang="python"> | ||
+ | import urllib2,urllib,json | ||
+ | |||
+ | |||
+ | def vote(voto,votacion_id): | ||
+ | data=[('vote',voto),('votation_id',votacion_id)] | ||
+ | data=urllib.urlencode(data) | ||
+ | path='http://php-egc.rhcloud.com/vote.php' | ||
+ | req=urllib2.Request(path,data) | ||
+ | response=urllib2.urlopen(req) | ||
+ | response_data = json.load(response) | ||
+ | result = False | ||
+ | if response_data['msg']==u'1': | ||
+ | result=True | ||
+ | return result | ||
+ | </source> | ||
+ | |||
+ | * Recuento | ||
+ | |||
+ | Se ofrece un método en java que devuelve una lista de String con todos los votos de una votación. Para ello son necesarias las librerías org.json-20120521.jar y json-simple-1.1.1.jar | ||
+ | |||
+ | <source lang="java"> | ||
+ | import java.io.BufferedReader; | ||
+ | import java.io.IOException; | ||
+ | import java.io.InputStream; | ||
+ | import java.io.InputStreamReader; | ||
+ | import java.io.Reader; | ||
+ | import java.net.URL; | ||
+ | import java.nio.charset.Charset; | ||
+ | import java.util.ArrayList; | ||
+ | import java.util.List; | ||
+ | |||
+ | import org.json.JSONException; | ||
+ | import org.json.simple.JSONArray; | ||
+ | import org.json.simple.JSONObject; | ||
+ | import org.json.simple.parser.JSONParser; | ||
+ | import org.json.simple.parser.ParseException; | ||
+ | |||
+ | public class Votos { | ||
+ | |||
+ | public static List<String> getVotos(int votation_id) throws ParseException,IOException, JSONException { | ||
+ | List<String> votos = new ArrayList<String>(); | ||
+ | String url = "http://php-egc.rhcloud.com/get_votes.php?votation_id=" + votation_id; | ||
+ | JSONObject jsonObject = readJsonFromUrl(url); | ||
+ | JSONArray votes = (JSONArray) jsonObject.get("votes"); | ||
+ | for (int i = 0; i < votes.size(); i++) { | ||
+ | votos.add((String) votes.get(i)); | ||
+ | } | ||
+ | return votos; | ||
+ | } | ||
+ | |||
+ | private static JSONObject readJsonFromUrl(String url) throws IOException, | ||
+ | JSONException, ParseException { | ||
+ | JSONParser jsonParser = new JSONParser(); | ||
+ | InputStream is = new URL(url).openStream(); | ||
+ | try { | ||
+ | BufferedReader rd = new BufferedReader(new InputStreamReader(is, | ||
+ | Charset.forName("UTF-8"))); | ||
+ | String jsonText = readAll(rd); | ||
+ | JSONObject json = (JSONObject) jsonParser.parse(jsonText); | ||
+ | return json; | ||
+ | } finally { | ||
+ | is.close(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | private static String readAll(Reader rd) throws IOException { | ||
+ | StringBuilder sb = new StringBuilder(); | ||
+ | int cp; | ||
+ | while ((cp = rd.read()) != -1) { | ||
+ | sb.append((char) cp); | ||
+ | } | ||
+ | return sb.toString(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </source> | ||
+ | == Alternativa de integración - API == | ||
+ | |||
+ | {| border="1" style="border-collapse:collapse" class="wikitable sortable" | ||
+ | |- | ||
+ | ! Método (URL) | ||
+ | ! Tipo | ||
+ | ! Descripción | ||
+ | ! Parámetros | ||
+ | ! Respuesta | ||
+ | ! Ejemplo | ||
+ | |- | ||
+ | | vote (http://php-egc.rhcloud.com/vote.php) | ||
+ | | POST | ||
+ | | Permite almacenar un voto para una determinada votación | ||
+ | | | ||
+ | *vote: voto codificado | ||
+ | *votation_id: id de la votación | ||
+ | | Json con un mensaje de respuesta que indica si la operación se ha resuelto correctamente. (el mensaje será 1 si todo salió bien y 0 en caso contrario) | ||
+ | | {"msg":1} | ||
+ | |- | ||
+ | | get_votes (http://php-egc.rhcloud.com/get_votes.php) | ||
+ | | GET | ||
+ | | Devuelve la lista de votos de una determinada votación | ||
+ | | | ||
+ | * votation_id: id de la votación. | ||
+ | | Json con la lista de votos y un campo "msg" que indica si la operación se realizó correctamente. | ||
+ | | {"votes":["voto1","voto2"],"msg":1} |
Revisión actual del 17:06 3 ene 2015
Contenido
Descripción
Una base de datos de votos cifrados. Se almacenarán los votos sin información alguna del votante. Antes de añadir un nuevo voto a la base de datos, el almacenamiento tiene que verificar que el voto viene de un votante válido, por lo que deberá consultar al sistema de autenticación. Una vez almacenado el voto, debe notificar al sistema de autenticación que el usuario ya ha votado. Con el fin de llevar esto a cabo se tendrá una base de datos MySQL y se dispondrá de una interfaz en Java con la que acceder a ella para almacenar votos y para obtenerlos.
Historias de usuario: Como votante deseo almacenar mi voto con el fin de que quede almacenado de forma permanente y no sea susceptible a perderse.
Requisitos de información: Votos que almacenar
Miembros
- Cristian Fernández Rivas
- Miguel Ángel Núñez-Romero Olmo
- David Letrán González
- Cristina Padilla Carrero
- Carlos López García
- Luis Pintado Lozano
Iteraciones
Prácticas
Subsistemas relacionados
- Recuento: se deberá proporcionar la lista de todos los votos.
- Cabina de votación: recibimos del subsistema el voto cifrado para guardarlo en la base de datos.
Recomendación de integración con nuestro subsistema
- Cabina de votación:
Se ofrece un método para python que recibe un voto que será una cadena codificada y votacion_id que será el número de id de la votación. El método devolverá True si la operación ha tenido éxito y False en caso contrario.
import urllib2,urllib,json
def vote(voto,votacion_id):
data=[('vote',voto),('votation_id',votacion_id)]
data=urllib.urlencode(data)
path='http://php-egc.rhcloud.com/vote.php'
req=urllib2.Request(path,data)
response=urllib2.urlopen(req)
response_data = json.load(response)
result = False
if response_data['msg']==u'1':
result=True
return result
- Recuento
Se ofrece un método en java que devuelve una lista de String con todos los votos de una votación. Para ello son necesarias las librerías org.json-20120521.jar y json-simple-1.1.1.jar
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class Votos {
public static List<String> getVotos(int votation_id) throws ParseException,IOException, JSONException {
List<String> votos = new ArrayList<String>();
String url = "http://php-egc.rhcloud.com/get_votes.php?votation_id=" + votation_id;
JSONObject jsonObject = readJsonFromUrl(url);
JSONArray votes = (JSONArray) jsonObject.get("votes");
for (int i = 0; i < votes.size(); i++) {
votos.add((String) votes.get(i));
}
return votos;
}
private static JSONObject readJsonFromUrl(String url) throws IOException,
JSONException, ParseException {
JSONParser jsonParser = new JSONParser();
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is,
Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONObject json = (JSONObject) jsonParser.parse(jsonText);
return json;
} finally {
is.close();
}
}
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
}
Alternativa de integración - API
Método (URL) | Tipo | Descripción | Parámetros | Respuesta | Ejemplo |
---|---|---|---|---|---|
vote (http://php-egc.rhcloud.com/vote.php) | POST | Permite almacenar un voto para una determinada votación |
|
Json con un mensaje de respuesta que indica si la operación se ha resuelto correctamente. (el mensaje será 1 si todo salió bien y 0 en caso contrario) | {"msg":1} |
get_votes (http://php-egc.rhcloud.com/get_votes.php) | GET | Devuelve la lista de votos de una determinada votación |
|
Json con la lista de votos y un campo "msg" que indica si la operación se realizó correctamente. | {"votes":["voto1","voto2"],"msg":1} |