package educacion;

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


public class BuscadorBean {

	private String palabra;
	private String[] palabras = new String [100];
	private String definicion;
	private int idPalabra;
	private int numeroPalabras;
	private Connection con=null;
	private String url = "jdbc:mysql://localhost:3306/formacionprofesorado?user=root&password=lafuisek";
	
	public BuscadorBean() {}
	
	/**
	 * Funcion que se conecta a la base de datos para conseguir la definicion de una palabra
	 * @param idPalabra, identificador de la palabra almacenada en la base de datos
	 * @return String que corresponde a la definicion de la palabra seleccionada
	 */
	public String getDefinicion(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="SELECT significado FROM buscador WHERE idPalabra ="+idPalabra+";";
			ResultSet rs=st.executeQuery(consulta);
			
			rs.beforeFirst();
			while(rs.next()){
				definicion=rs.getString("significado");
			}
				
			con.close();
			con=null;
			
		}catch(SQLException e){System.err.println();}
			
		return definicion;
	}

	/**
	 * Recogemos la definicion de la palabra
	 * @param definicion, String que corresponde a la definicion de la palabra
	 */
	public void setDefinicion(String definicion) {
		this.definicion = definicion;
	}

	/**
	 * Funcion que se conecta con la base de datos para conseguir las palabras que estan 
	 * almacenadas
	 * @return vector de String que contiene los nombres de la palabras 
	 */
	public String[] getPalabras() {
		
		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 palabra FROM buscador;";
			ResultSet rs=st.executeQuery(consulta);
			int i = 0;
			rs.beforeFirst();
			while(rs.next()){
				palabras[i]=rs.getString("palabra");
				i++;
			}
			con.close();
			con=null;
				
		}catch(SQLException e){System.err.println();}
		
		
		return palabras;
	}
	
	/**
	 * Funcion que se conecta con la base de datos para conseguir la palabra que tiene 
	 * ese identificador
	 * @param idPalabra, entero que es el identificador de la palabra que queremos mostrar
	 * @return String que contiene la palabras seleccionada 
	 */
	public String getPalabra(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="SELECT palabra FROM buscador WHERE idPalabra="+idPalabra+";";
			ResultSet rs=st.executeQuery(consulta);
		
			rs.beforeFirst();
			while(rs.next()){
				palabra=rs.getString("palabra");
			}
			
			con.close();
			con=null;
			
		}catch(SQLException e){System.err.println();}
		
		return palabra;
	}

	/**
	 * Funcion para recoger el nombre de la palabra
	 * @param palabra, String que es el nombre de la palabra seleccionada
	 */
	public void setPalabra(String palabra) {
		this.palabra = palabra;
	}

	/**
	 * Funcion que se conecta a la base de datos para calcular el numero de palabras 
	 * que hay almacenadas
	 * @return int que corresponde con el numero de palabras almacenadas
	 */
	public int getNumeroPalabras() {

		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 FROM buscador";
				ResultSet rs=st.executeQuery(consulta);
				numeroPalabras=0;
				rs.beforeFirst();
				while(rs.next()){
					numeroPalabras++;
				}
				
				con.close();
				con=null;
				
		}catch(SQLException e){System.err.println();}
		
	return numeroPalabras;
	}

	/**
	 * Funcion para guardar el identificador de la palabra seleccionada
	 * @param idPalabra, int que corresponde al identificador de la palabra seleccionada
	 */
	public void setIdPalabra(int idPalabra) {
		this.idPalabra = idPalabra;
	}

	/**
	 * Funcion que nos devolvera el identificador de la palabra
	 * @return int, que corresponde al identificador de la palabra
	 */
	public int getIdPalabra(){
		return idPalabra;
	}
}
