From 09d96d173cee45b740506d2c72ff190203606da3 Mon Sep 17 00:00:00 2001 From: "eduardo.dicarde" Date: Fri, 10 Mar 2017 20:44:13 +0000 Subject: [PATCH] fixes bug #0008366 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@66693 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../AuditModuleDetailController.java | 38 ++ .../seguridad/AuditoriaController.java | 450 ++++++++++++++++++ .../menu/DefaultItemMenuSistema.java | 14 +- .../item/seguridad/ItemMenuAuditoria.java | 25 + .../utilerias/menu/menu_original.properties | 1 + .../web/utilerias/render/RenderAudit.java | 45 ++ .../render/RenderAuditModuleDetail.java | 33 ++ .../utilerias/render/RenderEntityDetail.java | 59 +++ web/gui/seguridad/auditModuleDetail.zul | 24 + web/gui/seguridad/auditoria.zul | 113 +++++ 10 files changed, 801 insertions(+), 1 deletion(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/AuditModuleDetailController.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/AuditoriaController.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/seguridad/ItemMenuAuditoria.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderAudit.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderAuditModuleDetail.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderEntityDetail.java create mode 100644 web/gui/seguridad/auditModuleDetail.zul create mode 100644 web/gui/seguridad/auditoria.zul diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/AuditModuleDetailController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/AuditModuleDetailController.java new file mode 100644 index 000000000..acade66f9 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/AuditModuleDetailController.java @@ -0,0 +1,38 @@ +/* +O * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.rjconsultores.ventaboletos.web.gui.controladores.seguridad; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; +import org.zkoss.zul.Textbox; + +import com.rjconsultores.ventaboletos.auditoria.AuditControl; +import com.rjconsultores.ventaboletos.entidad.AuditLog; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; + +@Controller("auditModuleDetailController") +@Scope("prototype") +public class AuditModuleDetailController extends MyGenericForwardComposer { + + private static final long serialVersionUID = 1L; + + private Textbox txtEntityJson; + + @Override + public void doAfterCompose(Component comp) throws Exception { + + super.doAfterCompose(comp); + + AuditLog auditLog = (AuditLog) Executions.getCurrent().getArg().get("auditLog"); + + Class clazz = Class.forName("com.rjconsultores.ventaboletos.entidad.".concat(auditLog.getEntityName())); + + Object clazzJson = AuditControl.getGson().fromJson(auditLog.getEntityDetail(), clazz); + + txtEntityJson.setValue(AuditControl.formatJson(clazzJson, true)); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/AuditoriaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/AuditoriaController.java new file mode 100644 index 000000000..419a6ee5b --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/AuditoriaController.java @@ -0,0 +1,450 @@ +/* + * and open the template in the editor. + */ +package com.rjconsultores.ventaboletos.web.gui.controladores.seguridad; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Messagebox; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zul.Combobox; +import org.zkoss.zul.Comboitem; +import org.zkoss.zul.Paging; +import org.zkoss.zul.Textbox; +import org.zkoss.zul.api.Datebox; + +import com.google.gson.Gson; +import com.rjconsultores.ventaboletos.auditoria.AuditControl; +import com.rjconsultores.ventaboletos.entidad.AuditLog; +import com.rjconsultores.ventaboletos.entidad.AuditModule; +import com.rjconsultores.ventaboletos.entidad.AuditService; +import com.rjconsultores.ventaboletos.entidad.Sistema; +import com.rjconsultores.ventaboletos.enums.auditoria.EnumAuditAction; +import com.rjconsultores.ventaboletos.service.AuditLogService; +import com.rjconsultores.ventaboletos.service.AuditModuleService; +import com.rjconsultores.ventaboletos.service.SistemaService; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderAudit; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEntityDetail; + +/** + * + * @author eduardo + */ +@Controller("auditoriaController") +@Scope("prototype") +public class AuditoriaController extends MyGenericForwardComposer { + + private static final long serialVersionUID = 1L; + + @Autowired + private AuditModuleService auditModuleService; + + @Autowired + private SistemaService sistemaService; + + @Autowired + private AuditLogService auditLogService; + + private List lsModulo; + private List lsAmbiente; + private List lsAcao; + + private Combobox cmbModulo; + private Combobox cmbAmbiente; + private Combobox cmbAcao; + + private Datebox dtDataInicial; + private Datebox dtDataFinal; + + private Textbox txtMdUsuario; + private Textbox txtMdCustom; + + private MyListbox auditoriaList; + private MyListbox auditoriaModelDetailList; + + @Autowired + private transient PagedListWrapper plwAuditoria; + + private Paging pagingAudit; + private Paging pagingModuleDetail; + + @Override + public void doAfterCompose(Component comp) throws Exception { + + lsModulo = new ArrayList(); + AuditModule modulo = new AuditModule(); + modulo.setNameModule("Todos"); + + lsModulo.add(modulo); + lsModulo.addAll(auditModuleService.obtenerTodos()); + + lsAmbiente = new ArrayList(); + Sistema sistemaTodos = new Sistema(); + sistemaTodos.setNombsistema("TODOS"); + + lsAmbiente.add(sistemaTodos); + lsAmbiente.addAll(sistemaService.obtenerTodos()); + + lsAcao = obterAcoes(); + + super.doAfterCompose(comp); + + auditoriaList.setItemRenderer(new RenderAudit()); + auditoriaList.addEventListener("onDoubleClick", new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + verDetalhesModulo(auditoriaList.getSelected()); + } + }); + + auditoriaModelDetailList.setItemRenderer(new RenderEntityDetail()); + auditoriaModelDetailList.addEventListener("onDoubleClick", new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + verDetalhesModulo(auditoriaModelDetailList.getSelected()); + } + }); + + refreshLista(); + } + + public void onClick$btnPesquisa(Event ev) { + if ((txtMdCustom.getValue() == null || txtMdCustom.getValue().isEmpty()) && + (txtMdUsuario.getValue() == null || txtMdUsuario.getValue().isEmpty())) { + refreshLista(); + } else { + + gerarLogModelDetail(); + } + } + + public Paging getPagingAudit() { + return pagingAudit; + } + + public void setPagingAudit(Paging pagingAudit) { + this.pagingAudit = pagingAudit; + } + + public Combobox getCmbModulo() { + return cmbModulo; + } + + public void setCmbModulo(Combobox cmbModulo) { + this.cmbModulo = cmbModulo; + } + + public List getLsModulo() { + return lsModulo; + } + + public void setLsModulo(List lsModulo) { + this.lsModulo = lsModulo; + } + + public MyListbox getAuditoriaList() { + return auditoriaList; + } + + public void setAuditoriaList(MyListbox auditoriaList) { + this.auditoriaList = auditoriaList; + } + + public List getLsAmbiente() { + return lsAmbiente; + } + + public void setLsAmbiente(List lsAmbiente) { + this.lsAmbiente = lsAmbiente; + } + + public Combobox getCmbAmbiente() { + return cmbAmbiente; + } + + public void setCmbAmbiente(Combobox cmbAmbiente) { + this.cmbAmbiente = cmbAmbiente; + } + + public Combobox getCmbAcao() { + return cmbAcao; + } + + public void setCmbAcao(Combobox cmbAcao) { + this.cmbAcao = cmbAcao; + } + + public List getLsAcao() { + return lsAcao; + } + + public void setLsAcao(List lsAcao) { + this.lsAcao = lsAcao; + } + + public Paging getPagingModuleDetail() { + return pagingModuleDetail; + } + + public void setPagingModuleDetail(Paging pagingModuleDetail) { + this.pagingModuleDetail = pagingModuleDetail; + } + + private void refreshLista() { + + auditoriaList.setVisible(true); + auditoriaModelDetailList.setVisible(false); + + HibernateSearchObject auditBusqueda = new HibernateSearchObject(AuditLog.class, + pagingAudit.getPageSize()); + + Comboitem cbiModulo = cmbModulo.getSelectedItem(); + if (cbiModulo != null) { + AuditModule module = (AuditModule) cbiModulo.getValue(); + + if (module.getAuditModuleId() != null) { + auditBusqueda.addFilterEqual("service.module", module); + } + } + + Date dataInicial = dtDataInicial.getValue(); + if (dataInicial != null) { + auditBusqueda.addFilterGreaterOrEqual("createDate", dataInicial); + } + + Date dataFinal = dtDataFinal.getValue(); + if (dataFinal != null) { + auditBusqueda.addFilterLessOrEqual("createDate", dataFinal); + } + + Comboitem cbiAmbiente = cmbAmbiente.getSelectedItem(); + + if (cbiAmbiente != null) { + Sistema sistema = (Sistema) cbiAmbiente.getValue(); + + if (sistema.getNombsistema().equals("DIGITACAO")) { + try { + Messagebox.show("A auditoria não está habilitada para o sistema " + sistema.getNombsistema(), + Labels.getLabel("auditoriaController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + + } catch (InterruptedException e) { + } + + return; + } + + if (sistema.getSistemaId() != null) { + auditBusqueda.addFilterEqual("sistema", sistema); + } + } + + Comboitem cbiAcao = cmbAcao.getSelectedItem(); + if (cbiAcao != null) { + EnumAuditAction action = (EnumAuditAction) cbiAcao.getValue(); + if (action != EnumAuditAction.TODOS) { + auditBusqueda.addFilterEqual("action", action.getId()); + } + } + + plwAuditoria.init(auditBusqueda, auditoriaList, pagingAudit); + + if (auditoriaList.getData().length == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("auditoriaController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + + } catch (InterruptedException ex) { + } + } + } + + @SuppressWarnings("unchecked") + private void verDetalhesModulo(Object auditLog) { + if (auditLog == null) { + return; + } + + @SuppressWarnings("rawtypes") + Map args = new HashMap(); + args.put("auditLog", auditLog); + + openWindow("/gui/seguridad/auditModuleDetail.zul", + Labels.getLabel("auditModuleDetailController.window.title"), args, MODAL); + + } + + private void gerarLogModelDetail() { + + auditoriaList.setVisible(false); + auditoriaModelDetailList.setVisible(true); + + AuditLog auditLog = new AuditLog(); + AuditModule module = null; + + Comboitem cbiModulo = cmbModulo.getSelectedItem(); + if (cbiModulo != null) { + module = (AuditModule) cbiModulo.getValue(); + + if (module.getAuditModuleId() != null) { + AuditService service = new AuditService(); + service.setModule(module); + } + } + + Date dataInicio = dtDataInicial.getValue(); + Date dataFim = dtDataFinal.getValue(); + + if (dataInicio != null && dataFim != null) { + auditLog.setDataInicio(dataInicio); + auditLog.setDataFim(dataFim); + } + + Comboitem cbiAmbiente = cmbAmbiente.getSelectedItem(); + + if (cbiAmbiente != null) { + Sistema sistema = (Sistema) cbiAmbiente.getValue(); + + if (sistema.getNombsistema().equals("DIGITACAO")) { + try { + Messagebox.show("A auditoria não está habilitada para o sistema " + sistema.getNombsistema(), + Labels.getLabel("auditoriaController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + + } catch (InterruptedException e) { + } + + return; + } + + if (sistema.getSistemaId() != null) { + auditLog.setSistema(sistema); + } + } + + Comboitem cbiAcao = cmbAcao.getSelectedItem(); + if (cbiAcao != null) { + EnumAuditAction action = (EnumAuditAction) cbiAcao.getValue(); + if (action != EnumAuditAction.TODOS) { + auditLog.setAction(action.getId()); + } + } + + List logs = auditLogService.filtrarLog(auditLog); + + if (logs == null || logs.size() == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("auditoriaController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + + } catch (InterruptedException ex) { + } + + return; + } + + if (!txtMdUsuario.getValue().isEmpty()) { + Integer userId = Integer.parseInt(txtMdUsuario.getValue()); + + logs = recuperarUserLogs(logs, userId); + } + + if (!txtMdCustom.getValue().isEmpty()) { + logs = recuperarCustomLogs(logs, txtMdCustom.getValue()); + } + + if (logs.size() == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("auditoriaController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + + } catch (InterruptedException ex) { + log.info(ex.getStackTrace()); + } + } + + pagingModuleDetail.setTotalSize(logs.size()); + auditoriaModelDetailList.setData(logs); + + } + + public void onClick$btnRefresh(Event ev) { + refreshLista(); + } + + private List obterAcoes() { + List lsAcao = new ArrayList(); + lsAcao.add(EnumAuditAction.TODOS); + lsAcao.add(EnumAuditAction.CRIACAO); + lsAcao.add(EnumAuditAction.ALTERACAO); + lsAcao.add(EnumAuditAction.EXCLUSAO); + + return lsAcao; + } + + private List recuperarUserLogs(List logs, Integer userId) { + Gson gson = AuditControl.getGson(); + List logsUser = new ArrayList(); + + try { + for (AuditLog auditLog : logs) { + Class clazz = Class.forName("com.rjconsultores.ventaboletos.entidad.".concat(auditLog.getEntityName())); + Object entity = gson.fromJson(auditLog.getEntityDetail(), clazz); + + for (Field field : entity.getClass().getDeclaredFields()) { + if (field.getName().equalsIgnoreCase("usuarioid")) { + field.setAccessible(true); + if (field.get(entity).equals(userId)) { + logsUser.add(auditLog); + } + + break; + } + } + } + } catch (ClassNotFoundException classNotFoundException) { + log.error(classNotFoundException.getStackTrace()); + } catch (SecurityException securityException) { + log.error(securityException.getStackTrace()); + } catch (IllegalArgumentException illegalArgumentException) { + log.error(illegalArgumentException.getStackTrace()); + } catch (IllegalAccessException illegalAccessException) { + log.error(illegalAccessException.getStackTrace()); + } + + return logsUser; + } + + private List recuperarCustomLogs(List logs, String param) { + + List logsCustom = new ArrayList(); + + for (AuditLog auditLog : logs) { + if (auditLog.getEntityDetail().contains(param)) { + logsCustom.add(auditLog); + } + + } + return logsCustom; + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/DefaultItemMenuSistema.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/DefaultItemMenuSistema.java index 8a64389f8..a1bcc179b 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/DefaultItemMenuSistema.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/DefaultItemMenuSistema.java @@ -3,8 +3,12 @@ package com.rjconsultores.ventaboletos.web.utilerias.menu; import java.util.HashMap; import java.util.Map; +import org.apache.log4j.Logger; +import org.jfree.util.Log; import org.zkoss.zk.ui.Desktop; +import com.rjconsultores.ventaboletos.auditoria.AuditManager; +import com.rjconsultores.ventaboletos.auditoria.interceptor.AuditInterceptor; import com.rjconsultores.ventaboletos.web.utilerias.menu.labellocator.MenuLabelLocator; import com.rjconsultores.ventaboletos.web.utilerias.menu.labellocator.ZKMenuLabelLocator; @@ -13,6 +17,7 @@ public class DefaultItemMenuSistema implements ItemMenuSistema { protected MenuLabelLocator menuLabelLocator; protected Desktop desktop; protected Boolean isReadOnly; + private static Logger log = Logger.getLogger(DefaultItemMenuSistema.class); public DefaultItemMenuSistema(String claveTraduccionMenu) { this.menuLabelLocator = ZKMenuLabelLocator.getInstance(); @@ -54,8 +59,15 @@ public class DefaultItemMenuSistema implements ItemMenuSistema { public Desktop getDesktop() { return desktop; } + @Override public Boolean getIsReadOnly() { + try { + AuditManager.getINSTANCE(getClaveMenu()).setCheckModuleAudit(Boolean.TRUE); + } catch (Exception exception) { + log.error(exception.getStackTrace()); + } + return isReadOnly; } @@ -70,5 +82,5 @@ public class DefaultItemMenuSistema implements ItemMenuSistema { map.put("isReadOnly", getIsReadOnly()); return map; } - + } diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/seguridad/ItemMenuAuditoria.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/seguridad/ItemMenuAuditoria.java new file mode 100644 index 000000000..acf9f1bf7 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/seguridad/ItemMenuAuditoria.java @@ -0,0 +1,25 @@ +package com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad; + +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria; +import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; + + +public class ItemMenuAuditoria extends DefaultItemMenuSistema { + public ItemMenuAuditoria() { + super("indexController.mniAuditoria.label"); + } + + @Override + public String getClaveMenu() { + return "COM.RJCONSULTORES.ADMINISTRACION.GUI.SEGURIDAD.MENU.AUDITORIA"; + } + + @Override + public void ejecutar() { + PantallaUtileria.openWindow("/gui/seguridad/auditoria.zul", + Labels.getLabel("auditoriaController.window.title"), getArgs(), desktop); + + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties index ed6a60df8..f5abd880f 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties @@ -190,6 +190,7 @@ seguridad.perfil=com.rjconsultores.ventaboletos.web.utilerias.menu.item.segurida seguridad.autorizacionPerfil=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuAutorizacionPerfil seguridad.usuario=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuUsuario seguridad.fiscalImpressora=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuFiscalImpressora +seguridad.auditoria=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuAuditoria pasajerofrecuente=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.MenuPasajeroFrecuente pasajerofrecuente.cliente=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.ItemMenuCliente pasajerofrecuente.importarClientes=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.ItemMenuImportarClientes diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderAudit.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderAudit.java new file mode 100644 index 000000000..aa5482cae --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderAudit.java @@ -0,0 +1,45 @@ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import java.text.SimpleDateFormat; + +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +import com.rjconsultores.ventaboletos.entidad.AuditLog; +import com.rjconsultores.ventaboletos.enums.auditoria.EnumAuditAction; + +public class RenderAudit implements ListitemRenderer { + + @Override + public void render(Listitem item, Object o) throws Exception { + + AuditLog auditLog = (AuditLog) o; + + Listcell lc = new Listcell(); + + SimpleDateFormat sdf = new SimpleDateFormat(); + sdf.applyPattern("dd/MM/yyyy"); + + lc = new Listcell(sdf.format(auditLog.getCreatedDate())); + + lc.setParent(item); + + lc = new Listcell(auditLog.getSistema().getNombsistema()); + lc.setParent(item); + + lc = new Listcell(auditLog.getService().getModule().getNameModule()); + lc.setParent(item); + + lc = new Listcell(EnumAuditAction.findAction(auditLog.getAction())); + lc.setParent(item); + + lc = new Listcell(auditLog.getEntityName()); + lc.setParent(item); + + lc = new Listcell(auditLog.getUsuario().getNombusuario()); + lc.setParent(item); + + item.setAttribute("data", auditLog); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderAuditModuleDetail.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderAuditModuleDetail.java new file mode 100644 index 000000000..611d231dd --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderAuditModuleDetail.java @@ -0,0 +1,33 @@ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import java.lang.reflect.Field; + +import javax.persistence.Column; +import javax.persistence.Id; + +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +public class RenderAuditModuleDetail implements ListitemRenderer { + + @Override + public void render(Listitem item, Object object) throws Exception { + + Listcell lc = null; + + for (Field field : object.getClass().getDeclaredFields()) { + + if (!field.isAnnotationPresent(Column.class) && !field.isAnnotationPresent(Id.class)) { + continue; + } + + field.setAccessible(true); + + String fieldValue = (field.get(object) == null ? "" : field.get(object)).toString(); + + lc = new Listcell(fieldValue); + lc.setParent(item); + } + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderEntityDetail.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderEntityDetail.java new file mode 100644 index 000000000..6bf9efa92 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderEntityDetail.java @@ -0,0 +1,59 @@ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import java.lang.reflect.Field; +import java.text.SimpleDateFormat; + +import javax.persistence.Id; + +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +import com.google.gson.Gson; +import com.rjconsultores.ventaboletos.auditoria.AuditControl; +import com.rjconsultores.ventaboletos.entidad.AuditLog; +import com.rjconsultores.ventaboletos.enums.auditoria.EnumAuditAction; + +public class RenderEntityDetail implements ListitemRenderer { + + @Override + public void render(Listitem item, Object object) throws Exception { + + AuditLog auditLog = (AuditLog) object; + Listcell lc = new Listcell(); + + Gson gson = AuditControl.getGson(); + Class clazz = Class.forName("com.rjconsultores.ventaboletos.entidad.".concat(auditLog.getEntityName())); + + Object clazzJson = gson.fromJson(auditLog.getEntityDetail(), clazz); + + for (Field field: clazzJson.getClass().getDeclaredFields()) { + + if (!field.isAnnotationPresent(Id.class)) { + continue; + } + + field.setAccessible(true); + + lc = new Listcell((field.get(clazzJson) == null ? "null" : field.get(clazzJson)).toString()); + lc.setParent(item); + + break; + } + + lc = new Listcell(auditLog.getUsuario().getNombusuario()); + lc.setParent(item); + + lc = new Listcell(auditLog.getSistema().getNombsistema()); + lc.setParent(item); + + SimpleDateFormat sdf = new SimpleDateFormat(); + sdf.applyPattern("dd/MM/yyyy"); + + lc = new Listcell(sdf.format(auditLog.getCreatedDate())); + lc.setParent(item); + + lc = new Listcell(EnumAuditAction.findAction(auditLog.getAction())); + lc.setParent(item); + } +} diff --git a/web/gui/seguridad/auditModuleDetail.zul b/web/gui/seguridad/auditModuleDetail.zul new file mode 100644 index 000000000..ea25a62f1 --- /dev/null +++ b/web/gui/seguridad/auditModuleDetail.zul @@ -0,0 +1,24 @@ + + + + + + + + + + +