/*
* Copyright (C) 2015 Allsoft
*
* 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 program 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 br.com.allsoft.avros.dao;
import br.com.allsoft.avros.exceptions.AuditoriaException;
import br.com.allsoft.avros.factory.ConexaoMySQL;
import br.com.allsoft.avros.formulas.Cpf;
import br.com.allsoft.avros.modelo.Cliente;
import br.com.allsoft.avros.modelo.ClsBD;
import br.com.allsoft.avros.modelo.JDBCAuditoria;
import br.com.allsoft.avros.modelo.Orcamento;
import br.com.allsoft.avros.modelo.Registro;
import br.com.allsoft.avros.modelo.Representante;
import br.com.allsoft.avros.modelo.Sessao;
import br.com.allsoft.avros.modelo.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
* Classe para salvar deletes na auditoria
*
* @author Luana Nascimento
*/
public class AuditoriaDelete extends JDBCAuditoria{
//Variáveis
public static Connection con = null;
static String nomeTabela;
static String view;
static String campos;
//Métodos
/**
* Abre uma conexão e fecha a antiga
* @throws SQLException
*/
private static void abreCon() throws SQLException {
if ((con == null) || (con.isClosed())) {
con = ConexaoMySQL.getConexaoMySQL();
}
}
/**
* Grava a ação de deletar uma relação entre responsavel e cliente menor na auditoria
*
* @param resp usuário responsável pelo update
* @param representante
* @param menor
* @param codSql código sql utilizado
* @throws AuditoriaException
*/
public static void relRepMenor(Usuario resp, Representante representante, Cliente menor, String codSql) throws AuditoriaException {
try {
tabela = ClsBD.getTblRel();
acao = "delete";
descricao = resp.getNick() + " deletou a relação entre o representante " + representante.getNome() + ", CPF " + Cpf.imprimeCpf(representante.getCpf()) + " e o cliente " + menor.getNome() + ", CPF " + Cpf.imprimeCpf(menor.getCpf()) + ", de " + String.valueOf(menor.idade()) + " anos.";
sql = codSql;
codDado = menor.getId();
idLogin = resp.getId();
con = ConexaoMySQL.getConexaoMySQL();
antes = "-"; //No caso de updates, como o campo era antes
depois = "-"; //No caso de updates, como o campo ficou no fim
campo = "-"; //Campo alterado
String query = "call insere_registro(?, ?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, tabela);
stmt.setInt(2, codDado);
stmt.setString(3, acao);
stmt.setString(4, descricao);
stmt.setInt(5, idLogin);
stmt.setString(6, sql);
stmt.setString(7, antes);
stmt.setString(8, depois);
stmt.setString(9, campo);
stmt.execute();
stmt.close();
con.close();
} catch (SQLException ex) {
throw new AuditoriaException(ex);
}
}
/**
* Grava delete de uma sessão na auditoria
* @param resp usuário responsável
* @param sessao sessão deletada, com nome do cliente e id
* de orçamento setados
* @param codSql SQL utilizado
* @throws AuditoriaException
*/
public static void sessao(Usuario resp, Sessao sessao, String codSql) throws AuditoriaException {
try {
tabela = ClsBD.getTblSessao();
acao = "delete";
descricao = resp.getNick() + " deletou a sessão de ID " + sessao.getId() + " do cliente " + sessao.getCliente() + ", orçamento " + sessao.getIdOrcamento();
sql = codSql;
codDado = sessao.getId();
idLogin = resp.getId();
con = ConexaoMySQL.getConexaoMySQL();
antes = "-"; //No caso de updates, como o campo era antes
depois = "-"; //No caso de updates, como o campo ficou no fim
campo = "-"; //Campo alterado
String query = "call insere_registro(?, ?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, tabela);
stmt.setInt(2, codDado);
stmt.setString(3, acao);
stmt.setString(4, descricao);
stmt.setInt(5, idLogin);
stmt.setString(6, sql);
stmt.setString(7, antes);
stmt.setString(8, depois);
stmt.setString(9, campo);
stmt.execute();
stmt.close();
con.close();
} catch (SQLException ex) {
throw new AuditoriaException(ex);
}
}
/**
* Grava delete de um orçamento na auditoria
* @param resp usuário responsável
* @param orcamento orçamento deletado, com nome do cliente setado
* @param codSql SQL utilizado
* @throws AuditoriaException
*/
public static void orcamento(Usuario resp, Orcamento orcamento, String codSql) throws AuditoriaException {
try {
Cliente cliente = ClienteDAO.cclienteId(orcamento.getIdCliente());
tabela = ClsBD.getTblOrcamento();
acao = "delete";
descricao = resp.getNick() + " deletou o orçamento de ID " + orcamento.getId() + " e suas sessões, do cliente " + cliente.getNome();
sql = codSql;
codDado = orcamento.getId();
idLogin = resp.getId();
con = ConexaoMySQL.getConexaoMySQL();
antes = "-"; //No caso de updates, como o campo era antes
depois = "-"; //No caso de updates, como o campo ficou no fim
campo = "-"; //Campo alterado
String query = "call insere_registro(?, ?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, tabela);
stmt.setInt(2, codDado);
stmt.setString(3, acao);
stmt.setString(4, descricao);
stmt.setInt(5, idLogin);
stmt.setString(6, sql);
stmt.setString(7, antes);
stmt.setString(8, depois);
stmt.setString(9, campo);
stmt.execute();
stmt.close();
con.close();
} catch (SQLException ex) {
throw new AuditoriaException(ex);
}
}
/**
* Grava delete de um orçamento na auditoria
* @param resp usuário responsável
* @param representante
* @param codSql SQL utilizado
* @throws AuditoriaException
*/
public static void representante(Usuario resp, Representante representante, String codSql) throws AuditoriaException {
try {
tabela = ClsBD.getTblRepresentante();
acao = "delete";
descricao = resp.getNick() + " deletou o representante " + representante.getNome();
sql = codSql;
codDado = representante.getId();
idLogin = resp.getId();
con = ConexaoMySQL.getConexaoMySQL();
antes = "-"; //No caso de updates, como o campo era antes
depois = "-"; //No caso de updates, como o campo ficou no fim
campo = "-"; //Campo alterado
String query = "call insere_registro(?, ?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, tabela);
stmt.setInt(2, codDado);
stmt.setString(3, acao);
stmt.setString(4, descricao);
stmt.setInt(5, idLogin);
stmt.setString(6, sql);
stmt.setString(7, antes);
stmt.setString(8, depois);
stmt.setString(9, campo);
stmt.execute();
stmt.close();
con.close();
} catch (SQLException ex) {
throw new AuditoriaException(ex);
}
}
/**
* Grava delete de um orçamento na auditoria
* @param resp usuário responsável
* @param cliente
* @param codSql SQL utilizado
* @throws AuditoriaException
*/
public static void cliente(Usuario resp, Cliente cliente, String codSql) throws AuditoriaException {
try {
tabela = ClsBD.getTblCliente();
acao = "delete";
descricao = resp.getNick() + " deletou o cliente " + cliente.getNome();
sql = codSql;
codDado = cliente.getId();
idLogin = resp.getId();
antes = "-"; //No caso de updates, como o campo era antes
depois = "-"; //No caso de updates, como o campo ficou no fim
campo = "-"; //Campo alterado
insereRegistro();
} catch (SQLException ex) {
throw new AuditoriaException(ex);
}
}
/**
* Retorna todos os registros de delete da auditoria
*
* @return
* @throws SQLException
*/
public static List cauditDel() throws SQLException {
List<Registro> registros = new ArrayList<>();
abreCon();
nomeTabela = ClsBD.getTblAuditoria();
String campos = ClsBD.getAudId() + ", " + ClsBD.getAudIdLogin() + ", " + ClsBD.getAudAcao() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudTabela() + ", " + ClsBD.getAudRef();
PreparedStatement stmt = con.prepareStatement("select " + campos + " from " + nomeTabela + " where " + ClsBD.getAudAcao() + " = 'delete'");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Registro registro = new Registro();
registro.setId(rs.getInt(ClsBD.getAudId()));
registro.setIdLogin(rs.getInt(ClsBD.getAudIdLogin()));
registro.setAcao(rs.getString(ClsBD.getAudAcao()));
registro.setDescricao(rs.getString(ClsBD.getAudDesc()));
registro.setData(rs.getTimestamp(ClsBD.getAudData()));
registro.setTabela(rs.getString(ClsBD.getAudTabela()));
registro.setIdDado(rs.getInt(ClsBD.getAudRef()));
registros.add(registro);
}
return registros;
}
/**
* Retorna todos os registros de delete da auditoria
*
* @return
* @throws SQLException
*/
public static List cauditDel(String nick) throws SQLException {
List<Registro> registros = new ArrayList<>();
Usuario usuario = UsuarioDAO.cusuarioNick(nick);
abreCon();
nomeTabela = ClsBD.getTblAuditoria();
String campos = ClsBD.getAudId() + ", " + ClsBD.getAudIdLogin() + ", " + ClsBD.getAudAcao() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudTabela() + ", " + ClsBD.getAudRef();
PreparedStatement stmt = con.prepareStatement("select " + campos + " from " + nomeTabela + " where " + ClsBD.getAudAcao() + " = 'delete'" + "and " + ClsBD.getAudIdLogin() + " = " + usuario.getId());
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Registro registro = new Registro();
registro.setId(rs.getInt(ClsBD.getAudId()));
registro.setIdLogin(rs.getInt(ClsBD.getAudIdLogin()));
registro.setAcao(rs.getString(ClsBD.getAudAcao()));
registro.setDescricao(rs.getString(ClsBD.getAudDesc()));
registro.setData(rs.getTimestamp(ClsBD.getAudData()));
registro.setTabela(rs.getString(ClsBD.getAudTabela()));
registro.setIdDado(rs.getInt(ClsBD.getAudRef()));
registros.add(registro);
}
return registros;
}
/**
* Consulta registros de exclusoes feitos no sistema nas últimas 24h
*
* @param nick do usuário a ser visualizado
* @return List com os registros encontrados
* @throws SQLException
*/
public static List vauditDel24h(String nick) throws SQLException {
List<Registro> registros = new ArrayList<>();
Usuario usuario = UsuarioDAO.cusuarioNick(nick);
con = ConexaoMySQL.getConexaoMySQL();
view = ClsBD.getViewAudit24h();
campos = ClsBD.getAudId() + ", " + ClsBD.getAudIdLogin() + ", " + ClsBD.getAudAcao() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudTabela() + ", " + ClsBD.getAudRef();
String sql = "select " + campos + " from " + view + " where " + ClsBD.getAudAcao() + " = 'delete' " + "and " + ClsBD.getAudIdLogin() + " = " + usuario.getId();
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Registro registro = new Registro();
registro.setId(rs.getInt(ClsBD.getAudId()));
registro.setIdLogin(rs.getInt(ClsBD.getAudIdLogin()));
registro.setAcao(rs.getString(ClsBD.getAudAcao()));
registro.setDescricao(rs.getString(ClsBD.getAudDesc()));
registro.setData(rs.getTimestamp(ClsBD.getAudData()));
registro.setTabela(rs.getString(ClsBD.getAudTabela()));
registro.setIdDado(rs.getInt(ClsBD.getAudRef()));
registros.add(registro);
}
stmt.close();
con.close();
return registros;
}
/**
* Consulta registros de exclusoes feitos no sistema nas últimas 24h
*
* @return List com os registros encontrados
* @throws SQLException
*/
public static List vauditDel24h() throws SQLException {
List<Registro> registros = new ArrayList<>();
con = ConexaoMySQL.getConexaoMySQL();
view = ClsBD.getViewAudit24h();
campos = ClsBD.getAudId() + ", " + ClsBD.getAudIdLogin() + ", " + ClsBD.getAudAcao() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudTabela() + ", " + ClsBD.getAudRef();
String sql = "select " + campos + " from " + view + " where " + ClsBD.getAudAcao() + " = 'delete'";
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Registro registro = new Registro();
registro.setId(rs.getInt(ClsBD.getAudId()));
registro.setIdLogin(rs.getInt(ClsBD.getAudIdLogin()));
registro.setAcao(rs.getString(ClsBD.getAudAcao()));
registro.setDescricao(rs.getString(ClsBD.getAudDesc()));
registro.setData(rs.getTimestamp(ClsBD.getAudData()));
registro.setTabela(rs.getString(ClsBD.getAudTabela()));
registro.setIdDado(rs.getInt(ClsBD.getAudRef()));
registros.add(registro);
}
stmt.close();
con.close();
return registros;
}
/**
* Consulta registros de exclusoes feitos nos últimos 7 dias
*
* @param nick do usuário a ser visualizado
* @return List com os registros encontrados
* @throws SQLException
*/
public static List vauditDel7d(String nick) throws SQLException {
List<Registro> registros = new ArrayList<>();
Usuario usuario = UsuarioDAO.cusuarioNick(nick);
con = ConexaoMySQL.getConexaoMySQL();
view = ClsBD.getViewAudit7d();
campos = ClsBD.getAudId() + ", " + ClsBD.getAudIdLogin() + ", " + ClsBD.getAudAcao() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudTabela() + ", " + ClsBD.getAudRef();
PreparedStatement stmt = con.prepareStatement("select " + campos + " from " + view + " where " + ClsBD.getAudAcao() + " = 'delete'" + "and " + ClsBD.getAudIdLogin() + " = " + usuario.getId());
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Registro registro = new Registro();
registro.setId(rs.getInt(ClsBD.getAudId()));
registro.setIdLogin(rs.getInt(ClsBD.getAudIdLogin()));
registro.setAcao(rs.getString(ClsBD.getAudAcao()));
registro.setDescricao(rs.getString(ClsBD.getAudDesc()));
registro.setData(rs.getTimestamp(ClsBD.getAudData()));
registro.setTabela(rs.getString(ClsBD.getAudTabela()));
registro.setIdDado(rs.getInt(ClsBD.getAudRef()));
registros.add(registro);
}
stmt.close();
con.close();
return registros;
}
/**
* Consulta registros de exclusoes feitos nos últimos 7 dias
*
* @return List com os registros encontrados
* @throws SQLException
*/
public static List vauditDel7d() throws SQLException {
List<Registro> registros = new ArrayList<>();
con = ConexaoMySQL.getConexaoMySQL();
view = ClsBD.getViewAudit7d();
campos = ClsBD.getAudId() + ", " + ClsBD.getAudIdLogin() + ", " + ClsBD.getAudAcao() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudTabela() + ", " + ClsBD.getAudRef();
PreparedStatement stmt = con.prepareStatement("select " + campos + " from " + view + " where " + ClsBD.getAudAcao() + " = 'delete'");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Registro registro = new Registro();
registro.setId(rs.getInt(ClsBD.getAudId()));
registro.setIdLogin(rs.getInt(ClsBD.getAudIdLogin()));
registro.setAcao(rs.getString(ClsBD.getAudAcao()));
registro.setDescricao(rs.getString(ClsBD.getAudDesc()));
registro.setData(rs.getTimestamp(ClsBD.getAudData()));
registro.setTabela(rs.getString(ClsBD.getAudTabela()));
registro.setIdDado(rs.getInt(ClsBD.getAudRef()));
registros.add(registro);
}
stmt.close();
con.close();
return registros;
}
/**
* Consulta registros de exclusoes feitos nos último mês
*
* @param nick do usuário a ser visualizado
* @return List com os registros encontrados
* @throws SQLException
*/
public static List vauditDel1m(String nick) throws SQLException {
List<Registro> registros = new ArrayList<>();
Usuario usuario = UsuarioDAO.cusuarioNick(nick);
con = ConexaoMySQL.getConexaoMySQL();
view = ClsBD.getViewAudit1m();
campos = ClsBD.getAudId() + ", " + ClsBD.getAudIdLogin() + ", " + ClsBD.getAudAcao() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudTabela() + ", " + ClsBD.getAudRef();
PreparedStatement stmt = con.prepareStatement("select " + campos + " from " + view + " where " + ClsBD.getAudAcao() + " = 'delete'" + "and " + ClsBD.getAudIdLogin() + " = " + usuario.getId());
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Registro registro = new Registro();
registro.setId(rs.getInt(ClsBD.getAudId()));
registro.setIdLogin(rs.getInt(ClsBD.getAudIdLogin()));
registro.setAcao(rs.getString(ClsBD.getAudAcao()));
registro.setDescricao(rs.getString(ClsBD.getAudDesc()));
registro.setData(rs.getTimestamp(ClsBD.getAudData()));
registro.setTabela(rs.getString(ClsBD.getAudTabela()));
registro.setIdDado(rs.getInt(ClsBD.getAudRef()));
registros.add(registro);
}
stmt.close();
con.close();
return registros;
}
/**
* Consulta registros de exclusoes feitos nos últimos 3 dias
*
* @param nick do usuário a ser visualizado
* @return List com os registros encontrados
* @throws SQLException
*/
public static List vauditDel3d(String nick) throws SQLException {
List<Registro> registros = new ArrayList<>();
Usuario usuario = UsuarioDAO.cusuarioNick(nick);
con = ConexaoMySQL.getConexaoMySQL();
view = ClsBD.getViewAudit3d();
campos = ClsBD.getAudId() + ", " + ClsBD.getAudIdLogin() + ", " + ClsBD.getAudAcao() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudTabela() + ", " + ClsBD.getAudRef();
PreparedStatement stmt = con.prepareStatement("select " + campos + " from " + view + " where " + ClsBD.getAudAcao() + " = 'delete'" + "and " + ClsBD.getAudIdLogin() + " = " + usuario.getId());
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Registro registro = new Registro();
registro.setId(rs.getInt(ClsBD.getAudId()));
registro.setIdLogin(rs.getInt(ClsBD.getAudIdLogin()));
registro.setAcao(rs.getString(ClsBD.getAudAcao()));
registro.setDescricao(rs.getString(ClsBD.getAudDesc()));
registro.setData(rs.getTimestamp(ClsBD.getAudData()));
registro.setTabela(rs.getString(ClsBD.getAudTabela()));
registro.setIdDado(rs.getInt(ClsBD.getAudRef()));
registros.add(registro);
}
stmt.close();
con.close();
return registros;
}
/**
* Consulta registros de exclusoes feitos nos último mês
*
* @return List com os registros encontrados
* @throws SQLException
*/
public static List vauditDel1m() throws SQLException {
List<Registro> registros = new ArrayList<>();
con = ConexaoMySQL.getConexaoMySQL();
view = ClsBD.getViewAudit1m();
campos = ClsBD.getAudId() + ", " + ClsBD.getAudIdLogin() + ", " + ClsBD.getAudAcao() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudTabela() + ", " + ClsBD.getAudRef();
PreparedStatement stmt = con.prepareStatement("select " + campos + " from " + view + " where " + ClsBD.getAudAcao() + " = 'delete'");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Registro registro = new Registro();
registro.setId(rs.getInt(ClsBD.getAudId()));
registro.setIdLogin(rs.getInt(ClsBD.getAudIdLogin()));
registro.setAcao(rs.getString(ClsBD.getAudAcao()));
registro.setDescricao(rs.getString(ClsBD.getAudDesc()));
registro.setData(rs.getTimestamp(ClsBD.getAudData()));
registro.setTabela(rs.getString(ClsBD.getAudTabela()));
registro.setIdDado(rs.getInt(ClsBD.getAudRef()));
registros.add(registro);
}
stmt.close();
con.close();
return registros;
}
/**
* Consulta registros de exclusoes feitos nos últimos 3 dias
*
* @return List com os registros encontrados
* @throws SQLException
*/
public static List vauditDel3d() throws SQLException {
List<Registro> registros = new ArrayList<>();
con = ConexaoMySQL.getConexaoMySQL();
view = ClsBD.getViewAudit3d();
campos = ClsBD.getAudId() + ", " + ClsBD.getAudIdLogin() + ", " + ClsBD.getAudAcao() + ", " + ClsBD.getAudDesc() + ", " + ClsBD.getAudData() + ", " + ClsBD.getAudTabela() + ", " + ClsBD.getAudRef();
PreparedStatement stmt = con.prepareStatement("select " + campos + " from " + view + " where " + ClsBD.getAudAcao() + " = 'delete'");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Registro registro = new Registro();
registro.setId(rs.getInt(ClsBD.getAudId()));
registro.setIdLogin(rs.getInt(ClsBD.getAudIdLogin()));
registro.setAcao(rs.getString(ClsBD.getAudAcao()));
registro.setDescricao(rs.getString(ClsBD.getAudDesc()));
registro.setData(rs.getTimestamp(ClsBD.getAudData()));
registro.setTabela(rs.getString(ClsBD.getAudTabela()));
registro.setIdDado(rs.getInt(ClsBD.getAudRef()));
registros.add(registro);
}
stmt.close();
con.close();
return registros;
}
}