package com.softgraf.model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import com.softgraf.model.abstrato.BDproperties;

// 08
// Design Pattern Factory
 public class FabricaDeConexoes {
	
	private String classe, stringConexao, usuario, senha;
	private Connection conexao = null;
	
	public FabricaDeConexoes(BDproperties propriedadesBanco) {
		this.classe = propriedadesBanco.getClasse();
		this.stringConexao = propriedadesBanco.getStringConexao();
		this.usuario = propriedadesBanco.getusuario();
		this.senha = propriedadesBanco.getSenha();
	}
	
	public Connection getConexao() {
		return conexao;
	}
	
	public boolean conectar(){

		try {
			Class.forName(classe);
			conexao = DriverManager.getConnection(stringConexao, usuario, senha);
			
		} catch (ClassNotFoundException e) {
			System.err.println(stringConexao);
			System.err.println(usuario);
			System.err.println(senha);
			JOptionPane.showMessageDialog(null, "Driver de conexão com o banco não encontrado!");
			return false;
			
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, "Erro ao conectar-se com o banco de dados");
			return false;
		}
		
		return true;
	}
	
	public void fechar(){
		try {
			if (conexao != null){
				conexao.close();
				conexao = null;
			}
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, "Erro ao fechar conexão com o banco de dados.");
		}
	}
	
	public boolean isConectado(){
		return conexao != null;
	}
	
}
