package educacion;

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

public class SubirBean {

	private Connection con;
	private String[] listado= new String[100];
	private String nombreArchivo;
	private int id, id2;
	private int numeroElegido;
	private int numero;
	private String ruta;
	private String url = "jdbc:mysql://localhost:3306/formacionprofesorado?user=root&password=lafuisek";

	
	/**
	 * Funcion que proporciona la url para la conexion a la base de datos
	 */
	public SubirBean() {}
	
	/**
	 * Funcion que almacena el numero elegido
	 * @param numeroElegido, int que se corresponde con el numero elegido por el usuario
	 */
	public void setNumeroElegido(int numeroElegido){
		this.numeroElegido=numeroElegido;
	}
	
	/**
	 * Funcion que devuelve el numero elegido 
	 * @return int que corresponde al numero elegido
	 */
	public int getNumeroElegido(){
		return numeroElegido;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla teoria
	 * @param nombre, nombre de la teoria
	 * @param descripcion, descripcion de la teoria
	 * @param url, url de la teoria
	 */
	public void subirTeoria(String nombre, String descripcion, String url){
		
		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 teoria (nombre, descripcion, url) VALUES ('"+nombre+"','"+descripcion+"','"+url+"');";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}

	/**
	 * Funcion que se conecta la a base de datos para obtener el identificador y el nombre
	 * de todas las teorias almacenadas
	 * @return un vector de String que contiene el identificador y nombre de cada teoria
	 */
	public String[] listarTeorias(){
		
		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 idTeoria, nombre FROM teoria";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				id = rs.getInt("idTeoria"); 
				listado[i]=String.valueOf(id);
				i++;
				listado[i]=rs.getString("nombre");
				i++;
			}
			con.close();
			con=null;
			}catch(SQLException e){
				e.printStackTrace();
			}
		
		return listado;
	}
		
