Grupo Almacenamiento de votos(2014-15)

De Wiki de EGC
Revisión del 21:47 19 nov 2014 de Davletgon (discusión | contribuciones) (Integración)
Saltar a: navegación, buscar

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();
	}
}