package com.softgraf.model.dao;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class FarmaciaProperties implements BDProperties {

	private String arqConfig;
	private Properties tabela;
	
	// construtor
	public FarmaciaProperties(String arqConfig) throws IOException {
		this.arqConfig = arqConfig;
		// instancia um Hashtable persistente
		this.tabela = new Properties();
		
		if (new File(arqConfig).exists())
			// le propriedades do arquivo para a tabela
			lerPropriedades();
		else {
			definirPadrao(); // cria dados padrões
			salvarPropriedades();
		}
	}
	
	private void definirPadrao(){
		tabela.setProperty("classe", "com.mysql.jdbc.Driver");
		tabela.setProperty("driver", "mysql");
		tabela.setProperty("url", "localhost:3306");  // ip:porta
		tabela.setProperty("banco", "farmacia?createDatabaseIfNotExist=true");
		tabela.setProperty("usuario", "root");
		tabela.setProperty("senha", "softgraf");
	}
	
	// salva o conteúdo da tabela no arquivo farmacia.properties
	private void salvarPropriedades() throws IOException{
		FileOutputStream saida = new FileOutputStream(arqConfig);
		tabela.store(saida, "Configuração do Banco de Dados Farmácia");
		saida.close();
	}
	
	// le o conteudo da tabela a partir de farmacia.properties
	private void lerPropriedades() throws IOException{
		FileInputStream entrada = new FileInputStream(arqConfig);
		tabela.load(entrada);
		entrada.close();
	}
	
	@Override
	public String getClasse() {
		return tabela.getProperty("classe");
	}

	@Override
	public String getUrl() {
		return tabela.getProperty("url");
	}

	@Override
	public String getBanco() {
		return tabela.getProperty("banco");
	}

	@Override
	public String getUsuario() {
		return tabela.getProperty("usuario");
	}

	@Override
	public String getSenha() {
		return tabela.getProperty("senha");
	}

	@Override
	public String getDriver() {
		return tabela.getProperty("driver");
	}
	
	@Override
	public String getStringConexao() {
		return "jdbc:" + getDriver() + "://" + getUrl() + "/" + getBanco();
	}

}
