/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package dao;
import controller.operating.GerenciadorOperacional;
import controller.operating.Strings;
import model.Candidato;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import util.Data;
import model.Endereco;
import model.Pessoa;
/**
*
* @author IconeServidor
*/
public class CandidatoDAO {
public Candidato getCandidato(String codigo) {
Connection conexao = Conexao.getSqlConnection();
Candidato candidato = new Candidato();
try {
Statement statement = conexao.createStatement();
statement.executeQuery("SELECT * " +
"FROM candidatoDocente INNER JOIN pessoa ON (candidatoDocente.codigoPessoa = pessoa.codigoPessoa)" +
"LEFT JOIN endereco ON (endereco.codigoPessoa = pessoa.codigoPessoa) " +
"WHERE candidatoDocente.aprovado <> 'A' AND candidatoDocente.codigoPessoa = " + codigo);
ResultSet resultSet = statement.getResultSet();
while (resultSet.next()) {
Pessoa pessoa = new Pessoa();
pessoa.setCodigoPessoa(resultSet.getInt("candidatoDocente.codigoPessoa"));
Endereco endereco = new Endereco(
resultSet.getString("logradouro"),
resultSet.getString("numero"),
resultSet.getString("bairro"),
resultSet.getString("cep"),
resultSet.getString("complemento"),
resultSet.getString("nomeCidade"),
resultSet.getString("uf"),
pessoa);
candidato = new Candidato();
candidato.setCodigoCandidato(resultSet.getInt("candidatoDocente.codigoPessoa"));
candidato.setCodigoPessoa(resultSet.getInt("candidatoDocente.codigoPessoa"));
candidato.setNome(resultSet.getString("nomePessoa"));
candidato.setEmail(resultSet.getString("email"));
candidato.setTelefone(resultSet.getString("telefone"));
candidato.setCelular(resultSet.getString("celular"));
candidato.setRg(resultSet.getString("rg"));
candidato.setCpf(resultSet.getString("cpf"));
candidato.setNascimento(Data.converteDataMysqlBr(resultSet.getString("nascimento")));
candidato.setLattes(resultSet.getString("lattes"));
candidato.setObservacao(resultSet.getString("observacoes"));
candidato.setEndereco(endereco);
}
resultSet.close();
statement.close();
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, Strings.getMensagemErroRecuperacao("Candidato", erro.getMessage()), Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
}
return candidato;
}
public Candidato getCandidatoSemFiltro(String codigo) {
Connection conexao = Conexao.getSqlConnection();
Candidato candidato = new Candidato();
try {
Statement statement = conexao.createStatement();
statement.executeQuery("SELECT * " +
"FROM candidatoDocente INNER JOIN pessoa ON (candidatoDocente.codigoPessoa = pessoa.codigoPessoa)" +
"LEFT JOIN endereco ON (endereco.codigoPessoa = pessoa.codigoPessoa) " +
"WHERE candidatoDocente.codigoPessoa = " + codigo);
ResultSet resultSet = statement.getResultSet();
while (resultSet.next()) {
Pessoa pessoa = new Pessoa();
pessoa.setCodigoPessoa(resultSet.getInt("candidatoDocente.codigoPessoa"));
Endereco endereco = new Endereco(
resultSet.getString("logradouro"),
resultSet.getString("numero"),
resultSet.getString("bairro"),
resultSet.getString("cep"),
resultSet.getString("complemento"),
resultSet.getString("nomeCidade"),
resultSet.getString("uf"),
pessoa);
candidato = new Candidato();
candidato.setCodigoCandidato(resultSet.getInt("candidatoDocente.codigoPessoa"));
candidato.setCodigoPessoa(resultSet.getInt("candidatoDocente.codigoPessoa"));
candidato.setNome(resultSet.getString("nomePessoa"));
candidato.setEmail(resultSet.getString("email"));
candidato.setTelefone(resultSet.getString("telefone"));
candidato.setCelular(resultSet.getString("celular"));
candidato.setRg(resultSet.getString("rg"));
candidato.setCpf(resultSet.getString("cpf"));
candidato.setNascimento(Data.converteDataMysqlBr(resultSet.getString("nascimento")));
candidato.setLattes(resultSet.getString("lattes"));
candidato.setObservacao(resultSet.getString("observacoes"));
candidato.setEndereco(endereco);
}
resultSet.close();
statement.close();
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, Strings.getMensagemErroRecuperacao("Candidato", erro.getMessage()), Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
}
return candidato;
}
public ArrayList<Candidato> getCandidatos() {
Connection conexao = Conexao.getSqlConnection();
ArrayList<Candidato> listaDeCandidatos = new ArrayList<Candidato>();
try {
Statement objSTM = conexao.createStatement();
objSTM.executeQuery("SELECT * " +
"FROM candidatoDocente INNER JOIN pessoa ON (candidatoDocente.codigoPessoa = pessoa.codigoPessoa)" +
"LEFT JOIN endereco ON (endereco.codigoPessoa = pessoa.codigoPessoa) " +
"WHERE candidatoDocente.aprovado <> 'A'");
ResultSet resultSet = objSTM.getResultSet();
Candidato candidato;
while (resultSet.next()) {
Pessoa pessoa = new Pessoa();
pessoa.setCodigoPessoa(resultSet.getInt("candidatoDocente.codigoPessoa"));
Endereco endereco = new Endereco(
resultSet.getString("logradouro"),
resultSet.getString("numero"),
resultSet.getString("bairro"),
resultSet.getString("cep"),
resultSet.getString("complemento"),
resultSet.getString("nomeCidade"),
resultSet.getString("uf"),
pessoa);
candidato = new Candidato();
candidato.setCodigoCandidato(resultSet.getInt("candidatoDocente.codigoPessoa"));
candidato.setCodigoPessoa(resultSet.getInt("candidatoDocente.codigoPessoa"));
candidato.setNome(resultSet.getString("nomePessoa"));
candidato.setEmail(resultSet.getString("email"));
candidato.setTelefone(resultSet.getString("telefone"));
candidato.setCelular(resultSet.getString("celular"));
candidato.setRg(resultSet.getString("rg"));
candidato.setCpf(resultSet.getString("cpf"));
candidato.setNascimento(Data.converteDataMysqlBr(resultSet.getString("nascimento")));
candidato.setLattes(resultSet.getString("lattes"));
candidato.setObservacao(resultSet.getString("observacoes"));
candidato.setEndereco(endereco);
listaDeCandidatos.add(candidato);
}
resultSet.close();
objSTM.close();
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, Strings.getMensagemErroRecuperacao("Candidatos", erro.getMessage()), Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
}
return listaDeCandidatos;
}
public boolean salvar(Candidato pCandidato) {
Connection conexao = Conexao.getSqlConnection();
try {
Statement statement = conexao.createStatement();
statement.execute(
"INSERT INTO candidatoDocente " +
"(rg, cpf, nascimento, lattes, observacoes, codigoPessoa) " +
"VALUES('" + pCandidato.getRg() + "', '" + pCandidato.getCpf() + "', '" + Data.converteDataBrMysql(pCandidato.getNascimento()) +
"', '" + pCandidato.getLattes() + "', '" + pCandidato.getObservacao() +
"', " + pCandidato.getCodigoPessoa() + ")");
statement.close();
return true;
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, Strings.getMensagemErroPersitencia("Candidato", erro.getMessage()), Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
return false;
}
}
public boolean atualizar(Candidato pCandidato) {
Connection conexao = Conexao.getSqlConnection();
try {
Statement statement = conexao.createStatement();
statement.execute("UPDATE candidatoDocente " +
"SET rg = '" + pCandidato.getRg() +
"', cpf = '" + pCandidato.getCpf() +
"', nascimento = '" + Data.converteDataBrMysql(pCandidato.getNascimento()) +
"', lattes = '" + pCandidato.getLattes() +
"', observacoes = '" + pCandidato.getObservacao() +
"' WHERE codigoPessoa = " + pCandidato.getCodigoPessoa());
statement.close();
return true;
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, Strings.getMensagemErroEdicao("Candidato", erro.getMessage()), Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
return false;
}
}
public boolean excluir(String codigo) {
Connection conexao = Conexao.getSqlConnection();
try {
Statement statement = conexao.createStatement();
//embora o banco esteja em cascade isto garante caso o InnoDb não esteja ativado
statement.execute("DELETE FROM candidatoDocente WHERE codigoPessoa = " + codigo);
statement.execute("DELETE FROM pessoa WHERE codigoPessoa = " + codigo);
statement.close();
return true;
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, Strings.getMensagemErroExclusao("Candidato", erro.getMessage()), Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
return false;
}
}
public boolean aprovarCandidato(String codigo) {
Connection conexao = Conexao.getSqlConnection();
try {
Statement statement = conexao.createStatement();
statement.execute("UPDATE candidatoDocente " +
"SET aprovado = 'A" +
"', dataAprovacao = '" + new Data().getData() +
"', usuarioResponsavel = '" + GerenciadorOperacional.getUsuario().getUsuario() +
"' WHERE codigoPessoa = " + codigo);
statement.close();
return true;
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, Strings.getMensagemErroProcesso("cancelar aprovação de Docente", erro.getMessage()), Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
return false;
}
}
public int getMaiorCodigo() {
Connection conexao = Conexao.getSqlConnection();
int intCodigo = 0;
try {
Statement statement = conexao.createStatement();
statement.executeQuery("SELECT MAX(codigoPessoa) AS codigo FROM pessoa");
ResultSet resultSet = statement.getResultSet();
while (resultSet.next()) {
intCodigo = resultSet.getInt("codigo");
}
resultSet.close();
statement.close();
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, Strings.getMensagemErroNovoCodigo("Candidato", erro.getMessage()), Strings.tituloMessageErro, JOptionPane.ERROR_MESSAGE);
}
return intCodigo;
}
}