From 6af3cce27fbd6f3448fa382d01f013c27eb7d491 Mon Sep 17 00:00:00 2001 From: alberto Date: Wed, 15 Mar 2017 14:41:15 +0000 Subject: [PATCH] =?UTF-8?q?P280=20-=20Auditoria=20altera=C3=A7=C3=B5es=20(?= =?UTF-8?q?issue=208366)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@66876 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../interceptor/AuditInterceptor.java | 123 +++++++++--------- 1 file changed, 63 insertions(+), 60 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/auditoria/interceptor/AuditInterceptor.java b/src/com/rjconsultores/ventaboletos/auditoria/interceptor/AuditInterceptor.java index 24e5bb48f..d628e92b3 100644 --- a/src/com/rjconsultores/ventaboletos/auditoria/interceptor/AuditInterceptor.java +++ b/src/com/rjconsultores/ventaboletos/auditoria/interceptor/AuditInterceptor.java @@ -32,10 +32,17 @@ public class AuditInterceptor extends EmptyInterceptor { @Override public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { + final SessionFactory sessionFactory = DBUtil.getInstance().getSessionFactory(); + final Session session = sessionFactory.openSession(); + try { - genAudit(entity, EnumAuditAction.CRIACAO); + genAudit(session, entity, EnumAuditAction.CRIACAO); } catch (Exception exception) { - log.error(exception.getStackTrace()); + log.error(exception.getMessage(), exception); + } + + if (session != null) { + session.close(); } return super.onSave(entity, id, state, propertyNames, types); @@ -43,81 +50,50 @@ public class AuditInterceptor extends EmptyInterceptor { @Override public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) { + final SessionFactory sessionFactory = DBUtil.getInstance().getSessionFactory(); + final Session session = sessionFactory.openSession(); + try { - genAudit(entity, EnumAuditAction.ALTERACAO); + genAudit(session, entity, EnumAuditAction.ALTERACAO); } catch (Exception exception) { - log.error(exception.getStackTrace()); + log.error(exception.getMessage(), exception); } + if (session != null) { + session.close(); + } + return super.onFlushDirty(entity, id, currentState, previousState, propertyNames, types); } @Override public void onDelete(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { + final SessionFactory sessionFactory = DBUtil.getInstance().getSessionFactory(); + final Session session = sessionFactory.openSession(); + try { - genAudit(entity, EnumAuditAction.EXCLUSAO); + genAudit(session, entity, EnumAuditAction.EXCLUSAO); } catch (Exception exception) { - log.error(exception.getStackTrace()); + log.error(exception.getMessage(), exception); + } + + if (session != null) { + session.close(); } super.onDelete(entity, id, state, propertyNames, types); } - private boolean getAuditModuleService() { - - Session session = null; - try { - if (!AuditManager.getINSTANCE().getCheckModuleAudit()) { - return AuditManager.getINSTANCE().getCurrentService() != null ? true : false; - } - - AuditService auditService = null; - - SessionFactory sessionFactory = DBUtil.getInstance().getSessionFactory(); - session = sessionFactory.openSession(); - - Criteria criteriaFuncionSistema = session.createCriteria(FuncionSistema.class); - criteriaFuncionSistema.add(Restrictions.eq("descruta", AuditManager.getINSTANCE().getCurrentActionService())); - FuncionSistema funcionSistema = (FuncionSistema) criteriaFuncionSistema.uniqueResult(); - - if (funcionSistema == null) { - Log.info("Função sistema " + funcionSistema + " não encontrada na base de dados."); - AuditManager.getINSTANCE().setCurrentService(auditService); - return false; - } - - Criteria criteriaService = session.createCriteria(AuditService.class); - criteriaService.add(Restrictions.eq("funcionSistema", funcionSistema)); - auditService = (AuditService) criteriaService.uniqueResult(); - - if (auditService == null) { - return false; - } - - AuditManager.getINSTANCE().setCurrentService(auditService); - AuditManager.getINSTANCE().setCheckModuleAudit(Boolean.FALSE); - - return true; - - } finally { - if (session != null) - session.close(); - } - } - - private void genAudit(Object entity, EnumAuditAction action) { - if (!getAuditModuleService()) { + private void genAudit(final Session session, Object entity, EnumAuditAction action) { + if (!getAuditModuleService(session)) { return; } - Session session = null; - try { /** * Ignorado caso a entidade for de auditoria e se não for encontrado o módulo no banco */ if (!(entity instanceof AuditLog)) { - AuditService service = AuditManager.getINSTANCE().getCurrentService(); if (!(entity instanceof AuditLog) && service != null && service.getModule() != null) { @@ -138,9 +114,6 @@ public class AuditInterceptor extends EmptyInterceptor { audit.setAction(action.getId()); audit.setUsuario(UsuarioLogado.getUsuarioLogado()); - SessionFactory sessionFactory = DBUtil.getInstance().getSessionFactory(); - session = sessionFactory.openSession(); - session.persist(audit); session.flush(); } @@ -148,10 +121,40 @@ public class AuditInterceptor extends EmptyInterceptor { } } catch (Exception exception) { - log.error(exception.getStackTrace()); - } finally { - if (session != null) - session.close(); + log.error(exception.getMessage(), exception); + } } + + private boolean getAuditModuleService(final Session session) { + if (!AuditManager.getINSTANCE().getCheckModuleAudit()) { + return AuditManager.getINSTANCE().getCurrentService() != null ? true : false; + } + + AuditService auditService = null; + + Criteria criteriaFuncionSistema = session.createCriteria(FuncionSistema.class); + criteriaFuncionSistema.add(Restrictions.eq("descruta", AuditManager.getINSTANCE().getCurrentActionService())); + FuncionSistema funcionSistema = (FuncionSistema) criteriaFuncionSistema.uniqueResult(); + + if (funcionSistema == null) { + Log.info("Função sistema " + funcionSistema + " não encontrada na base de dados."); + AuditManager.getINSTANCE().setCurrentService(auditService); + + return false; + } + + Criteria criteriaService = session.createCriteria(AuditService.class); + criteriaService.add(Restrictions.eq("funcionSistema", funcionSistema)); + auditService = (AuditService) criteriaService.uniqueResult(); + + if (auditService == null) { + return false; + } + + AuditManager.getINSTANCE().setCurrentService(auditService); + AuditManager.getINSTANCE().setCheckModuleAudit(Boolean.FALSE); + + return true; + } }