package educacion;

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

public class EstrategiaBean {

	private String nombre;
	private String[] nombres=new String[20];
	private String definicion;
	private int idEstrategia;
	private int numeroEstrategias;
	private Connection con=null;
	private String uRL;
	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
	 */
	public EstrategiaBean() {}
	
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el numero de estrategias almacenadas
	 * @return int, que se corresponde al numero de estrategias existentes en la base de datos
	 */
	public int numeroEstrategias(){
		
		numeroEstrategias=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()){
				numeroEstrategias++;
			}
			con.close();
			con=null;
			
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numeroEstrategias;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir el nombre de la estrategia 
	 * @param idEstrategia, int que corresponde con el identificador de la estrategia seleccionada
	 * @return String que sera el nombre de la estrategia seleccionada
	 */
	public String getNombre(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 FROM estrategia WHERE idEstrategia ="+idEstrategia+";";
			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 consultar el nombre e identificador
	 * de las estrategias existentes
	 * @return
	 */
	
	public String[] getNombresIds() {
		
		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,idEstrategia FROM estrategia";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			int i=0;
			int id;
			while(rs.next()){
				nombres[i]=rs.getString("nombre");
				i++;
				id=rs.getInt("idEstrategia");
				nombres[i]=String.valueOf(id);
				i++;
			}
			con.close();
			con=null;
				
		}catch(SQLException e){System.err.println();}
			
		return nombres;
	}
	

	/**
	 * Funcion que almacena el nombre de la estrategia seleccionada
	 * @param nombre, String que corresponde al nombre de la estrategia seleccionada
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir la definicion de la estrategia seleccionada
	 * @param idEstrategia, int que corresponde al identificador de la estrategia seleccionada
	 * @return String que sera la definicion de la estrategia seleccionada
	 */
	public String getDefinicion(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 descripcion FROM estrategia WHERE idEstrategia ="+idEstrategia+";";
			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 definicion de la estrategia seleccionada
	 * @param definicion, String que corresponde a la definicion de la estrategia
	 */
	public void setDefinicion(String definicion) {
		this.definicion = definicion;
	}

	/**
	 * Funcion que se conecta a la base de datos para conseguir la url de la estrategia seleccionada
	 * @param idEstrategia, int que corresponde al identificador de la estrategia seleccionada
	 * @return String que corresponde a la url de la estrategia seleccionada
	 */
	public String getUrl(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 url FROM estrategia WHERE idEstrategia ="+idEstrategia+";";
			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 de la estrategia
	 * @param url, String que corresponde a la url de la estrategia seleccionada
	 */
	public void setUrl(String url) {
		this.uRL = url;
	}

	/**
	 * Funcion que almacena el identificador de la estrategia
	 * @param idEstrategia, int que corresponde al identificador de la estrategia
	 */
	public void setIdEstrategia(int idEstrategia) {
		this.idEstrategia = idEstrategia;
	}
	/**
	 * Funcion que devuelve el identificador de la estrategia
	 * @return int, que sera el identificaor de la estrategia
	 */
	public int conseguirIdEstrategia(){
		return idEstrategia;
	}
}

