/*
Copyright 2012-2017 Jose Robson Mariano Alves
This file is part of bgfinancas.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package badernageral.bgfinancas.modelo;
import badernageral.bgfinancas.biblioteca.banco.Banco;
import badernageral.bgfinancas.biblioteca.contrato.Modelo;
import badernageral.bgfinancas.biblioteca.banco.Coluna;
import badernageral.bgfinancas.biblioteca.banco.Conexao;
import badernageral.bgfinancas.biblioteca.sistema.Janela;
import badernageral.bgfinancas.biblioteca.utilitario.Datas;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
import javafx.collections.ObservableList;
public final class Configuracao extends Banco<Configuracao> implements Modelo {
private static final String MODULO = RAIZ+"/modulo/utilitario";
public static final String FXML_FORMULARIO = MODULO+"/ConfiguracaoFormulario.fxml";
public static final String TABELA = "configuracoes";
private final Coluna nome = new Coluna(TABELA, "nome");
private final Coluna valor = new Coluna(TABELA, "valor");
public Configuracao(){ }
public Configuracao(String nome, String valor){
this.nome.setValor(nome);
this.valor.setValor(valor);
}
@Override
protected Configuracao instanciar(ResultSet rs) throws SQLException{
return new Configuracao(
rs.getString(nome.getColuna()),
rs.getString(valor.getColuna())
);
}
@Override
public boolean cadastrar(){
return this.insert(nome, valor).commit();
}
@Override
public boolean alterar(){
return this.update(valor).where(nome, "=").commit();
}
@Override
public boolean excluir(){
System.out.println(idioma.getMensagem("nao_implementado"));
return false;
}
@Override
public Configuracao consultar() {
try{
this.select(nome, valor);
this.where(nome, "=");
ResultSet rs = this.query();
if(rs != null && rs.next()){
return instanciar(rs);
}else{
return null;
}
}catch(SQLException ex){
Janela.showException(ex);
return null;
}
}
@Override
public ObservableList<Configuracao> listar(){
System.out.println(idioma.getMensagem("nao_implementado"));
return null;
}
public String getNome() {
return nome.getValor();
}
public String getValor() {
return valor.getValor();
}
public Configuracao setNome(String nome){
this.nome.setValor(nome);
return getThis();
}
public void setValor(String valor){
this.valor.setValor(valor);
}
@Override
protected Configuracao getThis() {
return this;
}
public static void verificar(){
try {
Conexao banco = Conexao.getInstance();
// Tabela de configuracao
banco.executeQuery("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.SYSTEM_TABLES where TABLE_TYPE='TABLE' AND (TABLE_NAME='configuracoes' OR TABLE_NAME='CONFIGURACOES')");
if(!banco.getResultSet().next()){
banco.executeUpdate("CREATE TABLE configuracoes(nome VARCHAR(20) PRIMARY KEY, valor VARCHAR(50))");
}
// Configuracao: idioma
if(Configuracao.getPropriedade("idioma") == null){
new Configuracao("idioma", "pt_BR").cadastrar();
}
// Configuracao: moeda
if(Configuracao.getPropriedade("moeda") == null){
new Configuracao("moeda", "R$").cadastrar();
}
// Configuracao: versão
if(Configuracao.getPropriedade("versao") == null){
new Configuracao("versao", "3.0").cadastrar();
}
// Configuracao: data_notificacao
if(Configuracao.getPropriedade("data_notificacao") == null){
new Configuracao("data_notificacao", Datas.toSqlData(LocalDate.now())).cadastrar();
}
// Configuracao: login
if(Configuracao.getPropriedade("login") == null){
new Configuracao("login", "1").cadastrar();
}
// Configuracao: data_atualizacao
if(Configuracao.getPropriedade("data_atualizacao") == null){
new Configuracao("data_atualizacao", Datas.toSqlData(LocalDate.now().minusMonths(1))).cadastrar();
}
} catch (SQLException ex) {
Janela.showException(ex);
}
}
public static String getPropriedade(String propriedade){
Configuracao configuracao = new Configuracao().setNome(propriedade).consultar();
if(configuracao != null){
return configuracao.getValor();
}else{
return null;
}
}
public static void setPropriedade(String propriedade, String valor){
Configuracao conf = new Configuracao().setNome(propriedade).consultar();
conf.setValor(valor);
conf.alterar();
}
}