	/**
	 * Funcion que se conecta a la base de datos para eliminar la teoria indicada 
	 * @param idTeoria, identificador de la teoria que se quiere eliminar
	 */
	public void eliminarTeoria(int idTeoria){
		
		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="DELETE FROM teoria WHERE idTeoria="+idTeoria+";";
			st.execute(consulta);
			
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero total de teorias
	 * que hay almacenadas
	 * @return int que corresponde al numero de teorias que hay almacenadas
	 */
	public int numeroTeorias(){
		
		numero=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 teoria;";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numero++;
			}
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numero;
	}

	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla evento, se utiliza para aquellos eventos que no tienen una estrategia
	 * relacionada
	 * @param nombre, nombre del evento
	 * @param descripcion, descripcion del evento
	 * @param idTeoria, identificador de la teoria con la que esta relacionada
	 * @param url, url del evento
	 */
	public void subirEventoTeoria(String nombre, String descripcion, int idTeoria, String url){
		
		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 evento (nombre, descripcion, idTeoria, url) VALUES ('"+nombre+"','"+descripcion+"',"+idTeoria+",'"+url+"');";
			st.execute(consulta);
			
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}

	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla evento, se utiliza para aquellos eventos que no estan relacionados
	 * con ninguna teoria solo con una estrategia
	 * @param nombre, nombre del evento
	 * @param descripcion, descripcion del evento
	 * @param idEstrategia, identificador de la estrategia con la que esta relacionado el evento
	 * @param url, url del evento
	 */
	public void subirEventoEstrategia(String nombre, String descripcion, int idEstrategia, String url){
		
		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 evento (nombre, descripcion, idEstrategia, url) VALUES ('"+nombre+"','"+descripcion+"',"+idEstrategia+",'"+url+"');";
			st.execute(consulta);
			
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla evento, se utiliza para los eventos que estan relacionados tanto
	 * con una teoria como con una estrastegia 
	 * @param nombre, nombre del evento
	 * @param descripcion, descripcion del evento
	 * @param idTeoria, identificador de la teoria con la que esta relacionada
	 * @param idEstrategia, identificador de la estrategia con la que esta relacionada
	 * @param url, url del evento
	 */
	public void subirEvento(String nombre, String descripcion, int idTeoria, int idEstrategia, String url){
		
		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 evento (nombre, descripcion, idTeoria, idEstrategia, url) VALUES ('"+nombre+"','"+descripcion+"',"+idTeoria+","+idEstrategia+",'"+url+"');";
			st.execute(consulta);
			
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta la a base de datos para obtener el identificador y el nombre
	 * de todos los eventos almacenados
	 * @return un vector de String que contiene el identificador y nombre de cada evento
	 */
	public String[] listarEventos(){
		
		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 idEvento, nombre FROM evento";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				id = rs.getInt("idEvento"); 
				listado[i]=String.valueOf(id);
				i++;
				listado[i]=rs.getString("nombre");
				i++;
			}
			con.close();
			con=null;
			}catch(SQLException e){
				e.printStackTrace();
			}
		
		return listado;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para eliminar el evento indicado 
	 * @param idEvento, identificador del evento que se quiere eliminar
	 */
	public void eliminarEvento(int idEvento){
		
		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="DELETE FROM evento WHERE idEvento="+idEvento+";";
			st.execute(consulta);
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero total de eventos
	 * que hay almacenadas
	 * @return int que corresponde al numero de eventos que hay almacenadas
	 */
	public int numeroEventos(){
		
		numero=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 evento;";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numero++;
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numero;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla tactica
	 * @param nombre, nombre de la tactica
	 * @param descripcion, descripcion de la tactica
	 * @param idEvento, identificador del evento con el que esta relacionada la tactica
	 * @param url, url de la tactica
	 */
	public void subirTactica(String nombre, String descripcion, int idEvento, String url){
		
		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 tactica (nombre, descripcion, idEvento, url) VALUES ('"+nombre+"','"+descripcion+"',"+idEvento+",'"+url+"');";
			st.execute(consulta);
			
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}

	/**
	 * Funcion que se conecta la a base de datos para obtener el identificador y el nombre
	 * de todas las tacticas almacenadas
	 * @return un vector de String que contiene el identificador y nombre de cada tactica
	 */
	public String[] listarTacticas(){
		
		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 idTactica, nombre FROM tactica";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				id = rs.getInt("idTactica"); 
				listado[i]=String.valueOf(id);
				i++;
				listado[i]=rs.getString("nombre");
				i++;
			}
			con.close();
			con=null;
			}catch(SQLException e){
				e.printStackTrace();
			}
		
		return listado;
	}
		
	/**
	 * Funcion que se conecta a la base de datos para eliminar la tactica indicada 
	 * @param idTactica, identificador de la tactica que se quiere eliminar
	 */
	public void eliminarTactica(int idTactica){
		
		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="DELETE FROM tactica WHERE idTactica="+idTactica+";";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero total de tacticas
	 * que hay almacenadas
	 * @return int que corresponde al numero de tacticas que hay almacenadas
	 */
	public int numeroTacticas(){
		
		numero=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 tactica;";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numero++;
			}
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numero;
	}

	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla estrategia
	 * @param nombre, nombre de la estrategia
	 * @param descripcion, descripcion de la estrategia
	 * @param url, url de la estrategia
	 */
	public void subirEstrategia(String nombre, String descripcion, String url){
		
		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 estrategia (nombre, descripcion, url) VALUES ('"+nombre+"','"+descripcion+"','"+url+"');";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}

	/**
	 * Funcion que se conecta la a base de datos para obtener el identificador y el nombre
	 * de todas las estrategias almacenadas
	 * @return un vector de String que contiene el identificador y nombre de cada estrategia
	 */
	public String[] listarEstrategias(){
		
		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 idEstrategia, nombre FROM estrategia";
				ResultSet rs= st.executeQuery(consulta);
				rs.beforeFirst();
				int i=0;
				while(rs.next()){
					id = rs.getInt("idEstrategia"); 
					listado[i]=String.valueOf(id);
					i++;
					listado[i]=rs.getString("nombre");
					i++;
				}
				con.close();
				con=null;
			}catch(SQLException e){
				e.printStackTrace();
			}
		
		return listado;
	}
		
	/**
	 * Funcion que se conecta a la base de datos para eliminar la estrategia indicada 
	 * @param idEstrategia, identificador de la estrategia que se quiere eliminar
	 */
	public void eliminarEstrategia(int idEstrategia){
		
		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="DELETE FROM estrategia WHERE idEstrategia="+idEstrategia+";";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero total de estrategias
	 * que hay almacenadas
	 * @return int que corresponde al numero de estrategias que hay almacenadas
	 */
	public int numeroEstrategias(){
		
		numero=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 estrategia;";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numero++;
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numero;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla ejemplo
	 * @param descripcion, descripcion del ejemplo
	 * @param idTactica, identificador de la tactica con la que esta relacionado el ejemplo
	 * @param url, url del ejemplo
	 */
	public void subirEjemplo(String descripcion, int idTactica, String url){
		
		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 ejemplo (descripcion, idTactica, url) VALUES ('"+descripcion+"',"+idTactica+",'"+url+"');";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}

	/**
	 * Funcion que se conecta la a base de datos para obtener el identificador y la descripcion
	 * de los ejemplos almacenados
	 * @return un vector de String que contiene el identificador y descripcion de cada ejemplo
	 */
	public String[] listarEjemplos(){
		
		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 idEjemplo, descripcion FROM ejemplo";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				id = rs.getInt("idEjemplo"); 
				listado[i]=String.valueOf(id);
				i++;
				listado[i]=rs.getString("descripcion");
				i++;
			}
			con.close();
			con=null;
			}catch(SQLException e){
				e.printStackTrace();
			}
		
		return listado;
	}
		
	/**
	 * Funcion que se conecta a la base de datos para eliminar el ejemplo indicado 
	 * @param idEjemplo, identificador del ejemplo que se quiere eliminar
	 */
	public void eliminarEjemplo(int idEjemplo){
		
		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="DELETE FROM ejemplo WHERE idEjemplo="+idEjemplo+";";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero total de ejemplos
	 * que hay almacenados
	 * @return int que corresponde al numero de ejemplos que hay almacenadas
	 */
	public int numeroEjemplos(){
		
		numero=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 ejemplo;";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numero++;
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numero;
	}

	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla pregunta
	 * @param pregunta, nombr de la pregunta
	 * @param opcion1, opcion primera de respuesta
	 * @param opcion2, opcion segunda de respuesta
	 * @param opcion3, opcion tercera de respuesta
	 * @param correcta, opcion correcta
	 * @param referencia, referencia de la pregunta (para saber con que parte esta relacionada)
	 */
	public void subirPregunta(String pregunta, String opcion1, String opcion2, String opcion3, int correcta, int referencia){
		
		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 pregunta (pregunta, opcion1, opcion2, opcion3, correcta, referencia) VALUES ('"+pregunta+"','"+opcion1+"','"+opcion2+"','"+opcion3+"',"+correcta+","+referencia+");";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}

	/**
	 * Funcion que se conecta la a base de datos para obtener el identificador y el nombre
	 * de todas las pregunta almacenadas
	 * @return un vector de String que contiene el identificador y nombre de cada pregunta
	 */
	public String[] listarPreguntas(){
		
		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, pregunta FROM pregunta";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				id = rs.getInt("idPregunta"); 
				listado[i]=String.valueOf(id);
				i++;
				listado[i]=rs.getString("pregunta");
				i++;
			}
			con.close();
			con=null;
		}catch(SQLException e){
			e.printStackTrace();
		}
		
		return listado;
	}
		
	/**
	 * Funcion que se conecta a la base de datos para eliminar la pregunta indicada 
	 * @param idPregunta, identificador de la pregunta que se quiere eliminar
	 */
	public void eliminarPregunta(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="DELETE FROM pregunta WHERE idPregunta="+idPregunta+";";
			st.execute(consulta);
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero total de preguntas
	 * que hay almacenadas
	 * @return int que corresponde al numero de preguntas que hay almacenadas
	 */
	public int numeroPreguntas(){
		
		numero=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 pregunta;";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numero++;
			}
			
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numero;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla eva_preg, para introducir una nueva relacion entre una pregunta
	 * y una evaluacion
	 * @param idEvaluacion, identificador de la evaluacion
	 * @param idPregunta, identificador de la pregunta
	 */
	public void relacionarPregEva (int idEvaluacion, 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="INSERT INTO eva_preg (idEvaluacion, idPregunta) VALUES ("+idEvaluacion+","+idPregunta+");";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
	}
	
	/**
	 * Funcion que se conecta a la base de datos para eliminar la relacion entre la 
	 * evaluacion y la pregunta indicada 
	 * @param idPregunta, identificador de la pregunta 
	 * @param idEvaluacion, identificador de la evaluacion 
	 */
	public void eliminarEvaPreg(int idPregunta, 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="DELETE FROM eva_preg WHERE idPregunta="+idPregunta+" and idEvaluacion="+idEvaluacion+";";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta la a base de datos para obtener el identificador y el nombre
	 * de todas las evaluaciones almacenadas
	 * @return un vector de String que contiene el identificador y nombre de cada evaluacion
	 */
	public String[] listarEvaluaciones(){
		
		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, nombre FROM evaluacion";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				id = rs.getInt("idEvaluacion"); 
				listado[i]=String.valueOf(id);
				i++;
				listado[i]=rs.getString("nombre");
				i++;
			}
			con.close();
			con=null;
		}catch(SQLException e){
			e.printStackTrace();
		}
		
		return listado;
	}
	
/**
 * Funcion que se conecta a la base de datos para conseguir el numero total de evaluaciones
 * que hay almacenadas
 * @return int que corresponde al numero de evaluaciones que hay almacenadas
 */
	public int numeroEvaluaciones(){
	
	numero=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()){
			numero++;
		}
		con.close();
		con=null;
	}catch (SQLException e) {
		e.printStackTrace();
    }
	
	return numero;
}
	
	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla buscador
	 * @param palabra, palabra que se aņade al glosario de terminos
	 * @param significado, definicion de la palabra
	 */
	public void subirPalabra(String palabra, String significado){
		
		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 buscador (palabra,significado) VALUES ('"+palabra+"','"+significado+"');";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}

	/**
	 * Funcion que se conecta la a base de datos para obtener el identificador y el nombre
	 * de todas las palabras almacenadas
	 * @return un vector de String que contiene el identificador y nombre de cada palabra
	 */
	public String[] listarPalabras(){
		
		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 idPalabra, palabra FROM buscador";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				id = rs.getInt("idPalabra"); 
				listado[i]=String.valueOf(id);
				i++;
				listado[i]=rs.getString("palabra");
				i++;
			}
			con.close();
			con=null;
			
		}catch(SQLException e){
			e.printStackTrace();
		}
		
		return listado;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para eliminar la palabra indicada 
	 * @param idPalabra, identificador de la palabra que se quiere eliminar
	 */
	public void eliminarPalabra(int idPalabra){
		
		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="DELETE FROM buscador WHERE idPalabra="+idPalabra+";";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero total de palabras
	 * que hay almacenadas
	 * @return int que corresponde al numero de palabras que hay almacenadas
	 */
	public int numeroPalabras(){
		
		numero=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 buscador;";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numero++;
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numero;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla archivo
	 * @param nombre, nombre del archivo que se va aņadir
	 * @param ruta, ruta del archivo
	 */
	public void subirArchivo(String nombre, String ruta){
	
		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 archivo (nombre, ruta) VALUES ('"+nombre+"', '"+ruta+"');";
			st.execute(consulta);
		
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
		}
	}

	

	/**
	 * Funcion que se conecta la a base de datos para obtener el identificador y el nombre
	 * de todos los archivos almacenados
	 * @return un vector de String que contiene el identificador y nombre de cada archivo
	 */
	public String[] listarArchivos(){
		
		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 archivo";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				listado[i]=rs.getString("nombre");
				i++;
			}
			con.close();
			con=null;
			
		}catch(SQLException e){
			e.printStackTrace();
		}
		
		return listado;
	}
		
	/**
	 * Funcion que se conecta la a base de datos para obtener el identificador y el nombre
	 * de todos los archivos almacenados
	 * @return un vector de String que contiene el identificador y nombre de cada archivo
	 */
	public String[] listarArchivosIdRutaNombre(){
		
		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 idArchivo, ruta, nombre FROM archivo";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){			
				id = rs.getInt("idArchivo"); 
				listado[i]=String.valueOf(id);
				i++;
				listado[i]=rs.getString("ruta");
				i++;
				listado[i]=rs.getString("nombre");
				i++;
			}
			con.close();
			con=null;
		}catch(SQLException e){
			e.printStackTrace();
		}
		
		return listado;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para eliminar el archivo indicado 
	 * @param idArchivo, identificador del archivo que se quiere eliminar
	 */
	public void eliminarArchivo(int idArchivo){
		
		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="DELETE FROM archivo WHERE idArchivo="+idArchivo+";";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero total de archivos
	 * que hay almacenados
	 * @return int que corresponde al numero de archivos que hay almacenados
	 */
	public int numeroArchivos(){
		
		numero=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 archivo;";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numero++;
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numero;
	}
	
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero total de relaciones
	 * de preguntas y evaluaciones que hay almacenadas
	 * @return int que corresponde al numero de relaciones
	 */
	public int numeroRelaciones(){
		
		numero=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;";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numero++;
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numero;
	}

	/**
	 * Funcion que se conecta la a base de datos para obtener los identificadores 
	 * de las evaluaciones y de las preguntas que estan relacionadas  
	 * @return un vector de String que contiene los identificadores de las evaluaciones
	 * y preguntas relacionadas
	 */
	public String[] listarRelaciones(){
		
		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, idPregunta FROM eva_preg";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				id = rs.getInt("idEvaluacion"); 
				listado[i]=String.valueOf(id);
				i++;
				id2 = rs.getInt("idPregunta"); 
				listado[i]=String.valueOf(id2);
				i++;
			}
			con.close();
			con=null;
		}catch(SQLException e){
			e.printStackTrace();
		}
		
		return listado;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla evaluacion
	 * @param nombre, nombre de la nueva evaluacion
	 */
	public void subirEvaluacion(String nombre){
		
		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 evaluacion (nombre) VALUES ('"+nombre+"');";
			st.execute(consulta);
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
		
	/**
	 * Funcion que se conecta a la base de datos para eliminar la evaluacion indicada 
	 * @param idTeoria, identificador de la evaluacion que se quiere eliminar
	 */
	public void eliminarEvaluacion(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="DELETE FROM evaluacion WHERE idEvaluacion="+idEvaluacion+";";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta a la base de datos para devolver el nombre del archivo
	 * cuyo identificador es igual al que se le pasa
	 * @param int que corresponde al identificador del archivo
	 * @return String que corresponde al nombre del archivo
	 */
	public String getNombreArchivo(int id){
		
		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 archivo WHERE idArchivo="+id+";";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				nombreArchivo = rs.getString("nombre");
				i++;
			}
			con.close();
			con=null;
		}catch(SQLException e){
			e.printStackTrace();
		}
		return nombreArchivo;
	}
	
	/**
	 * Funcion que devuelve el nombre del archivo
	 * @return String que corresponde al nombre del archivo
	 */
	public String getNombreArchivo(){
		return nombreArchivo;
	}
	
	/**
	 * Funcion que almacena el nombre del archivo
	 * @param nombre, String que se corresponde al nombre del archivo
	 */
	public void setNombreArchivo(String nombre){
		nombreArchivo=nombre;
	}
	
	/**
	 * Funcion que almacena el id del archivo
	 * @param nombre, int que se corresponde con el id del archivo
	 */
	public void setIdArchivo(int id){
		this.id=id;
	}
	
	/**
	 * Funcion que almacena la ruta de un archivo
	 * @param ruta, String que corresponde a la ruta de un archivo
	 */
	public void setRuta(String ruta){
		this.ruta=ruta;
	}
	
	/**
	 * Funcion que devuelve la ruta de un archivo
	 * @return String, que es la ruta del archivo
	 */
	public String getRuta(){
		return ruta;
	}
	
	/**
	 * Funcion que se conecta a la base de datos y devuelve la ruta del archivo
	 * que se pasa como argumento
	 * @param int con el identificador del archivo.
	 * @return String, que es la ruta del archivo
	 */
	public String getRutaArchivo(int idArchivo){
		
		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 ruta FROM archivo WHERE idArchivo="+idArchivo+";";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			while(rs.next()){
				ruta = rs.getString("ruta");
			}
			con.close();
			con=null;
		}catch(SQLException e){
			e.printStackTrace();
		}
		
		return ruta;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para introducir una nueva entrada 
	 * en la tabla enlace
	 * @param nombre, nombre del enlace que se va aņadir
	 * @param enlace, ruta del enlace
	 */
	public void subirEnlace(String nombre, String enlace){
	
		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 enlace (nombre, enlace) VALUES ('"+nombre+"', '"+enlace+"');";
			st.execute(consulta);
		
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
		}
	}

		
	/**
	 * Funcion que se conecta la a base de datos para obtener el identificador, el nombre, y 
	 * el enlace de todos los enlaces almacenados
	 * @return un vector de String que contiene el identificador, nombre y enlace
	 * de cada enlace almacenado
	 */
	public String[] listarEnlaces(){
		
		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 idEnlace, enlace, nombre FROM enlace";
			ResultSet rs= st.executeQuery(consulta);
			rs.beforeFirst();
			int i=0;
			while(rs.next()){			
				id = rs.getInt("idEnlace"); 
				listado[i]=String.valueOf(id);
				i++;
				listado[i]=rs.getString("enlace");
				i++;
				listado[i]=rs.getString("nombre");
				i++;
			}
			con.close();
			con=null;
		}catch(SQLException e){
			e.printStackTrace();
		}
		
		return listado;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para eliminar el enlace indicado 
	 * @param idEnlace, identificador del enlace que se quiere eliminar
	 */
	public void eliminarEnlace(int idEnlace){
		
		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="DELETE FROM enlace WHERE idEnlace="+idEnlace+";";
			st.execute(consulta);
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero total de enlaces
	 * que hay almacenados
	 * @return int que corresponde al numero de enlaces que hay almacenados
	 */
	public int numeroEnlaces(){
		
		numero=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 enlace;";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numero++;
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numero;
	}
}
