package br.com.daniel.jdbc.conexao;

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

import br.com.daniel.jdbc.exception.NaoConectadoDbException;

/**
 * @author Daniel
 * @version 1.0.0
 * 
 * Classe faz a conexão com o banco de dados, ao realizar a conexão
 * retorna essa conexão pronta para que seja utilizada em por outras
 * classes de persistência
 *
 */
public class Conexao {

	private String host;
	private String userDb;
	private String passDb;
	
	
	public Conexao() {		
		this.host = this.dados("db.host");
		this.userDb = this.dados("db.user");
		this.passDb = this.dados("db.pass");
	}
	

	/**
	 * 
	 * @return Conexao
	 * 
	 * Inicia a conexão com o banco de dados Mysql
	 * 
	 * para essa conexão, utiliza-se os parametros informados
	 * pelo usuário que são <b>Host do banco de dados</b>,  
	 * <b>usuário do banco de dados</b> e <b>Senha do banco de dados</b>
	 */
	public Connection conectarMysql() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			return DriverManager.getConnection("jdbc:mysql://"+ host, userDb, passDb);
		} catch (NaoConectadoDbException e) {
			new NaoConectadoDbException(e);
			return null;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	
	public Connection conectarPostgrees(){
		return null;
	}
	
	public Connection conectarOracle(){
		return null;
	}
	
	public Connection conectarSqlServer(){
		return null;
	}
	
	/**
	 * @param campo do arquivo
	 * @return dados do campo que se encontra no arquivo .properties
	 * 
	 * Ler o arquivo de propriedades e retorna os dados dos campos de acordo
	 * com o campo passado por parametro
	 */
	private String dados(final String campo){
		try (FileInputStream file = new FileInputStream("propriedades.properties")){			
			Properties prop = new Properties();			
			prop.load(file);
			return prop.getProperty(campo);			
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
}

@@ -211,16 +211,86 @@
 ception;
+%0Aimport br.com.daniel.jdbc.exception.NaoEncontradoPropertiesException;
 %0A%0A/**%0A *
@@ -618,12 +618,50 @@
 o() 
-%7B%09%09%0A
+throws NaoConectadoDbException %7B%0A%09%09try %7B%0A%09
 %09%09th
@@ -691,24 +691,25 @@
 b.host%22);%0A%09%09
+%09
 this.userDb 
@@ -733,16 +733,17 @@
 user%22);%0A
+%09
 %09%09this.p
@@ -773,16 +773,116 @@
 pass%22);%0A
+%09%09%7D catch (Exception e) %7B%0A%09%09%09throw new NaoConectadoDbException((NaoConectadoDbException) e);%0A%09%09%7D%0A%09%09%0A
 %09%7D%0A%09%0A%0A%09/
@@ -1154,16 +1154,53 @@
 dos%3C/b%3E%0A
+%09 * @throws NaoConectadoDbException %0A
 %09 */%0A%09pu
@@ -1230,16 +1230,47 @@
 rMysql()
+ throws NaoConectadoDbException
  %7B%0A%09%09try
@@ -1436,16 +1436,22 @@
 e) %7B%0A%09%09%09
+throw 
 new NaoC
@@ -1475,84 +1475,178 @@
 on(e
-);%0A%09%09%09return null;%0A%09%09%7D catch (Exception e) %7B%0A%09%09%09throw new RuntimeException(e
+, %22Erro ao conectar na base de dados%22);%09%09%09%0A%09%09%7D catch (Exception e) %7B%0A%09%09%09throw new NaoConectadoDbException((NaoConectadoDbException) e, %22Erro ao conectar na base de dados%22
 );%0A%09
@@ -2046,16 +2046,85 @@
 rametro%0A
+%09 * @throws NaoEncontradoPropertiesException %0A%09 * @throws Exception %0A
 %09 */%0A%09pr
@@ -2161,16 +2161,57 @@
 g campo)
+ throws NaoEncontradoPropertiesException 
 %7B%0A%09%09try 
@@ -2429,26 +2429,117 @@
 new 
-RuntimeException(e
+NaoEncontradoPropertiesException((NaoEncontradoPropertiesException) e, %22Erro ao Ler arquivos de Propriedades%22
 );%0A%09

Ajuste de Exception na conexão