package com.softgraf.model.dao;

import java.io.IOException;
import java.sql.Connection;
import java.util.Date;

import com.softgraf.model.FabricaDeConexoes;
import com.softgraf.model.FinanceiroProperties;
import com.softgraf.model.vo.Agencia;
import com.softgraf.model.vo.Banco;
import com.softgraf.model.vo.Cheque;
import com.softgraf.model.vo.Cliente;
import com.softgraf.model.vo.Finalidade;

// 20
public class TesteDAO {

	public static void main(String[] args) {
		
		String arqConfig = "c:/config.properties";
		FinanceiroProperties propriedadesBanco;
		
		try {
			
			System.out.println("Testando Conexões...");
			propriedadesBanco = new FinanceiroProperties(arqConfig);
			FabricaDeConexoes fabricaConexao = new FabricaDeConexoes(propriedadesBanco);
			fabricaConexao.conectar();
			Connection conexao = fabricaConexao.getConexao();
			TabelasFinanceiroDAO financeiro = new TabelasFinanceiroDAO(conexao);
			
			System.out.println("Testando criação de tabelas...");
			System.out.printf("\nBanco = %b", financeiro.criarTabelaBanco());
			System.out.printf("\nAgencia = %b", financeiro.criarTabelaAgencia());
			System.out.printf("\nFinalidade = %b", financeiro.criarTabelaFinalidade());
			System.out.printf("\nCliente = %b", financeiro.criarTabelaCliente());
			System.out.printf("\nCheque = %b", financeiro.criarTabelaCheque());

			System.out.println("\n\nTestando BancoDAO...");
			Banco banco = new Banco(1, "Banco do Brasil");
			BancoDAO bancoDAO = new BancoDAO(conexao);
			bancoDAO.inserir(banco);
			bancoDAO.listar();
			bancoDAO.buscar(1);			

			System.out.println("Testando AgenciaDAO...");
			Agencia agencia = new Agencia(2, 1);
			AgenciaDAO agenciaDAO = new AgenciaDAO(conexao);
			agenciaDAO.inserir(agencia);
			agenciaDAO.listar();
			agenciaDAO.buscar(1);

			System.out.println("Testando FinalidadeDAO...");
			Finalidade finalidade = new Finalidade();
			FinalidadeDAO finalidadeDAO = new FinalidadeDAO(conexao);
			finalidadeDAO.inserir(finalidade);
			finalidadeDAO.listar();
			finalidadeDAO.buscar(1);
			
			System.out.println("Testando ClienteDAO...");
			Cliente cliente = new Cliente();
			ClienteDAO clienteDAO = new ClienteDAO(conexao);
			clienteDAO.inserir(cliente);
			clienteDAO.listar();
			clienteDAO.buscar(1);

			System.out.println("Testando ChequeDAO...");
			Cheque cheque = new Cheque(1, 111, 222, 1, 1, 1, 1, 1, 100f, new Date(), new Date(), new Date(), true);
			ChequeDAO chequeDAO = new ChequeDAO(conexao);
			chequeDAO.inserir(cheque);
			chequeDAO.listar();
			chequeDAO.buscar(1);
			
			System.out.println("Removendo registros...");
			
			chequeDAO.remover(1);
			clienteDAO.remover(1);
			finalidadeDAO.remover(1);
			agenciaDAO.remover(1);
			bancoDAO.remover(1);
				
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
