From 89ea4fae2d8267c6e8096a77da548ecd581637b3 Mon Sep 17 00:00:00 2001 From: wilian Date: Tue, 10 Nov 2020 02:14:56 +0000 Subject: [PATCH] bug#20776 dev:wilian qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/Outros/Auditador/trunk@104211 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../annotations/AuditarAtributo.java | 15 +++++++++- .../auditador/annotations/AuditarClasse.java | 17 +++++++++++ .../annotations/AuditarEntidade.java | 10 ++++++- .../auditador/annotations/AuditarID.java | 6 ++++ .../auditador/annotations/AuditarLista.java | 14 +++++++++ .../auditador/annotations/NaoAuditar.java | 6 ++++ .../auditador/auditadores/Auditador.java | 30 ++++++++++++++++++- .../auditador/interfaces/Auditavel.java | 22 ++++++++++++++ .../interfaces/AuditavelTelaAlternativa.java | 11 +++++++ 9 files changed, 128 insertions(+), 3 deletions(-) diff --git a/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarAtributo.java b/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarAtributo.java index 0f9dd7381..27b3a81ce 100644 --- a/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarAtributo.java +++ b/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarAtributo.java @@ -5,11 +5,24 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * Anotação utilizada para atributos. + * + * @author wilian + * + */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface AuditarAtributo { + /** + * Caso seja necessário colocar um nome amigável para o atributo, senão for informado o padrão será o nome do atributo da classe. + */ String nome() default ""; - String pattern() default ""; + + /** + * Em caso de um atributo do tipo "DATE", informar o formato da data, valor padrão: "dd/MM/yyyy HH:mm" + */ + String pattern() default "dd/MM/yyyy HH:mm"; } diff --git a/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarClasse.java b/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarClasse.java index 3211c6b90..22ae6320c 100644 --- a/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarClasse.java +++ b/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarClasse.java @@ -5,12 +5,29 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * Anotação responsável por indicar que a classe será auditada. + * + * @author wilian + * + */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface AuditarClasse { + /** + * Caso seja necessário colocar um nome amigável para a classe, senão for informado o padrão será o nome da classe. + */ String nome(); + + /** + * Quando a classe possuir o campo que indica a empresa. + */ String campoEmpresa() default ""; + + /** + * Atributo para indicar qual tela que o objeto será auditado. + */ String tela(); } diff --git a/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarEntidade.java b/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarEntidade.java index b6fda7ae8..48c698a02 100644 --- a/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarEntidade.java +++ b/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarEntidade.java @@ -5,11 +5,19 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * Anotação responsável que indicará que o atributo é uma entidade e seus atributos deverão ser auditados individualmente. + * + * @author wilian + * + */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface AuditarEntidade { + /** + * Caso seja necessário colocar um nome amigável para o atributo, senão for informado o padrão será o nome do atributo da classe. + */ String nome() default ""; - boolean auditarCampos() default false; } diff --git a/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarID.java b/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarID.java index 1b40ab82f..2e3c4e86c 100644 --- a/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarID.java +++ b/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarID.java @@ -5,6 +5,12 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * Anotação responsável para indicar qual o atributo que representa a chave primária da classe. + * + * @author wilian + * + */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface AuditarID { diff --git a/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarLista.java b/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarLista.java index f0710b180..88c9a95e9 100644 --- a/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarLista.java +++ b/src/main/java/br/com/rjconsultores/auditador/annotations/AuditarLista.java @@ -5,11 +5,25 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * Anotação responsável para auditar o campos que são listas. + * + * @author wilian + * + */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface AuditarLista { + /** + * Caso seja necessário colocar um nome amigável para o atributo, senão for informado o padrão será o nome do atributo da classe. + */ String nome() default ""; + + /** + * Indica que os atributos da lista são entidades e precisam ser auditados individualmente. O padrão é comparar apenas se os itens da lista foram removidos ou adicionados. + * @return + */ boolean auditarEntidades() default false; } diff --git a/src/main/java/br/com/rjconsultores/auditador/annotations/NaoAuditar.java b/src/main/java/br/com/rjconsultores/auditador/annotations/NaoAuditar.java index 9136cbf03..cd5868cb4 100644 --- a/src/main/java/br/com/rjconsultores/auditador/annotations/NaoAuditar.java +++ b/src/main/java/br/com/rjconsultores/auditador/annotations/NaoAuditar.java @@ -5,6 +5,12 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * Anotação responsável para indicar que o atributo não deverá ser auditado, por padrão todos os atributos da classe são auditados. + * + * @author wilian + * + */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface NaoAuditar { diff --git a/src/main/java/br/com/rjconsultores/auditador/auditadores/Auditador.java b/src/main/java/br/com/rjconsultores/auditador/auditadores/Auditador.java index 21ed54d05..57c1a37b7 100644 --- a/src/main/java/br/com/rjconsultores/auditador/auditadores/Auditador.java +++ b/src/main/java/br/com/rjconsultores/auditador/auditadores/Auditador.java @@ -25,6 +25,12 @@ import br.com.rjconsultores.auditador.interfaces.Auditavel; import br.com.rjconsultores.auditador.interfaces.AuditavelTelaAlternativa; import br.com.rjconsultores.auditador.model.AuditadorObjects; +/** + * Classe responsável para listar as alterações do objeto. + * + * @author wilian + * + */ public class Auditador { AuditadorAtributo auditadorAtributo; @@ -47,6 +53,13 @@ public class Auditador { return auditar; } + /** + * Responsável por auditar os registros. + * + * @param original + * @param novo + * @return + */ public List auditar(Object original, Object novo) { List lsRetorno = new ArrayList(); try { @@ -70,6 +83,15 @@ public class Auditador { } } + /** + * Responsável por auditar a lista quando a alteração acontece exclusivamente nos atributos lista do objeto + * + * @param objeto + * @param nomeCampoListAuditar + * @param original + * @param novo + * @return + */ public List auditarList(Object objeto, String nomeCampoListAuditar, List original, List novo) { List lsRetorno = new ArrayList(); try { @@ -101,6 +123,12 @@ public class Auditador { return lsRetorno; } + /** + * Responsável por auditar quando o objeto é excluído. + * + * @param objeto + * @return + */ public List auditarExclusao(Object objeto) { try { List lsRetorno = new ArrayList(); @@ -215,7 +243,7 @@ public class Auditador { AuditarEntidade auditarEntidade = extrairAnotacao.extrairAuditarEntidade(campo); AuditarLista auditarLista = extrairAnotacao.extrairAuditarLista(campo); - if(auditarEntidade != null && auditarEntidade.auditarCampos()) { + if(auditarEntidade != null) { lsRetorno.addAll(auditadorEntidade.auditar(campo, original, novo, null)); } else if(auditarLista != null) { lsRetorno.addAll(auditadorList.auditar(campo, original, novo, auditarLista.auditarEntidades())); diff --git a/src/main/java/br/com/rjconsultores/auditador/interfaces/Auditavel.java b/src/main/java/br/com/rjconsultores/auditador/interfaces/Auditavel.java index 4d52787e4..a21d4760f 100644 --- a/src/main/java/br/com/rjconsultores/auditador/interfaces/Auditavel.java +++ b/src/main/java/br/com/rjconsultores/auditador/interfaces/Auditavel.java @@ -1,11 +1,33 @@ package br.com.rjconsultores.auditador.interfaces; +/** + * Interface que deverá ser implementada quando o objeto for auditado, interface estende a interface Cloneable. + * + * @author wilian + * + * @param + */ public interface Auditavel extends Cloneable { + /** + * Método deverá ser implementado com o recurso de clonagem da Interface Cloneable. Executa o processo de clonagem do objeto para ser comparado com o alterado, executar esse método logo após recuperar o objeto do banco de dados. + * + * @throws CloneNotSupportedException + */ public void clonar() throws CloneNotSupportedException; + /** + * Após executar o método "clonar" retorna o objeto clonado. + * + * @return + * @throws CloneNotSupportedException + */ public T getCloneObject() throws CloneNotSupportedException; + /** + * Método que descreve informações do objeto quando o registro é criado/incluído/excluído. + * @return + */ public String getTextoInclusaoExclusao(); } diff --git a/src/main/java/br/com/rjconsultores/auditador/interfaces/AuditavelTelaAlternativa.java b/src/main/java/br/com/rjconsultores/auditador/interfaces/AuditavelTelaAlternativa.java index 978ed5f86..24a01d879 100644 --- a/src/main/java/br/com/rjconsultores/auditador/interfaces/AuditavelTelaAlternativa.java +++ b/src/main/java/br/com/rjconsultores/auditador/interfaces/AuditavelTelaAlternativa.java @@ -1,7 +1,18 @@ package br.com.rjconsultores.auditador.interfaces; +/** + * Interface que permite informar uma tela alternativa para auditoria do objeto quando o mesmo é alterado em telas diferentes. + * + * @author wilian + * + */ public interface AuditavelTelaAlternativa { + /** + * Quando o objeto auditado implementar a interface, o valor do retorno desse método será priorizado. + * + * @return + */ public String getTelaAlternativa(); }