/*
 * Fichero:     BaseDeDatosProveedores.java
 * Fecha:       20/10/06
 * Autor:       Alvaro Sarmiento Losada
 * Asignatura:  Proyecto Fin de Carrera
 * Descripción: Es una clase para la creación y modificación  de una base 
 * 				de datos denominada "proveedores", en la cual se almacenarán
 * 				los datos relativos a los proveedores de productos para una 
 * 				posterior operación de comercio electrónico entre un cliente 
 * 				interesado en un producto ofertado y el propio proveedor del 
 * 				producto.
 * 
 * Este fichero pertenece al proyecto fin de carrera del autor,
 * consistente en el estudio de JXTA y su aplicación al comercio 
 * electrónico b2b.
 */

package com.pfc.bases;

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


/**
 * Tabla que almacena datos de interés de los proveedores para futuras  transacciones de comercio electrónico
 * @author  Alvaro sarmiento Losada
 */
public class BaseDeDatosProveedores {

	Connection con=null;
	int contador=0;
	
	public BaseDeDatosProveedores() {
		String userName = "root";
		String password = "osito69";
		String url ="jdbc:mysql://localhost/test";
		try{
			Class.forName ("com.mysql.jdbc.Driver").newInstance();
			        	
			con = DriverManager.getConnection(url, userName, password);
			System.out.println ("Conexion con la base de datos establecida");
			if(crearBaseDeDatos())
				System.out.println("Se ha creado la base de  datos");
		}catch (Exception E){
			System.out.println("No se puede conectar con el servidor de la Base de Datos");
		}
	}
	
	
	/** Permite la creación de la tabla
	 * 
	 * @return True si todo fue correcto. Eoc false
	 * @throws SQLException
	 */
	public boolean crearBaseDeDatos() throws SQLException{
	   /*Crea la tabla*/
	   Statement s= con.createStatement();
	   s.executeUpdate ("DROP TABLE IF EXISTS proveedores");
	   s.executeUpdate(
	       "CREATE TABLE proveedores("
	       + "nombre CHAR (40), PRIMARY KEY (nombre),direccion CHAR(40),"
	       + "localidad CHAR(40),provincia CHAR(40),codigopostal CHAR(40),pais CHAR(40))");
	        
	    	
	   return true;
	}
	
	
	/** Devuelve el conector ala base de datos
	 * 
	 * @return El conector deseado
	 */
	public Connection devolverConector(){
		return con;
	}
	
	/** Devuelve el identificador del último elemento registrado
	 * 
	 * @return Identificador del último proveedor registrado
	 */
	public int devolverContador(){
		return contador;
	}
	 
	
	/** Permite registrar a proveedores
	 * 
	 * @param array Lleva los datos a guardar del proveedor
	 * @return El nombre del proveedor
	 */
	public String insertarDatos(String [] array){
		/*Actualiza la tabla*/
		int count;
		System.out.println("Entramos en insertarDatos del Proveedor");	
		String nombre=array[1];
		String direccion=array[3];
		String localidad=array[5];	
		String provincia=array[7];
		String codigopostal=array[9];
		String pais=array[11];
		
		try{
			System.out.println("Ahora en el try");
			PreparedStatement s = con.prepareStatement (
					"INSERT INTO proveedores(nombre,direccion,localidad,provincia,codigopostal,pais)"
					+ "VALUES"
					+ "(?,?,?,?,?,?)");
					
			s.setString(1,nombre);
			s.setString(2,direccion);
			s.setString(3,localidad);
			s.setString(4,provincia);
			s.setString(5,codigopostal);
			s.setString(6,pais);
			count=s.executeUpdate();
			s.close();
			System.out.println(count + " filas que que han sido insertadas");
		}catch(SQLException e){
			e.printStackTrace(System.out);
		}
		return nombre;
	}

	/** Permita la desconexión de la base de datos*/
	public void desconectarseProveedores(){
		/*Desconectarse de la base de datos*/
	
		if(con != null)
		{
			try
			{
				con.close();
				System.out.println("Conexion con la Base de Datos terminada");
			}
			catch(Exception E){}

		}
	}

	
	/** Permite obtener los datos de un determinado proveedor
	 * 
	 * @param id identificador del par, es decir, el proveedor
	 * @return Arreglo con los datos del proveedor 
	 * @throws SQLException
	 */
	public String[] seleccionarDatosProveedores(String id) throws SQLException{
		String[] resultado=new String[100];
		int j=0;
		ResultSet auxiliar=null;
		
		try{
			Statement s=con.createStatement();
			PreparedStatement p= con.prepareStatement("SELECT * FROM proveedores WHERE nombre=?");
			p.setString (1,id);
			auxiliar= p.executeQuery();
			if(auxiliar.next()){
				/*Solo hay uno*/
				resultado[j]="nombre";
				resultado[j+1]=auxiliar.getString(1);
				resultado[j+2]="direccion";
				resultado[j+3]=auxiliar.getString(2);
				resultado[j+4]="localidad";
				resultado[j+5]=auxiliar.getString(3);
				resultado[j+6]="provincia";
				resultado[j+7]=auxiliar.getString(4);
				resultado[j+8]="codigopostal";
				resultado[j+9]=auxiliar.getString(5);
				resultado[j+10]="pais";
				resultado[j+11]=auxiliar.getString(6);
				j=j+12;
				
			}
			p.close();
			auxiliar.close();
			s.close();
		}catch(SQLException e){
			e.printStackTrace(System.out);
		}
		
		int cont=0;
		for(j=0;resultado[j]!=null;j++)
			cont++;
		
		String []resp=new String[cont];
		for(j=0;resultado[j]!=null;j++)
			resp[j]=resultado[j];
		
				
		return resp;
	
		
	}
	
	
}
