/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package dao;
import controller.AvaliacaoController;
import controller.operating.Strings;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import model.FormularioAvaliacao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JOptionPane;
/**
*
* @author Consult
*/
public class FormularioAvaliacaoDAO {
private AvaliacaoItemDAO avaliacaoItem;
public FormularioAvaliacaoDAO() {
this.avaliacaoItem = new AvaliacaoItemDAO();
}
public FormularioAvaliacaoDAO(AvaliacaoItemDAO avalicaoItem) {
this.avaliacaoItem = avalicaoItem;
}
public FormularioAvaliacao getFormularioAvaliacao(String pCodigoFormulario, String pCodigoAvalicao) {
Connection conexao = Conexao.getSqlConnection();
FormularioAvaliacao formularioAvaliacao = new FormularioAvaliacao();
try {
Statement statement = conexao.createStatement();
statement.executeQuery("SELECT * FROM avaliacaoFormulario " +
"WHERE codigoFormularioAvaliacao = " + pCodigoFormulario +
" AND codigoAvaliacao = " + pCodigoAvalicao);
ResultSet resultSet = statement.getResultSet();
while (resultSet.next()) {
int codigoFormulario = resultSet.getInt("codigoFormularioAvaliacao");
int codigoAvaliacao = resultSet.getInt("codigoAvaliacao");
AvaliacaoController avaliacaoCtrl = new AvaliacaoController();
avaliacaoItem = new AvaliacaoItemDAO();
formularioAvaliacao = new FormularioAvaliacao();
formularioAvaliacao.setCodigoFormularioAvaliacao(codigoFormulario);
formularioAvaliacao.setNomeAvaliador(resultSet.getString("nomeAvaliador"));
formularioAvaliacao.setAvaliacao(avaliacaoCtrl.getAvaliacao(String.valueOf(codigoAvaliacao)));
formularioAvaliacao.setListaDeItens(avaliacaoItem.getItensFormularioAvaliacao(codigoFormulario, codigoAvaliacao));
}
resultSet.close();
statement.close();
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, Strings.getMensagemErroRecuperacao("Formulário de Avaliação", erro.getMessage()), Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
}
return formularioAvaliacao;
}
public boolean salvar(FormularioAvaliacao formulario) {
String rollback = "O rollback não foi efetuado.";
Connection conexao = Conexao.getSqlConnection();
try {
conexao.setAutoCommit(false);
Statement statement = conexao.createStatement();
/*System.out.println("INSERT INTO avaliacaoFormulario " +
"(codigoFormularioAvaliacao, codigoAvaliacao, nomeAvaliador) " +
"VALUES(" + formulario.getCodigoFormularioAvaliacao() +
", " + formulario.getAvaliacao().getCodigoAvaliacao() +
", '" + formulario.getNomeAvaliador() + "')");*/
statement.execute(
"INSERT INTO avaliacaoFormulario " +
"(codigoFormularioAvaliacao, codigoAvaliacao, nomeAvaliador) " +
"VALUES(" + formulario.getCodigoFormularioAvaliacao() +
", " + formulario.getAvaliacao().getCodigoAvaliacao() +
", '" + formulario.getNomeAvaliador() + "')");
avaliacaoItem = new AvaliacaoItemDAO();
avaliacaoItem.salvarItensFormularioAvaliacao(formulario.getListaDeItens());
conexao.commit();
conexao.setAutoCommit(true);
statement.close();
return true;
} catch (Exception erro) {
try {
conexao.rollback();
rollback = "O rollback foi efetuado.";
} catch (SQLException ex) {
Logger.getLogger(FormularioAvaliacaoDAO.class.getName()).log(Level.SEVERE, null, ex);
}
JOptionPane.showMessageDialog(null, Strings.getMensagemErroPersitencia("Formulário de Avaliação", erro.getMessage()) + "." + rollback, Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
return false;
}
}
public boolean atualizar(FormularioAvaliacao pFormularioAvaliacao) {
String rollback = "O rollback não foi efetuado.";
Connection conexao = Conexao.getSqlConnection();
try {
conexao.setAutoCommit(false);
Statement statement = conexao.createStatement();
statement.execute("UPDATE avaliacaoFormulario " +
"SET nomeAvaliador = '" + pFormularioAvaliacao.getNomeAvaliador() +
"' WHERE codigoFormularioAvaliacao = " + pFormularioAvaliacao.getCodigoFormularioAvaliacao() +
" AND codigoAvaliacao = " + pFormularioAvaliacao.getAvaliacao().getCodigoAvaliacao());
avaliacaoItem = new AvaliacaoItemDAO();
avaliacaoItem.atualizarItensFormularioAvaliacao(pFormularioAvaliacao.getListaDeItens());
conexao.commit();
conexao.setAutoCommit(true);
statement.close();
return true;
} catch (Exception erro) {
try {
conexao.rollback();
rollback = "O rollback foi efetuado.";
} catch (SQLException ex) {
Logger.getLogger(FormularioAvaliacaoDAO.class.getName()).log(Level.SEVERE, null, ex);
}
JOptionPane.showMessageDialog(null, Strings.getMensagemErroEdicao("Formulário de Avaliação", erro.getMessage()) + "." + rollback, Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
return false;
}
}
public boolean excluir(String codigoAvaliacao, String codigoFormulario) {
String rollback = "O rollback não foi efetuado.";
Connection conexao = Conexao.getSqlConnection();
try {
conexao.setAutoCommit(false);
Statement statement = conexao.createStatement();
statement.execute("DELETE FROM avaliacaoFormulario " +
"WHERE codigoFormularioAvaliacao = " + codigoFormulario +
" AND codigoAvaliacao = " + codigoAvaliacao);
avaliacaoItem = new AvaliacaoItemDAO();
avaliacaoItem.excluirItensFormularioAvaliacao(codigoAvaliacao, codigoFormulario);
conexao.commit();
conexao.setAutoCommit(true);
statement.close();
return true;
} catch (Exception erro) {
try {
conexao.rollback();
rollback = "O rollback foi efetuado.";
} catch (SQLException ex) {
Logger.getLogger(FormularioAvaliacaoDAO.class.getName()).log(Level.SEVERE, null, ex);
}
JOptionPane.showMessageDialog(null, Strings.getMensagemErroExclusao("Formulário de Avaliação", erro.getMessage()) + "." + rollback, Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
return false;
}
}
public String getNovoCodigo(String codigoAvalicao) {
Connection conexao = Conexao.getSqlConnection();
String[] codigo = {"", "", ""};
try {
Statement statement = conexao.createStatement();
statement.executeQuery("SELECT * FROM avaliacaoformulario WHERE codigoAvaliacao = " + codigoAvalicao);
ResultSet resultSet = statement.getResultSet();
int contador = 0;
while (resultSet.next()) {
codigo[contador] = String.valueOf(resultSet.getInt("codigoFormularioAvaliacao"));
contador++;
}
resultSet.close();
statement.close();
for(int i = 0; i < 3; i++){
String codigoFormulario = String.valueOf(i + 1);
if(!codigo[i].equals(codigoFormulario)){
return codigoFormulario;
}
}
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, Strings.getMensagemErroNovoCodigo("Formulário de Avaliação", erro.getMessage()), Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
}
return "";
}
}