bug#20776
dev:wilian qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/Outros/Auditador/trunk@104211 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
97e0cd98d2
commit
89ea4fae2d
|
@ -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";
|
||||
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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<AuditadorObjects> auditar(Object original, Object novo) {
|
||||
List<AuditadorObjects> lsRetorno = new ArrayList<AuditadorObjects>();
|
||||
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<AuditadorObjects> auditarList(Object objeto, String nomeCampoListAuditar, List<Object> original, List<Object> novo) {
|
||||
List<AuditadorObjects> lsRetorno = new ArrayList<AuditadorObjects>();
|
||||
try {
|
||||
|
@ -101,6 +123,12 @@ public class Auditador {
|
|||
return lsRetorno;
|
||||
}
|
||||
|
||||
/**
|
||||
* Responsável por auditar quando o objeto é excluído.
|
||||
*
|
||||
* @param objeto
|
||||
* @return
|
||||
*/
|
||||
public List<AuditadorObjects> auditarExclusao(Object objeto) {
|
||||
try {
|
||||
List<AuditadorObjects> lsRetorno = new ArrayList<AuditadorObjects>();
|
||||
|
@ -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()));
|
||||
|
|
|
@ -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 <T>
|
||||
*/
|
||||
public interface Auditavel<T> 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();
|
||||
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue