package educacion;

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


public class EventoEstrategiaBean {

	private String nombre;
	private String nombres[]=new String[20];
	private String definicion;
	private int idEstrategia;
	private int idEvento;
	private int numeroEventos;
	private Connection con;
	private String uRL;
	private String url = "jdbc:mysql://localhost:3306/formacionprofesorado?user=root&password=lafuisek";
	
	/**
	 * Funcion que pone la url adecuada para la conexion a la base de datos
	 */
	public EventoEstrategiaBean() {}
	
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero de eventos almacenados
	 * que tienen relacion con la estrategia seleccionada
	 * @param idEstrategia, identificador de la teoria relacionada con el evento
	 * @return int que corresponde al numero de eventos que estan relacionados con la estrategia
	 */
	public int numeroEventos(int idEstrategia){
		
		numeroEventos=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 idEvento FROM evento WHERE idEstrategia="+idEstrategia+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numeroEventos++;
			}
			
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numeroEventos;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el nombre del evento
	 * @param idEvento, identificador del evento del que queremos conseguir el nombre
	 * @return String que sera el nombre del evento
	 */
	public String getNombre(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="SELECT nombre FROM evento WHERE idEvento="+idEvento+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				nombre=rs.getString("nombre");
			}
			con.close();
			con=null;
				
		}catch(SQLException e){System.err.println();}
			
		return nombre;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir los nombres de los eventos
	 * que tienen relacion con una determinada estrategia
	 * @param idTeoria, identificador de la estrategia
	 * @return vector de String que contiene el nombre de los eventos
	 */
	public String[] getNombresIds(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="SELECT nombre, idEvento FROM evento WHERE idEstrategia="+idEstrategia+";";
			ResultSet rs=st.executeQuery(consulta);
				
			rs.beforeFirst();
			int i=0;
			while(rs.next()){
				nombres[i]=rs.getString("nombre");
				i++;
				int id=rs.getInt("idEvento");
				nombres[i]=String.valueOf(id);
				i++;
			}
			con.close();
			con=null;
				
		}catch(SQLException e){System.err.println();}
			
		return nombres;
	}

	/**
	 * Funcion que almacena el nombre del evento
	 * @param nombre, String que corresponde al nombre del evento
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir la descripcion de un evento
	 * @param idEvento, identificador del evento del que queremos conseguir su descripcion
	 * @return String que sera la descripcion del evento
	 */
	public String getDefinicion(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="SELECT descripcion FROM evento WHERE idEvento ="+idEvento+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				definicion=rs.getString("descripcion");
			}
			con.close();
			con=null;
				
		}catch(SQLException e){System.err.println();}
			
		return definicion;
	}
	
	/**
	 * Funcion que almacena la descripcion de un evento
	 * @param definicion, String que corresponde a la descripcion de un evento
	 */
	public void setDefinicion(String definicion) {
		this.definicion = definicion;
	}

	/**
	 * Funcinon que se conecta a la base de datos para conseguir la url de un determinado
	 * evento
	 * @param idEvento, identificador del evento del que queremos conocer la url
	 * @return String que corresponde a la url del evento
	 */
	public String getUrl(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="SELECT url FROM evento WHERE idEvento ="+idEvento+";";
				ResultSet rs=st.executeQuery(consulta);
				
				rs.beforeFirst();
				while(rs.next()){
					uRL=rs.getString("url");
				}
				con.close();
				con=null;
				
		}catch(SQLException e){System.err.println();}
			
		return uRL;
	}

	/**
	 * Funcion que almacena la url del evento
	 * @param url, String que se corresponde con la url de determinado evento
	 */
	public void setUrl(String url) {
		this.uRL = url;
	}
	
	/**
	 * Funcion que almacena el identificador de una estrategia
	 * @param idEstrategia, identificador de la estrategia
	 */
	public void setIdEstrategia(int idEstrategia){
		this.idEstrategia=idEstrategia;
	}
	
	/**
	 * Funcion que almacena el identificador de un evento determinado
	 * @param idEvento, identificador del evento
	 */
	public void setIdEvento(int idEvento){
		this.idEvento=idEvento;
	}
	
	/**
	 * Funcion que devuelve el identificador de un evento 
	 * @return int que sera el identificador del evento
	 */
	public int conseguirIdEvento(){
		return idEvento;
	}
}

