package educacion;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Random;

public class EvaluacionBean {

	
	private int[] preguntas=new int[20];
	private int[] preguntasAleatorias=new int[5];
	private String opcion1;
	private String opcion2;
	private String opcion3;
	private int correcta;
	private int[] idEvaluaciones=new int [3];
	private int[] idsResultados=new int [9];
	private int idEvaluacion;
	private String idUsuario;
	private int puntuacion;
	private int intentos;
	private String nombreEvaluacion;
	private Connection con=null;
	private int numeroEvaluaciones;
	private int numeroPreguntas;
	private String nombrePregunta;
	private int[] errores=new int [8];
	private int referencia;
	private int[] referenciasError = new int [8];
	private boolean realizada=false;
	private int numeroResultados=0;
	private String url = "jdbc:mysql://localhost:3306/formacionprofesorado?user=root&password=lafuisek";
	
	/**
	 * Funcion que introduce la url adecuada para conectarse a la base de datos e
	 * inicializa el valor de intentos a cero.
	 */
	public EvaluacionBean() {
		intentos=0;
	}

	/**
	 * Funcion que se conecta a la base de datos y consigue la opcion correcta de una pregunta
	 * @param idPregunta, int que corresponde al identificador de la pregunta de la que se 
	 * quiere saber su opcion correcta
	 * @return int, que corresponde a la opcion correcta
	 */
	public int getCorrecta(int idPregunta) {
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT correcta FROM pregunta WHERE idPregunta="+idPregunta+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				correcta=rs.getInt("correcta");
			}
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return correcta;
	}
	
	/**
	 * Funcion que almacena la opcion correcta de una pregunta
	 * @param correcta, int que corresponde al numero de la opciono correcta de la pregunta
	 */
	public void setCorrecta(int correcta) {
		this.correcta = correcta;
	}

	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero de evaluaciones existentes
	 * @return int que corresponde al numero de evaluaciones almacenadas en la base de datos
	 */
	public int numeroEvaluaciones(){
		
		numeroEvaluaciones=0;
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT * FROM evaluacion;";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numeroEvaluaciones++;
			}
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numeroEvaluaciones;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero de preguntas existentes
	 * para una evaluacion
	 * @param idEvaluacion, int que corresponde a la evaluacion seleccionada
	 * @return int que corresponde al numero de preguntas almacenadas para la evaluacion elegida
	 */
	public int numeroPreguntas(int idEvaluacion){
		
		numeroPreguntas=0;
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT * FROM eva_preg WHERE idEvaluacion="+idEvaluacion+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numeroPreguntas++;
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numeroPreguntas;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir los identificadores de las 
	 * evaluaciones que ha realizado un usuario
	 * @param idUsuario, String que se corresponde con el identicador del usuario que ha realizado
	 * las evaluaciones
	 * @return int[], vector de enteros que almacena los identificadores de las evaluaciones
	 * realizadas por el usuario
	 */
	public int[] getIdEvaluaciones(String idUsuario) {
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT idEvaluacion FROM resultado WHERE idUsuario='"+idUsuario+"';";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				idEvaluaciones[i]=rs.getInt("idEvaluaciones");
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return idEvaluaciones;
	}

	/**
	 * Funcion que almacena el identificador de la evaluacion
	 * @param idEvaluacion, int que corresponde al identificador de la evaluacion.
	 */
	public void setIdEvaluacion(int idEvaluacion) {
		this.idEvaluacion = idEvaluacion;
	}
	
	/**
	 * Funcion que consigue el identificador de la evaluacion
	 * @return int que sera el identificador de la evaluacion
	 */
	public int getIdEvaluacion(){
		return idEvaluacion;
	}

	/**
	 * Funcion que se conecta a la base de datos para conseguir el identificador del usuario 
	 * que ha realizado una evaluacion
	 * @param idEvaluacion, int que es el identificador de la evaluacion realizada
	 * @return String que sera el identificador del usuario que ha realizado la evaluacion
	 */
	public String getIdUsuario(int idEvaluacion) {
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT idUsuario FROM resultado WHERE idEvaluacion="+idEvaluacion+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				idUsuario=rs.getString("idUsuario");
			}
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return idUsuario;
	}

	/**
	 * Funcion que almacena el identificador de usuario
	 * @param idUsuario, String que corresponde con el identificador del usuario
	 */
	public void setIdUsuario(String idUsuario) {
		this.idUsuario = idUsuario;
	}

	/**
	 * Funcion que se conecta a la base de datos para devolver el numero de veces que un 
	 * usuario ha realizado una evaluacion
	 * @param idEvaluacion, int que corresponde al identificador de la evaluacion
	 * @param idUsuario, String que corresponde con el identificador del usuario que ha realizado la evaluacion
	 * @return int que indica el numero de veces que ha repetido el usuario esa evaluacion
	 */
	public int getIntentos(int idEvaluacion, String idUsuario) {
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT intentos FROM resultado WHERE idUsuario='"+idUsuario+"' and idEvaluacion="+idEvaluacion+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
		
			while(rs.next()){
				intentos=rs.getInt("intentos");
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return intentos;
	}

	/**
	 * Funcion que almacena el numero de intentos
	 * @param intentos, int que corresponde con el numero de veces que un usuario ha realizado
	 * una evaluacion
	 */
	public void setIntentos(int intentos) {
		this.intentos = intentos;
	}

	/**
	 * Funcion que se conecta a la base de datos para conseguir el nombre de la evaluacion
	 * @param idEvaluacion, int que proporciona el identificador de la evaluacion 
	 * @return String, que se corresponde al nombre de la evaluacion que tiene ese identificador
	 */
	public String getNombreEvaluacion(int idEvaluacion) {
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT nombre FROM evaluacion WHERE idEvaluacion="+idEvaluacion+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			
			while(rs.next()){
				nombreEvaluacion=rs.getString("nombre");
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return nombreEvaluacion;
	}

	/**
	 * Funcion que almacena el nombre de la evaluacion
	 * @param nombreEvaluacion, String que es el nombre de la evaluacion
	 */
	public void setNombreEvaluacion(String nombreEvaluacion) {
		this.nombreEvaluacion = nombreEvaluacion;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el identificador de las
	 * las preguntas que pertenecen a una evaluacion
	 * @param idEvaluacion, int que es el identificador de la evaluacion 
	 * @return vector de enteros que contiene los identificadores de las preguntas que 
	 * pertenecen a la evaluacion seleccionada
	 */
	public int[] getPreguntas(int idEvaluacion) {
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT idPregunta FROM eva_preg WHERE idEvaluacion="+idEvaluacion+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			
			int i=0;
			
			while(rs.next()){
				preguntas[i]=rs.getInt("idPregunta");
				i++;
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return preguntas;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el identificador de las
	 * las preguntas que pertenecen a una evaluacion
	 * @param idEvaluacion, int que es el identificador de la evaluacion 
	 * @return vector de enteros que contiene los identificadores de las preguntas que 
	 * pertenecen a la evaluacion seleccionada
	 */
	public int[] getAleatorias() {
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT idPregunta FROM pregunta";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			int numero=0;
			int i=0;
			while(rs.next()){
				preguntas[i]=rs.getInt("idPregunta");
				i++;
				numero++;
			}
			
			Random r = new Random();
			r.setSeed(123456787);
			int j=0;
			while(j!=5){
				preguntasAleatorias[j]=preguntas[r.nextInt(numero)];
				j++;
			}
			
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return preguntasAleatorias;
	}

	/**
	 * Funcion que almacena los indentificadres de las preguntas
	 * @param preguntas, vector de enteros con los identificadores de las preguntas de 
	 * una evaluacion
	 */
	public void setPreguntas(int[] preguntas) {
		this.preguntas = preguntas;
	}

	/**
	 * FUncion que devuelve los identificadores de las preguntas que han sido pasados antes
	 * @return vector de enteros con los identificadores de las preguntas
	 */
	public int[] getPreguntasAleatorias(){
		return preguntas;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el nombre de la pregunta
	 * @param idPregunta, int que es el identificador de la pregunta de la que queremos 
	 * conocer el nombre
	 * @return String que corresponde al nombre de la pregunta
	 */
	public String getNombrePregunta(int idPregunta) {
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT pregunta FROM pregunta WHERE idPregunta="+idPregunta+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			
			while(rs.next()){
				nombrePregunta=rs.getString("pregunta");
			}
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return nombrePregunta;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir la puntuacion que ha 
	 * obtenido un usuario en una evaluacion
	 * @param idEvaluacion, idenficador de la evaluacion realizada
	 * @param idUsuario, identificador del usuario que ha realizado la evaluacion
	 * @return int que es la puntuacion obtenida por el usuario en esa evaluacion
	 */
	public int getPuntuacion(int idEvaluacion, String idUsuario) {
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT puntuacion FROM resultado WHERE idEvaluacion="+idEvaluacion+" and idUsuario='"+idUsuario+"';";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
		
			while(rs.next()){
				puntuacion=rs.getInt("puntuacion");
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return puntuacion;
	}

	/**
	 * Funcion que almacena la puntuacion obtenida
	 * @param puntuacion, int que corresponde a la puntuacion obtenida
	 */
	public void setPuntuacion(int puntuacion) {
		this.puntuacion = puntuacion;
	}

	/**
	 * Funcion que se conecta a la base de datos para conocer la referencia de una pregunta
	 * @param idPregunta, identificador de la pregunta 
	 * @return int que sera la referencia de esa pregunta
	 */
	public int getReferencia(int idPregunta) {
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT referencia FROM pregunta WHERE idPregunta="+idPregunta+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			
			while(rs.next()){
				referencia=rs.getInt("referencia");
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return referencia;
	}

	/**
	 * Funcion que almacena la referencia de una pregunta
	 * @param referencia,int que es la referencia que tiene una pregunta
	 */
	public void setReferencia(int referencia) {
		this.referencia = referencia;
	}

	/**
	 * Funcion para almacenar las referencias de los errores de una pregunta
	 * @param referenciasError, vector de enteros que almacena las referencias de los errores
	 */
	public void setReferenciasError(int[] referenciasError){
		this.referenciasError=referenciasError;
	}
	
	/**
	 * Funcion que proporciona las referencias de los errores
	 * @return vector de enteros que almacena las referencias de los errores cometidos
	 */
	public int[] getReferenciasError(){
		return referenciasError;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir la primera opcion de la
	 * pregunta 
	 * @param idPregunta, identificador de la pregunta
	 * @return String que corresponde a la primera opcion de la pregunta seleccionada
	 */
	public String getOpcion1 (int idPregunta){
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT opcion1 FROM pregunta WHERE idPregunta="+idPregunta+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
		
			while(rs.next()){
				opcion1=rs.getString("opcion1");
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
			
		return opcion1;	
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir la segunda opcion de la
	 * pregunta 
	 * @param idPregunta, identificador de la pregunta
	 * @return String que corresponde a la segunda opcion de la pregunta seleccionada
	 */
	public String getOpcion2(int idPregunta){
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT opcion2 FROM pregunta WHERE idPregunta="+idPregunta+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
		
			while(rs.next()){
				opcion2=rs.getString("opcion2");
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return opcion2;	
	}

	/**
	 * Funcion que se conecta a la base de datos para conseguir la tercera opcion de la
	 * pregunta 
	 * @param idPregunta, identificador de la pregunta
	 * @return String que corresponde a la tercera opcion de la pregunta seleccionada
	 */
	public String getOpcion3 (int idPregunta){
	
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
		
			String consulta="SELECT opcion3 FROM pregunta WHERE idPregunta="+idPregunta+";";
			ResultSet rs=st.executeQuery(consulta);
		
			rs.beforeFirst();
	
			while(rs.next()){
				opcion3=rs.getString("opcion3");
			}
		
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
		}
	
		return opcion3;	
	}

	/**
	 * Funcion que almacena los errores
	 * @param errores, vector de enteros que indica las preguntas donde se ha cometido
	 * error
	 */
	public void setErrores(int[] errores) {
		this.errores = errores;
	}
	
	/**
	 * Funcion que proporciona los errores
	 * @return vector de enteros que indica las preguntas donde se ha cometido error
	 */
	public int[] getErrores(){
		return errores;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada en la tabla
	 * de resultados despues de que el usuario realice una evaluacion que nunca haya realizado
	 * @param idUsuario, identificador del usuario que ha realizado la evaluacion
	 * @param intentos, numero de veces que ha realizado esta evaluacion, sera siempre 1.
	 * @param puntuacion, calificacion obtenida en la evaluacion realizada
	 * @param idEvaluacion, identificador de la evaluacion realizada
	 */
	public void setTablaResultado(String idUsuario, int intentos, int puntuacion, int idEvaluacion){
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="INSERT INTO resultado (idUsuario, intentos, puntuacion, idEvaluacion) VALUES ('"+idUsuario+"',"+intentos+","+puntuacion+","+idEvaluacion+");";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
				
	}

	/**
	 * Funcion que se conecta a la base de datos para comprobar si un usuario ha realizado 
	 * o no una determinada evaluacion
	 * @param idEvaluacion, identificador de la evaluacion realizada
	 * @param idUsuario, identificador del usuario que ha realizado la evaluacion
	 * @return boolean que indica si la evaluacion ha sido realizada o no, sus valores seran
	 * true o false.
	 */
	public boolean isRealizada(int idEvaluacion, String idUsuario){
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
		
			String consulta="SELECT * FROM resultado WHERE idEvaluacion="+idEvaluacion+" and idUsuario='"+idUsuario+"';";
			ResultSet rs=st.executeQuery(consulta);
		
			rs.beforeFirst();
	
			if(rs.next()){
				realizada=true;
			}
			con.close();
			con=null;
		
		}catch (SQLException e) {
			e.printStackTrace();
		}
	
		return realizada;	
	}
	
	/**
	 * Funcion que se conecta a la base de datos para actualizar una entrada en la tabla de 
	 * resultados de un usuario, se ejecutara cuando un usuario repita una evaluacion
	 * @param idUsuario, identificador del usuario que realiza la evaluacion
	 * @param intentos, numero de veces que se ha repetido la evaluacion
	 * @param puntuacion, calificacion obtenida la ultima vez que se ha realizado la evaluacion
	 * @param idEvaluacion, identificador de la evaluacion realizada
	 */
	public void actualizarResultado(String idUsuario, int intentos, int puntuacion, int idEvaluacion){
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="UPDATE resultado SET intentos="+intentos+" , puntuacion="+puntuacion+" WHERE idEvaluacion="+idEvaluacion+" and idUsuario='"+idUsuario+"';";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
				
	}

	/**
	 * Funcion que se conecta a la base de datos para conocer el numero de evaluaciones 
	 * que ha realizado un usuario 
	 * @param idUsuario, identificador del usuario
	 * @return int que corresponde al numero de evaluaciones que ha realizado el usuario
	 */
	public int getNumeroResultados(String idUsuario){
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
		
			String consulta="SELECT idResultado FROM resultado WHERE idUsuario='"+idUsuario+"';";
			ResultSet rs=st.executeQuery(consulta);
		
			rs.beforeFirst();
	
			if(rs.next()){
				numeroResultados++;
			}
		
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
		}
		
		return numeroResultados;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el identificador de 
	 * los resultados que ha obtenido un usuario
	 * @param idUsuario, identificador del usuario
	 * @return vector de enteros que contiene los identificadores de los resultados obtenidos
	 * por el usuario
	 */
	public int[] getIdsResultados(String idUsuario) {
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
			
			String consulta="SELECT idResultado FROM resultado WHERE idUsuario='"+idUsuario+"';";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			
			int i=0;
			
			while(rs.next()){
				idsResultados[i]=rs.getInt("idResultado");
				i++;
			}
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return idsResultados;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conocer el identificador de la evaluacion
	 * que ha realizado un usuario y que tiene un determinado identificador de resultado
	 * @param idResultado, identificador de resultado
	 * @param idUsuario, identificador de usuario
	 * @return int que corresponde con el identificador de la evaluacion 
	 */
	public int getIdEvaluacionUsuario(int idResultado, String idUsuario){
		
		if(con==null){
			try{
				Class.forName("org.gjt.mm.mysql.Driver");
			}catch(Exception e){
				System.out.println("No se ha encontrado el driver JDBC");
			}
		}
				
		try {
			
			con=DriverManager.getConnection(url);
			Statement st=con.createStatement();
		
			String consulta="SELECT idEvaluacion FROM resultado WHERE idResultado="+idResultado+" and idUsuario='"+idUsuario+"';";
			ResultSet rs=st.executeQuery(consulta);
		
			rs.beforeFirst();
	
			if(rs.next()){
				idEvaluacion=rs.getInt("idEvaluacion");
			}
		
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
		}
		
		return idEvaluacion;
	}


}
