package com.softgraf.model.dao;

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

import static com.softgraf.control.Sistema.*;

// Design Pattern Factory
public class FabricaDeConexoes {

	private String classe, stringConexao, usuario, senha;

	public FabricaDeConexoes(BDProperties propriedadesBD) {
		this.classe = propriedadesBD.getClasse();
		this.stringConexao = propriedadesBD.getStringConexao();
		this.usuario = propriedadesBD.getUsuario();
		this.senha = propriedadesBD.getSenha();
	}

	public Connection criarConexao(){
		Connection conexao = null;
		
		// procura pela classe (Driver) dentro do .jar
		try {
			Class.forName(classe);
			conexao = DriverManager.getConnection(stringConexao, usuario,senha);
			
		} catch (SQLException e) {
			System.err.println(stringConexao);
			System.err.println(usuario);
			System.err.println(senha);
			
			dlgErro.setHeaderText("Erro ao conectar-se com o banco de dados");
			dlgErro.setContentText(e.getMessage());
			dlgErro.showAndWait();
			
		} catch (ClassNotFoundException e) {
			dlgErro.setHeaderText("Driver de conexão com o banco não encontrado!");
			dlgErro.setContentText(e.getMessage());
			dlgErro.showAndWait();
		}
		
		System.out.println("Abriu conexão com o banco de dados.");
		return conexao;
	}
	
	public void fecharConexao(Connection conexao){
		try {
			if (conexao != null){
				System.out.println("Fechou a conexão com o banco de dados.");
				conexao.close();
			}
			
		} catch (SQLException e) {
			dlgErro.setHeaderText("Erro ao fechar conexão com o banco de dados.");
			dlgErro.setContentText(e.getMessage());
			dlgErro.showAndWait();
		}
	}
}
