package com.softgraf.control;

import java.io.IOException;
import java.sql.Connection;

import javax.swing.JOptionPane;

import com.softgraf.model.FabricaDeConexoes;
import com.softgraf.model.FinanceiroProperties;
import com.softgraf.model.dao.AgenciaDAO;
import com.softgraf.model.dao.BancoDAO;
import com.softgraf.model.dao.ChequeDAO;
import com.softgraf.model.dao.ClienteDAO;
import com.softgraf.model.dao.FinalidadeDAO;
import com.softgraf.model.dao.TabelasFinanceiroDAO;
import com.softgraf.view.desktop.DesktopView;

// 80
public class Principal {

	public static void main(String[] args) {
		String arqConfig = "financeiro.properties";
		FinanceiroProperties propriedadesBanco = null;
		
		try {
			propriedadesBanco = new FinanceiroProperties(arqConfig);
			
		} catch (IOException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Falha ao obter as propriedades do arquivo: " + arqConfig);
			System.exit(0);
		}
		
		FabricaDeConexoes fabricaConexao = new FabricaDeConexoes(propriedadesBanco);
		
		if (fabricaConexao.conectar()){
			Connection conexao = fabricaConexao.getConexao();
			
			// cria tabelas se ainda não existirem
			// Obs.: Devem ser criadas exatamente nesta ordem, por causa das referências às chaves estrangeiras.
			TabelasFinanceiroDAO financeiro = new TabelasFinanceiroDAO(conexao);
			financeiro.criarTabelaBanco();
			financeiro.criarTabelaAgencia();
			financeiro.criarTabelaCliente();
			financeiro.criarTabelaFinalidade();
			financeiro.criarTabelaCheque();
			
			// cria DAOs de acesso às tabelas
			BancoDAO bancoDAO = new BancoDAO(conexao);
			AgenciaDAO agenciaDAO = new AgenciaDAO(conexao);
			FinalidadeDAO finalidadeDAO = new FinalidadeDAO(conexao);
			ClienteDAO clienteDAO = new ClienteDAO(conexao);
			ChequeDAO chequeDAO = new ChequeDAO(conexao);
			
		
			new DesktopView(fabricaConexao, bancoDAO, agenciaDAO, finalidadeDAO, clienteDAO, chequeDAO);
		
		} else 
			JOptionPane.showMessageDialog(null, "Falha ao se conectar com o banco Financeiro.");

	}

}
