package educacion;

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

public class TacticaBean {

	private String nombre;
	private String[] nombres=new String[9];
	private String definicion;
	private int idTactica;
	private int idEvento;
	private int numeroTacticas;
	private Connection con;
	private String uRL;
	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 TacticaBean() {}
	
	/**
	 * Funcion que se conecta a la base de datos para devolver el numero de tacticas que estan
	 * relacionadas con un determinado evento
	 * @param idEvento, identificador del evento con el que estan relacionadas las tacticas
	 * @return int, que corresponde el numero de tacticas que pertenecen a ese evento
	 */
	public int numeroTacticas(int idEvento){ 
		
		numeroTacticas=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 WHERE idEvento="+idEvento+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				numeroTacticas++;
			}
			con.close();
			con=null;
		}catch (SQLException e) {
			e.printStackTrace();
	    }
		
		return numeroTacticas;
	}
	
	/**
	 * Funcion que se conecta a la base de datos para devolver el nombre de la tactica
	 * @param idTactica, identificador de la tactica de la que se pide el nombre
	 * @return String, que corresponde al nombre de la tactica seleccionada
	 */
	public String getNombre(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="SELECT nombre FROM tactica WHERE idTactica ="+idTactica+";";
			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 devolver los nombres de las tacticas
	 * relacionadas con un evento concreto
	 * @param idEvento, identificador del evento con el que estan relacionadas las tacticas
	 * @return vector de String que contiene el nombre de las tacticas relacionadas con ese
	 * evento
	 */
	public String[] getNombresIds(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,idTactica FROM tactica WHERE idEvento="+idEvento+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			int i=0;
			int id;
			while(rs.next()){
				nombres[i]=rs.getString("nombre");
				i++;
				id=rs.getInt("idTactica");
				nombres[i]=String.valueOf(id);
				i++;
			}
			con.close();
			con=null;
				
		}catch(SQLException e){System.err.println();}
			
		return nombres;
	}

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

	/**
	 * Funcion que se conecta a la base de datos y devuelve la url de la tactica
	 * especificada
	 * @param idTactica, identificador de la tactica
	 * @return String que corresponde a la url
	 */
	public String getUrl(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="SELECT url FROM tactica WHERE idTactica ="+idTactica+";";
			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 el identificador de la tactica
	 * @param idTactica identificador de la tactica
	 */
	public void setIdTactica(int idTactica){
		this.idTactica=idTactica;
	}
	
	/**
	 * Funcion que almacena el identificador del evento
	 * @param idEvento, identificador del evento
	 */
	public void setIdEvento(int idEvento){
		this.idEvento=idEvento;
	}
	
	/**
	 * Funcion que proporciona el identificador de la tactica
	 * @return int que corresponde al identificador de la tactica
	 */
	public int conseguirIdTactica(){
		return idTactica;
	}
	
	/**
	 * Funcion que almacena la url de la tactica
	 * @param url, url de la tactica
	 */
	public void setUrl(String url) {
		this.uRL = url;
	}
}