From e1ca30e4f9f6b28bbfaea93bb91af2897d2d1e0f Mon Sep 17 00:00:00 2001 From: wilian Date: Tue, 10 Nov 2020 22:56:13 +0000 Subject: [PATCH] fixes bug#20776 fixes bug#20777 dev:wilian qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@104232 d1611594-4594-4d17-8e1d-87c2c4800839 --- pom.xml | 11 + .../ventaboletos/dao/LogAuditoriaDAO.java | 11 + .../hibernate/LogAuditoriaHibernateDAO.java | 30 +++ .../ventaboletos/entidad/Autobus.java | 30 ++- .../ventaboletos/entidad/ClaseServicio.java | 34 ++- .../ventaboletos/entidad/Division.java | 35 ++- .../ventaboletos/entidad/Empresa.java | 29 ++- .../ventaboletos/entidad/EsquemaAsiento.java | 36 +++- .../ventaboletos/entidad/EsquemaCorrida.java | 167 ++++++++++++++- .../EsquemaCorridaEmbarqueDesembarque.java | 62 +++++- .../entidad/EsquemaOperacional.java | 47 +++- .../ventaboletos/entidad/EsquemaTramo.java | 40 +++- .../ventaboletos/entidad/LogAuditoria.java | 200 ++++++++++++++++++ .../ventaboletos/entidad/Marca.java | 32 ++- .../ventaboletos/entidad/Parada.java | 30 ++- .../ventaboletos/entidad/RolOperativo.java | 32 ++- .../ventaboletos/entidad/Ruta.java | 25 ++- .../ventaboletos/entidad/Tarifa.java | 103 ++++++++- .../ventaboletos/entidad/TarifaOficial.java | 86 +++++++- .../service/LogAuditoriaService.java | 19 ++ .../impl/EsquemaCorridaServiceImpl.java | 169 ++++++++++----- .../service/impl/LogAuditoriaServiceImpl.java | 134 ++++++++++++ .../impl/TarifaOficialServiceImpl.java | 24 ++- .../service/impl/TarifaServiceImpl.java | 92 +++++--- 24 files changed, 1360 insertions(+), 118 deletions(-) create mode 100644 src/com/rjconsultores/ventaboletos/dao/LogAuditoriaDAO.java create mode 100644 src/com/rjconsultores/ventaboletos/dao/hibernate/LogAuditoriaHibernateDAO.java create mode 100644 src/com/rjconsultores/ventaboletos/entidad/LogAuditoria.java create mode 100644 src/com/rjconsultores/ventaboletos/service/LogAuditoriaService.java create mode 100644 src/com/rjconsultores/ventaboletos/service/impl/LogAuditoriaServiceImpl.java diff --git a/pom.xml b/pom.xml index eb052760c..8801078b9 100644 --- a/pom.xml +++ b/pom.xml @@ -306,6 +306,17 @@ jboss-logging 3.0.0.GA + + br.com.rjconsultores + Auditador + 0.0.1-SNAPSHOT + + + commons-lang + commons-lang + + + src diff --git a/src/com/rjconsultores/ventaboletos/dao/LogAuditoriaDAO.java b/src/com/rjconsultores/ventaboletos/dao/LogAuditoriaDAO.java new file mode 100644 index 000000000..168fb8510 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/LogAuditoriaDAO.java @@ -0,0 +1,11 @@ +package com.rjconsultores.ventaboletos.dao; + +import java.util.List; + +import com.rjconsultores.ventaboletos.entidad.LogAuditoria; + +public interface LogAuditoriaDAO extends GenericDAO { + + public List listarTodasAsTelas(); + +} diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/LogAuditoriaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/LogAuditoriaHibernateDAO.java new file mode 100644 index 000000000..1b6fbd940 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/LogAuditoriaHibernateDAO.java @@ -0,0 +1,30 @@ +package com.rjconsultores.ventaboletos.dao.hibernate; + +import java.util.List; + +import org.hibernate.Query; +import org.hibernate.SessionFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Repository; + +import com.rjconsultores.ventaboletos.dao.LogAuditoriaDAO; +import com.rjconsultores.ventaboletos.entidad.LogAuditoria; + +@Repository("LogAuditoriaDAO") +public class LogAuditoriaHibernateDAO extends GenericHibernateDAO implements LogAuditoriaDAO { + + @Autowired + public LogAuditoriaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); + } + + @Override + @SuppressWarnings("unchecked") + public List listarTodasAsTelas() { + Query query = getSession().createSQLQuery("select tela from log_auditoria where activo = 1 group by tela"); + List lista = query.list(); + return lista; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/entidad/Autobus.java b/src/com/rjconsultores/ventaboletos/entidad/Autobus.java index e84736dd8..9003969a9 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Autobus.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Autobus.java @@ -22,6 +22,10 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; /** * @@ -30,7 +34,7 @@ import javax.persistence.TemporalType; @Entity @SequenceGenerator(name = "AUTOBUS_SEQ", sequenceName = "AUTOBUS_SEQ", allocationSize = 1) @Table(name = "AUTOBUS") -public class Autobus implements Serializable { +public class Autobus implements Serializable, Auditavel { private static final long serialVersionUID = 1L; @Id @@ -38,6 +42,7 @@ public class Autobus implements Serializable { @Column(name = "AUTOBUS_ID") @GeneratedValue(strategy = GenerationType.AUTO, generator = "AUTOBUS_SEQ") private Integer autobusId; + @Column(name = "NUMAUTOBUS") private String numautobus; @Column(name = "CANTPARADOS") @@ -87,6 +92,10 @@ public class Autobus implements Serializable { private List autobusDocList; @Column(name = "NUMVAGON") private String numvagon; + + @Transient + @NaoAuditar + private Autobus autobusClone; public Autobus() { } @@ -242,7 +251,7 @@ public class Autobus implements Serializable { @Override public int hashCode() { int hash = 0; - hash += (autobusId != null ? autobusId.hashCode() : 0); + hash += (getAutobusId() != null ? getAutobusId().hashCode() : 0); return hash; } @@ -285,7 +294,7 @@ public class Autobus implements Serializable { return false; } Autobus other = (Autobus) object; - if ((this.autobusId == null && other.autobusId != null) || (this.autobusId != null && !this.autobusId.equals(other.autobusId))) { + if ((this.getAutobusId() == null && other.getAutobusId() != null) || (this.getAutobusId() != null && !this.getAutobusId().equals(other.getAutobusId()))) { return false; } return true; @@ -303,4 +312,19 @@ public class Autobus implements Serializable { public void setNumvagon(String numvagon) { this.numvagon = numvagon; } + + @Override + public void clonar() throws CloneNotSupportedException { + autobusClone = (Autobus) this.clone(); + } + + @Override + public Autobus getCloneObject() throws CloneNotSupportedException { + return autobusClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("AutobusID [%s]", getAutobusId()); + } } diff --git a/src/com/rjconsultores/ventaboletos/entidad/ClaseServicio.java b/src/com/rjconsultores/ventaboletos/entidad/ClaseServicio.java index 7379c1de9..0c49fbfd9 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/ClaseServicio.java +++ b/src/com/rjconsultores/ventaboletos/entidad/ClaseServicio.java @@ -9,6 +9,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; + import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; @@ -19,9 +20,13 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; import org.hibernate.annotations.GenericGenerator; +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; + /** * * @author Administrador @@ -29,7 +34,7 @@ import org.hibernate.annotations.GenericGenerator; @Entity @SequenceGenerator(name = "CLASE_SERVICIO_SEQ", sequenceName = "CLASE_SERVICIO_SEQ", allocationSize = 1) @Table(name = "CLASE_SERVICIO") -public class ClaseServicio implements Serializable { +public class ClaseServicio implements Serializable, Auditavel { public final static short TODOS = -1; @@ -38,8 +43,9 @@ public class ClaseServicio implements Serializable { @Id @GenericGenerator(name = "claseservicioIdgen", strategy = "com.rjconsultores.ventaboletos.dao.util.ClaseServicioGenerator") @GeneratedValue(generator = "claseservicioIdgen") - @Column(name = "CLASESERVICIO_ID") + @Column(name = "CLASESERVICIO_ID") private Integer claseservicioId; + @Column(name = "DESCCLASE") private String descclase; @Column(name = "TIPOSERVICOBPE") @@ -69,6 +75,10 @@ public class ClaseServicio implements Serializable { @Column(name = "COEFICIENTETARIFA") private BigDecimal coeficiente; + @Transient + @NaoAuditar + private ClaseServicio claseServicioClone; + public ClaseServicio() { } @@ -164,7 +174,7 @@ public class ClaseServicio implements Serializable { @Override public int hashCode() { int hash = 0; - hash += (claseservicioId != null ? claseservicioId.hashCode() : 0); + hash += (getClaseservicioId() != null ? getClaseservicioId().hashCode() : 0); return hash; } @@ -175,7 +185,7 @@ public class ClaseServicio implements Serializable { return false; } ClaseServicio other = (ClaseServicio) object; - if ((this.claseservicioId == null && other.claseservicioId != null) || (this.claseservicioId != null && !this.claseservicioId.equals(other.claseservicioId))) { + if ((this.getClaseservicioId() == null && other.getClaseservicioId() != null) || (this.getClaseservicioId() != null && !this.getClaseservicioId().equals(other.getClaseservicioId()))) { return false; } return true; @@ -234,4 +244,20 @@ public class ClaseServicio implements Serializable { this.coeficiente = coeficiente; } + @Override + public void clonar() throws CloneNotSupportedException { + claseServicioClone = new ClaseServicio(); + claseServicioClone = (ClaseServicio) this.clone(); + } + + @Override + public ClaseServicio getCloneObject() throws CloneNotSupportedException { + return claseServicioClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ClaseServicioID [%s]", getClaseservicioId()); + } + } \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/entidad/Division.java b/src/com/rjconsultores/ventaboletos/entidad/Division.java index d1a5a558a..74c2feb6e 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Division.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Division.java @@ -15,11 +15,15 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; @Entity @SequenceGenerator(name = "DIVISION_SEQ", sequenceName = "DIVISION_SEQ", allocationSize = 1) @Table(name = "DIVISION") -public class Division implements Serializable { +public class Division implements Serializable, Auditavel { private static final long serialVersionUID = 1L; @Id @@ -27,6 +31,7 @@ public class Division implements Serializable { @GeneratedValue(strategy = GenerationType.AUTO, generator = "DIVISION_SEQ") @Column(name = "DIVISION_ID") private Integer divisionId; + @Column(name = "NOMBDIVISION") private String nombDivion; @OneToOne @@ -39,6 +44,10 @@ public class Division implements Serializable { private Date fecmodif; @Column(name = "USUARIO_ID") private Integer usuarioId; + + @Transient + @NaoAuditar + private Division divisionClone; public Division() { @@ -111,13 +120,13 @@ public class Division implements Serializable { return true; if (obj == null) return false; - if (getClass() != obj.getClass()) + if (!(obj instanceof Division)) return false; Division other = (Division) obj; - if (divisionId == null) { - if (other.divisionId != null) + if (getDivisionId() == null) { + if (other.getDivisionId() != null) return false; - } else if (!divisionId.equals(other.divisionId)) + } else if (!getDivisionId().equals(other.getDivisionId())) return false; return true; } @@ -127,4 +136,20 @@ public class Division implements Serializable { return this.getNombDivion(); } + @Override + public void clonar() throws CloneNotSupportedException { + divisionClone = new Division(); + divisionClone = (Division) this.clone(); + } + + @Override + public Division getCloneObject() { + return divisionClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ID [%s]", getDivisionId()); + } + } diff --git a/src/com/rjconsultores/ventaboletos/entidad/Empresa.java b/src/com/rjconsultores/ventaboletos/entidad/Empresa.java index e3e59f4d4..a572edd87 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Empresa.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Empresa.java @@ -25,6 +25,7 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.Predicate; @@ -33,6 +34,10 @@ import org.hibernate.annotations.Where; import com.rjconsultores.ventaboletos.enums.TipoCstGratuidade; +import br.com.rjconsultores.auditador.annotations.AuditarID; +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; + /** * * @author Rafius @@ -41,14 +46,16 @@ import com.rjconsultores.ventaboletos.enums.TipoCstGratuidade; @Entity @SequenceGenerator(name = "EMPRESA_SEQ", sequenceName = "EMPRESA_SEQ", allocationSize = 1) @Table(name = "EMPRESA") -public class Empresa implements Serializable { +public class Empresa implements Serializable, Auditavel { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @GeneratedValue(strategy = GenerationType.AUTO, generator = "EMPRESA_SEQ") @Column(name = "EMPRESA_ID") + @AuditarID private Integer empresaId; + @Column(name = "NOMBEMPRESA") private String nombempresa; @Column(name = "ACTIVO") @@ -349,6 +356,10 @@ public class Empresa implements Serializable { @Column(name = "URLBASESEGURO") private String urlBaseEmpresaSeguro; + @Transient + @NaoAuditar + private Empresa empresaClone; + public Empresa() { super(); } @@ -1299,4 +1310,20 @@ public class Empresa implements Serializable { this.urlBaseEmpresaSeguro = urlBaseEmpresaSeguro; } + @Override + public void clonar() throws CloneNotSupportedException { + empresaClone = new Empresa(); + empresaClone = (Empresa) this.clone(); + } + + @Override + public Empresa getCloneObject() throws CloneNotSupportedException { + return empresaClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ID [%s]", getEmpresaId()); + } + } diff --git a/src/com/rjconsultores/ventaboletos/entidad/EsquemaAsiento.java b/src/com/rjconsultores/ventaboletos/entidad/EsquemaAsiento.java index 2e161290d..189bff8d9 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/EsquemaAsiento.java +++ b/src/com/rjconsultores/ventaboletos/entidad/EsquemaAsiento.java @@ -21,6 +21,10 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; /** * @@ -29,7 +33,7 @@ import javax.persistence.TemporalType; @Entity @SequenceGenerator(name = "ESQUEMA_ASIENTO_SEQ", sequenceName = "ESQUEMA_ASIENTO_SEQ", allocationSize = 1) @Table(name = "ESQUEMA_ASIENTO") -public class EsquemaAsiento implements Serializable { +public class EsquemaAsiento implements Serializable, Auditavel { private static final long serialVersionUID = 1L; @Id @@ -37,6 +41,7 @@ public class EsquemaAsiento implements Serializable { @Column(name = "ESQUEMAASIENTO_ID") @GeneratedValue(strategy = GenerationType.AUTO, generator = "ESQUEMA_ASIENTO_SEQ") private Integer esquemaasientoId; + @Column(name = "NUMASIENTO") private String numasiento; @Column(name = "INDVENDIBLE") @@ -53,14 +58,20 @@ public class EsquemaAsiento implements Serializable { @JoinColumn(name = "PARADA_ID", referencedColumnName = "PARADA_ID") @ManyToOne private Parada parada; + @JoinColumn(name = "ESQUEMACORRIDA_ID", referencedColumnName = "ESQUEMACORRIDA_ID") @ManyToOne(cascade = CascadeType.MERGE) + @NaoAuditar private EsquemaCorrida esquemaCorrida; @Column(name = "MOTIVOBLOQUEO") private String motivobloqueo; @OneToOne @JoinColumn(name = "DESTINO_ID", referencedColumnName = "PARADA_ID") private Parada destino; + + @Transient + @NaoAuditar + private EsquemaAsiento esquemaAsientoClone; public EsquemaAsiento() { } @@ -160,7 +171,7 @@ public class EsquemaAsiento implements Serializable { @Override public int hashCode() { int hash = 0; - hash += (esquemaasientoId != null ? esquemaasientoId.hashCode() : 0); + hash += (getEsquemaasientoId() != null ? getEsquemaasientoId().hashCode() : 0); return hash; } @@ -171,7 +182,7 @@ public class EsquemaAsiento implements Serializable { return false; } EsquemaAsiento other = (EsquemaAsiento) object; - if ((this.esquemaasientoId == null && other.esquemaasientoId != null) || (this.esquemaasientoId != null && !this.esquemaasientoId.equals(other.esquemaasientoId))) { + if ((this.getEsquemaasientoId() == null && other.getEsquemaasientoId() != null) || (this.getEsquemaasientoId() != null && !this.getEsquemaasientoId().equals(other.getEsquemaasientoId()))) { return false; } return true; @@ -181,4 +192,23 @@ public class EsquemaAsiento implements Serializable { public String toString() { return "com.rjconsultores.ventaboletos.entidad.test.EsquemaAsiento[esquemaasientoId=" + esquemaasientoId + "]"; } + + @Override + public void clonar() throws CloneNotSupportedException { + esquemaAsientoClone = new EsquemaAsiento(); + esquemaAsientoClone = (EsquemaAsiento) this.clone(); + } + + @Override + public EsquemaAsiento getCloneObject() throws CloneNotSupportedException { + return esquemaAsientoClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ID [%s] - ASSENTOS [%s] - Localidade [%s]", getEsquemaasientoId(), + getNumasiento(), + getParada() != null ? getParada().getDescparada() : null); + } + } diff --git a/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java b/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java index fa70ee396..bfda8473e 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java +++ b/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java @@ -20,9 +20,19 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; +import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.StringUtils; +import br.com.rjconsultores.auditador.annotations.AuditarAtributo; +import br.com.rjconsultores.auditador.annotations.AuditarClasse; +import br.com.rjconsultores.auditador.annotations.AuditarEntidade; +import br.com.rjconsultores.auditador.annotations.AuditarID; +import br.com.rjconsultores.auditador.annotations.AuditarLista; +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; + /** * * @author Rafius @@ -30,103 +40,154 @@ import org.apache.commons.lang.StringUtils; @Entity @SequenceGenerator(name = "ESQUEMA_CORRIDA_SEQ", sequenceName = "ESQUEMA_CORRIDA_SEQ", allocationSize = 1) @Table(name = "ESQUEMA_CORRIDA") -public class EsquemaCorrida implements Serializable { +@AuditarClasse(nome = "ESQUEMA_CORRIDA", campoEmpresa = "empresa", tela = "Configuração de Serviços") +public class EsquemaCorrida implements Serializable, Auditavel { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @Column(name = "ESQUEMACORRIDA_ID") @GeneratedValue(strategy = GenerationType.AUTO, generator = "ESQUEMA_CORRIDA_SEQ") + @AuditarID private Integer esquemacorridaId; + @Column(name = "HORASALIDA") @Temporal(TemporalType.TIME) + @AuditarAtributo(pattern = "HH:mm") private Date horasalida; + @Column(name = "INDPISOEXTRA") private Boolean pisoExtra; + @Column(name = "INDLUNES") private Boolean indlunes; + @Column(name = "INDMARTES") private Boolean indmartes; + @Column(name = "INDMIERCOLES") private Boolean indmiercoles; + @Column(name = "INDJUEVES") private Boolean indjueves; + @Column(name = "INDVIERNES") private Boolean indviernes; + @Column(name = "INDSABADO") private Boolean indsabado; + @Column(name = "INDDOMINGO") private Boolean inddomingo; + @Column(name = "CANTPARADOS") private Integer cantparados; + @Column(name = "ACTIVO") + @NaoAuditar private Boolean activo; + @Column(name = "FECMODIF") @Temporal(TemporalType.TIMESTAMP) + @NaoAuditar private Date fecmodif; + @Column(name = "USUARIO_ID") + @NaoAuditar private Integer usuarioId; + @Column(name = "DIAGRAMAAUTOBUS_ID") private Integer diagramaAutobusId; + @Column(name = "STATUSCORRIDA") private String statusCorrida; + @JoinColumn(name = "RUTA_ID", referencedColumnName = "RUTA_ID") @ManyToOne private Ruta ruta; + @JoinColumn(name = "ROLOPERATIVO_ID", referencedColumnName = "ROLOPERATIVO_ID") @ManyToOne(cascade = CascadeType.ALL) private RolOperativo rolOperativo; + @JoinColumn(name = "MARCA_ID", referencedColumnName = "MARCA_ID") @ManyToOne private Marca marca; + @JoinColumn(name = "ESQUEMAOPERACIONAL_ID", referencedColumnName = "ESQUEMAOPERACIONAL_ID") @ManyToOne(cascade = CascadeType.ALL) + @AuditarEntidade private EsquemaOperacional esquemaOperacional; + @JoinColumn(name = "EMPRESACORRIDA_ID", referencedColumnName = "EMPRESA_ID") @ManyToOne private Empresa empresa; + @JoinColumn(name = "EMPRESAINGRESO_ID", referencedColumnName = "EMPRESA_ID") @ManyToOne private Empresa empresa1; + @JoinColumn(name = "CLASESERVICIO_ID", referencedColumnName = "CLASESERVICIO_ID") @ManyToOne(cascade = CascadeType.ALL) private ClaseServicio claseServicio; + @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "ESQUEMACORRIDA_ID", referencedColumnName = "ESQUEMACORRIDA_ID") + @AuditarLista(auditarEntidades = true, nome = "Localidade") private List esquemaTramoList; + @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "ESQUEMACORRIDA_ID", referencedColumnName = "ESQUEMACORRIDA_ID") + @AuditarLista(auditarEntidades = true, nome = "Cotas") private List esquemaAsientoList; + @Column(name = "tipocorrida") private String tipocorrida; + @JoinColumn(name = "ESQUEMAREBOTE_ID", referencedColumnName = "ESQUEMACORRIDA_ID") @ManyToOne(cascade = CascadeType.ALL) private EsquemaCorrida esquemaCorridaRebote; + @JoinColumn(name = "DIVISION_ID", referencedColumnName = "DIVISION_ID") @ManyToOne(cascade = CascadeType.ALL) private Division division; + @Column(name = "NUMCORRIDA") private Integer numCorrida; + @Column(name = "NUMCORRIDAPISOEXTRA") private Integer numCorridaPisoExtra; + @Column(name = "INDGENERAFERIADO") private String indGeneraFeriado; + @Column(name = "CANTDIASGENERACION") private Integer cantDiasGeneracion; + @Column(name = "ESQUEMAAGRUPACION_ID") private Integer esquemaAgrupacionId; + @Column(name = "INFOCORRIDA") private String infoCorrida; + @Column(name = "INDCORRIDAEXTRA") private Boolean indCorridaExtra; + @Column(name = "INDDIASIMDIANAO") private Boolean indDiaSimDiaNao; + @JoinColumn(name = "AUTOBUS_ID", referencedColumnName = "AUTOBUS_ID") @ManyToOne(cascade = CascadeType.ALL) private Autobus autoBus; + @OneToMany(mappedBy = "esquemaCorrida", cascade = CascadeType.ALL) + @AuditarLista(auditarEntidades = true, nome = "Embarque/Desembarque") private List lsEsquemaCorridaEmbarqueDesembarque; + @Transient + @NaoAuditar + private EsquemaCorrida esquemaCorridaClone; + public enum GerarFeriado { // Declaração dos enum GERARSEMPRE("GERAR SEMPRE", "S"), @@ -559,7 +620,7 @@ public class EsquemaCorrida implements Serializable { @Override public int hashCode() { int hash = 0; - hash += (esquemacorridaId != null ? esquemacorridaId.hashCode() : 0); + hash += (getEsquemacorridaId() != null ? getEsquemacorridaId().hashCode() : 0); return hash; } @@ -571,7 +632,7 @@ public class EsquemaCorrida implements Serializable { return false; } EsquemaCorrida other = (EsquemaCorrida) object; - if ((this.esquemacorridaId == null && other.esquemacorridaId != null) || (this.esquemacorridaId != null && !this.esquemacorridaId.equals(other.esquemacorridaId))) { + if ((this.getEsquemacorridaId() == null && other.getEsquemacorridaId() != null) || (this.getEsquemacorridaId() != null && !this.getEsquemacorridaId().equals(other.getEsquemacorridaId()))) { return false; } return true; @@ -597,5 +658,105 @@ public class EsquemaCorrida implements Serializable { public void setLsEsquemaCorridaEmbarqueDesembarque(List lsEsquemaCorridaEmbarqueDesembarque) { this.lsEsquemaCorridaEmbarqueDesembarque = lsEsquemaCorridaEmbarqueDesembarque; } + + @Override + public void clonar() throws CloneNotSupportedException { + esquemaCorridaClone = new EsquemaCorrida(); + esquemaCorridaClone = (EsquemaCorrida) this.clone(); + + if(this.getAutoBus() != null) { + this.getAutoBus().clonar(); + esquemaCorridaClone.setAutoBus(this.getAutoBus().getCloneObject()); + } + + if(this.getClaseServicio() != null) { + this.getClaseServicio().clonar(); + esquemaCorridaClone.setClaseServicio(this.getClaseServicio().getCloneObject()); + } + + if(this.getDivision() != null) { + this.getDivision().clonar(); + esquemaCorridaClone.setDivision(this.getDivision().getCloneObject()); + } + + if(this.getEmpresa() != null) { + this.getEmpresa().clonar(); + esquemaCorridaClone.setEmpresa(this.getEmpresa().getCloneObject()); + } + + if(this.getEmpresa1() != null) { + this.getEmpresa1().clonar(); + esquemaCorridaClone.setEmpresa1(this.getEmpresa1().getCloneObject()); + } + + if(this.getMarca() != null) { + this.getMarca().clonar(); + esquemaCorridaClone.setMarca(this.getMarca().getCloneObject()); + } + + if(this.getEsquemaCorridaRebote() != null) { + this.getEsquemaCorridaRebote().clonar(); + esquemaCorridaClone.setEsquemaCorridaRebote(this.getEsquemaCorridaRebote().getCloneObject()); + } + + if(this.getEsquemaOperacional() != null) { + this.getEsquemaOperacional().clonar(); + esquemaCorridaClone.setEsquemaOperacional(this.getEsquemaOperacional().getCloneObject()); + } + + if(this.getRolOperativo() != null) { + this.getRolOperativo().clonar(); + esquemaCorridaClone.setRolOperativo(this.getRolOperativo().getCloneObject()); + } + + if(this.getRuta() != null) { + this.getRuta().clonar(); + esquemaCorridaClone.setRuta(this.getRuta().getCloneObject()); + } + + if(this.getEsquemaAsientoList() != null) { + List lsClones = new ArrayList(); + for (EsquemaAsiento esquemaAsiento : this.getEsquemaAsientoList()) { + if(BooleanUtils.isTrue(esquemaAsiento.getActivo())) { + esquemaAsiento.clonar(); + lsClones.add(esquemaAsiento.getCloneObject()); + } + } + esquemaCorridaClone.setEsquemaAsientoList(lsClones); + } + + if(this.getEsquemaTramoList() != null) { + List lsClones = new ArrayList(); + for (EsquemaTramo esquemaTramo : this.getEsquemaTramoList()) { + if(BooleanUtils.isTrue(esquemaTramo.getActivo())) { + esquemaTramo.clonar(); + lsClones.add(esquemaTramo.getCloneObject()); + } + } + esquemaCorridaClone.setEsquemaTramoList(lsClones); + } + + if(this.getLsEsquemaCorridaEmbarqueDesembarque() != null) { + List lsClones = new ArrayList(); + for (EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarque : this.getLsEsquemaCorridaEmbarqueDesembarque()) { + if(BooleanUtils.isTrue(esquemaCorridaEmbarqueDesembarque.getActivo())) { + esquemaCorridaEmbarqueDesembarque.clonar(); + lsClones.add(esquemaCorridaEmbarqueDesembarque.getCloneObject()); + } + } + esquemaCorridaClone.setLsEsquemaCorridaEmbarqueDesembarque(lsClones); + } + + } + + @Override + public EsquemaCorrida getCloneObject() throws CloneNotSupportedException { + return esquemaCorridaClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ID [%s] - Número Serviço [%s]", getEsquemacorridaId(), getNumCorrida()); + } } \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorridaEmbarqueDesembarque.java b/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorridaEmbarqueDesembarque.java index ccf3b620e..7253c1d45 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorridaEmbarqueDesembarque.java +++ b/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorridaEmbarqueDesembarque.java @@ -15,11 +15,15 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; @Entity @SequenceGenerator(name = "ESQUEMA_CORRIDA_EMB_DESEM_SEQ", sequenceName = "ESQUEMA_CORRIDA_EMB_DESEM_SEQ", allocationSize = 1) @Table(name = "ESQUEMA_CORRIDA_EMBRQ_DESEMBRQ") -public class EsquemaCorridaEmbarqueDesembarque implements java.io.Serializable { +public class EsquemaCorridaEmbarqueDesembarque implements java.io.Serializable, Auditavel { private static final long serialVersionUID = -6308295160991190414L; @@ -31,6 +35,7 @@ public class EsquemaCorridaEmbarqueDesembarque implements java.io.Serializable { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "ESQUEMACORRIDA_ID", nullable = false) + @NaoAuditar private EsquemaCorrida esquemaCorrida; @ManyToOne(fetch = FetchType.LAZY) @@ -56,6 +61,10 @@ public class EsquemaCorridaEmbarqueDesembarque implements java.io.Serializable { @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "PARADA_EMB_DES_ID") private Parada localDesembarqueEmbarque; + + @Transient + @NaoAuditar + private EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarqueClone; public EsquemaCorridaEmbarqueDesembarque() { } @@ -154,4 +163,55 @@ public class EsquemaCorridaEmbarqueDesembarque implements java.io.Serializable { this.localDesembarqueEmbarque = localDesembarqueEmbarque; } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getEsquemaCorridaEmbarqueDesembarqueId() == null) ? 0 : getEsquemaCorridaEmbarqueDesembarqueId().hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (!(obj instanceof EsquemaCorridaEmbarqueDesembarque)) + return false; + EsquemaCorridaEmbarqueDesembarque other = (EsquemaCorridaEmbarqueDesembarque) obj; + if (getEsquemaCorridaEmbarqueDesembarqueId() == null) { + if (other.getEsquemaCorridaEmbarqueDesembarqueId() != null) + return false; + } else if (!getEsquemaCorridaEmbarqueDesembarqueId().equals(other.getEsquemaCorridaEmbarqueDesembarqueId())) + return false; + return true; + } + + @Override + public void clonar() throws CloneNotSupportedException { + esquemaCorridaEmbarqueDesembarqueClone = new EsquemaCorridaEmbarqueDesembarque(); + esquemaCorridaEmbarqueDesembarqueClone = (EsquemaCorridaEmbarqueDesembarque) this.clone(); + + if(this.getParada() != null) { + esquemaCorridaEmbarqueDesembarqueClone.setParada(this.getParada().getCloneObject()); + } + + if(this.getLocalDesembarqueEmbarque() != null) { + esquemaCorridaEmbarqueDesembarqueClone.setLocalDesembarqueEmbarque(this.getLocalDesembarqueEmbarque().getCloneObject()); + } + } + + @Override + public EsquemaCorridaEmbarqueDesembarque getCloneObject() throws CloneNotSupportedException { + return esquemaCorridaEmbarqueDesembarqueClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ID [%s] - Embarque [%s] - Desemb. [%s]", + getEsquemaCorridaEmbarqueDesembarqueId(), getParada() != null ? getParada().getDescparada() : "", + getEsquemaCorridaEmbarqueDesembarqueId(), getLocalDesembarqueEmbarque() != null ? getLocalDesembarqueEmbarque().getDescparada() : ""); + } + } diff --git a/src/com/rjconsultores/ventaboletos/entidad/EsquemaOperacional.java b/src/com/rjconsultores/ventaboletos/entidad/EsquemaOperacional.java index 5d128074b..529019002 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/EsquemaOperacional.java +++ b/src/com/rjconsultores/ventaboletos/entidad/EsquemaOperacional.java @@ -10,6 +10,7 @@ import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; + import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; @@ -17,10 +18,15 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; +import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; -import javax.persistence.SequenceGenerator; +import javax.persistence.Transient; + +import br.com.rjconsultores.auditador.annotations.AuditarAtributo; +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; /** * @@ -29,7 +35,7 @@ import javax.persistence.SequenceGenerator; @Entity @SequenceGenerator(name = "ESQUEMA_OPERACIONAL_SEQ", sequenceName = "ESQUEMA_OPERACIONAL_SEQ", allocationSize = 1) @Table(name = "ESQUEMA_OPERACIONAL") -public class EsquemaOperacional implements Serializable { +public class EsquemaOperacional implements Serializable, Auditavel { private static final long serialVersionUID = 1L; @Id @@ -37,21 +43,37 @@ public class EsquemaOperacional implements Serializable { @Column(name = "ESQUEMAOPERACIONAL_ID") @GeneratedValue(strategy = GenerationType.AUTO, generator = "ESQUEMA_OPERACIONAL_SEQ") private Integer esquemaoperacionalId; + @Column(name = "FECNICIOVIGENCIA") @Temporal(TemporalType.TIMESTAMP) + @AuditarAtributo(pattern = "dd/MM/yyyy", nome = "Inicio Vigencia") private Date fecniciovigencia; + @Column(name = "FECFINVIGENCIA") @Temporal(TemporalType.TIMESTAMP) + @AuditarAtributo(pattern = "dd/MM/yyyy", nome = "Fim Vigencia") private Date fecfinvigencia; + @Column(name = "ACTIVO") + @NaoAuditar private Boolean activo; + @Column(name = "USUARIO_ID") + @NaoAuditar private Integer usuarioId; + @Column(name = "FECMODIF") @Temporal(TemporalType.TIMESTAMP) + @NaoAuditar private Date fecmodif; + @OneToMany(mappedBy = "esquemaOperacional") + @NaoAuditar private List esquemaCorridaList; + + @Transient + @NaoAuditar + private EsquemaOperacional esquemaOperacionalClone; public EsquemaOperacional() { } @@ -147,7 +169,7 @@ public class EsquemaOperacional implements Serializable { @Override public int hashCode() { int hash = 0; - hash += (esquemaoperacionalId != null ? esquemaoperacionalId.hashCode() : 0); + hash += (getEsquemaoperacionalId() != null ? getEsquemaoperacionalId().hashCode() : 0); return hash; } @@ -158,7 +180,7 @@ public class EsquemaOperacional implements Serializable { return false; } EsquemaOperacional other = (EsquemaOperacional) object; - if ((this.esquemaoperacionalId == null && other.esquemaoperacionalId != null) || (this.esquemaoperacionalId != null && !this.esquemaoperacionalId.equals(other.esquemaoperacionalId))) { + if ((this.getEsquemaoperacionalId() == null && other.getEsquemaoperacionalId() != null) || (this.getEsquemaoperacionalId() != null && !this.getEsquemaoperacionalId().equals(other.getEsquemaoperacionalId()))) { return false; } return true; @@ -168,4 +190,21 @@ public class EsquemaOperacional implements Serializable { public String toString() { return "com.rjconsultores.ventaboletos.entidad.test.EsquemaOperacional[esquemaoperacionalId=" + esquemaoperacionalId + "]"; } + + @Override + public void clonar() throws CloneNotSupportedException { + esquemaOperacionalClone = new EsquemaOperacional(); + esquemaOperacionalClone = (EsquemaOperacional) this.clone(); + + } + + @Override + public EsquemaOperacional getCloneObject() throws CloneNotSupportedException { + return esquemaOperacionalClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ID [%s]", getEsquemaoperacionalId()); + } } diff --git a/src/com/rjconsultores/ventaboletos/entidad/EsquemaTramo.java b/src/com/rjconsultores/ventaboletos/entidad/EsquemaTramo.java index b26aecaa2..7d69ec1ae 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/EsquemaTramo.java +++ b/src/com/rjconsultores/ventaboletos/entidad/EsquemaTramo.java @@ -6,6 +6,7 @@ package com.rjconsultores.ventaboletos.entidad; import java.io.Serializable; import java.util.Date; + import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; @@ -14,10 +15,16 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; -import javax.persistence.SequenceGenerator; +import javax.persistence.Transient; + +import org.hibernate.Hibernate; + +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; /** * @@ -26,7 +33,7 @@ import javax.persistence.SequenceGenerator; @Entity @SequenceGenerator(name = "ESQUEMA_TRAMO_SEQ", sequenceName = "ESQUEMA_TRAMO_SEQ", allocationSize = 1) @Table(name = "ESQUEMA_TRAMO") -public class EsquemaTramo implements Serializable, Comparable { +public class EsquemaTramo implements Serializable, Comparable, Auditavel { private static final long serialVersionUID = 1L; @Id @@ -57,6 +64,7 @@ public class EsquemaTramo implements Serializable, Comparable { @JoinColumn(name = "ESQUEMACORRIDA_ID", referencedColumnName = "ESQUEMACORRIDA_ID") @ManyToOne + @NaoAuditar private EsquemaCorrida esquemaCorrida; @Column(name = "PLATAFORMA") @@ -67,6 +75,10 @@ public class EsquemaTramo implements Serializable, Comparable { @Column(name = "TIPO_PASSAGEM") private String tipoPassagem; + + @Transient + @NaoAuditar + private EsquemaTramo esquemaTramoClone; public Date getTiempoEstancia() { return tiempoEstancia; @@ -166,7 +178,7 @@ public class EsquemaTramo implements Serializable, Comparable { @Override public int hashCode() { int hash = 0; - hash += (esquematramoId != null ? esquematramoId.hashCode() : 0); + hash += (getEsquematramoId() != null ? getEsquematramoId().hashCode() : 0); return hash; } @@ -176,7 +188,7 @@ public class EsquemaTramo implements Serializable, Comparable { return false; } EsquemaTramo other = (EsquemaTramo) object; - if ((this.esquematramoId == null && other.esquematramoId != null) || (this.esquematramoId != null && !this.esquematramoId.equals(other.esquematramoId))) { + if ((this.getEsquematramoId() == null && other.getEsquematramoId() != null) || (this.getEsquematramoId() != null && !this.getEsquematramoId().equals(other.getEsquematramoId()))) { return false; } return true; @@ -196,4 +208,24 @@ public class EsquemaTramo implements Serializable, Comparable { } return 0; } + + @Override + public void clonar() throws CloneNotSupportedException { + esquemaTramoClone = new EsquemaTramo(); + esquemaTramoClone = (EsquemaTramo) this.clone(); + Hibernate.initialize(esquemaTramoClone.getTramo()); + } + + @Override + public EsquemaTramo getCloneObject() throws CloneNotSupportedException { + return esquemaTramoClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("EsquemaTramo - Sequencia [%s] - Origem [%s] - Destino [%s]", getNumsecuencia(), + getTramo() != null && getTramo().getOrigem() != null ? getTramo().getOrigem().getDescparada() : "", + getTramo() != null && getTramo().getDestino() != null ? getTramo().getDestino().getDescparada() : ""); + } + } diff --git a/src/com/rjconsultores/ventaboletos/entidad/LogAuditoria.java b/src/com/rjconsultores/ventaboletos/entidad/LogAuditoria.java new file mode 100644 index 000000000..4c8d66e1d --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/entidad/LogAuditoria.java @@ -0,0 +1,200 @@ +package com.rjconsultores.ventaboletos.entidad; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +@Entity +@SequenceGenerator(name = "LOG_AUDITORIA_SEQ", sequenceName = "LOG_AUDITORIA_SEQ", allocationSize = 1) +@Table(name = "LOG_AUDITORIA") +public class LogAuditoria implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + @Basic(optional = false) + @GeneratedValue(strategy = GenerationType.AUTO, generator = "LOG_AUDITORIA_SEQ") + @Column(name = "LOGAUDITORIA_ID") + private Long logauditoriaId; + + @Column(name = "ID_AUDITADO") + private Long idAuditado; + + @ManyToOne + @JoinColumn(name = "EMPRESA_ID") + private Empresa empresa; + + @Column(name = "VALOR_ANTERIOR") + private String valorAnterior; + + @Column(name = "VALOR_NOVO") + private String valorNovo; + + @Column(name = "CAMPO_ALTERADO") + private String campoAlterado; + + @Column(name = "CLASSE_ALTERADA") + private String classeAlterada; + + @Column(name = "CLASSE_PRINCIPAL") + private String classePrincipal; + + @Column(name = "TELA") + private String tela; + + @Column(name = "TIPO_ALTERACAO") + private String tipoAlteracao; + + @Column(name = "ACTIVO") + private boolean activo; + + @Column(name = "FECMODIF") + @Temporal(TemporalType.TIMESTAMP) + private Date fecmodif; + + @ManyToOne + @JoinColumn(name = "USUARIO_ID") + private Usuario usuario; + + public Long getLogauditoriaId() { + return logauditoriaId; + } + + public void setLogauditoriaId(Long logauditoriaId) { + this.logauditoriaId = logauditoriaId; + } + + public Empresa getEmpresa() { + return empresa; + } + + public void setEmpresa(Empresa empresa) { + this.empresa = empresa; + } + + public String getValorAnterior() { + return valorAnterior; + } + + public void setValorAnterior(String valorAnterior) { + this.valorAnterior = valorAnterior; + } + + public String getValorNovo() { + return valorNovo; + } + + public void setValorNovo(String valorNovo) { + this.valorNovo = valorNovo; + } + + public String getCampoAlterado() { + return campoAlterado; + } + + public void setCampoAlterado(String campoAlterado) { + this.campoAlterado = campoAlterado; + } + + public String getClasseAlterada() { + return classeAlterada; + } + + public void setClasseAlterada(String classeAlterada) { + this.classeAlterada = classeAlterada; + } + + public String getClassePrincipal() { + return classePrincipal; + } + + public void setClassePrincipal(String classePrincipal) { + this.classePrincipal = classePrincipal; + } + + public String getTela() { + return tela; + } + + public void setTela(String tela) { + this.tela = tela; + } + + public String getTipoAlteracao() { + return tipoAlteracao; + } + + public void setTipoAlteracao(String tipoAlteracao) { + this.tipoAlteracao = tipoAlteracao; + } + + public boolean isActivo() { + return activo; + } + + public void setActivo(boolean activo) { + this.activo = activo; + } + + public Date getFecmodif() { + return fecmodif; + } + + public void setFecmodif(Date fecmodif) { + this.fecmodif = fecmodif; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getLogauditoriaId() == null) ? 0 : getLogauditoriaId().hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (!(obj instanceof LogAuditoria)) + return false; + LogAuditoria other = (LogAuditoria) obj; + if (getLogauditoriaId() == null) { + if (other.getLogauditoriaId() != null) + return false; + } else if (!getLogauditoriaId().equals(other.getLogauditoriaId())) + return false; + return true; + } + + public Usuario getUsuario() { + return usuario; + } + + public void setUsuario(Usuario usuario) { + this.usuario = usuario; + } + + public Long getIdAuditado() { + return idAuditado; + } + + public void setIdAuditado(Long idAuditado) { + this.idAuditado = idAuditado; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/entidad/Marca.java b/src/com/rjconsultores/ventaboletos/entidad/Marca.java index 59f8726ae..64b91daca 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Marca.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Marca.java @@ -23,10 +23,14 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; + /** * * @author Administrador @@ -34,7 +38,7 @@ import org.hibernate.annotations.FetchMode; @Entity @SequenceGenerator(name = "MARCA_SEQ", sequenceName = "MARCA_SEQ", allocationSize = 1) @Table(name = "MARCA") -public class Marca implements Serializable { +public class Marca implements Serializable, Auditavel { public final static short TODOS = -1; private static final long serialVersionUID = 1L; @@ -43,8 +47,10 @@ public class Marca implements Serializable { @GeneratedValue(strategy = GenerationType.AUTO, generator = "MARCA_SEQ") @Column(name = "MARCA_ID") private Short marcaId; + @Column(name = "DESCMARCA") private String descmarca; + @OneToOne @JoinColumn(name = "EMPRESA_ID") private Empresa empresa; @@ -75,6 +81,10 @@ public class Marca implements Serializable { @OneToMany(mappedBy = "marca") @Fetch(FetchMode.SELECT) private List corridaList; + + @Transient + @NaoAuditar + private Marca marcaClone; public Marca() { } @@ -207,7 +217,7 @@ public class Marca implements Serializable { @Override public int hashCode() { int hash = 0; - hash += (marcaId != null ? marcaId.hashCode() : 0); + hash += (getMarcaId() != null ? getMarcaId().hashCode() : 0); return hash; } @@ -218,7 +228,7 @@ public class Marca implements Serializable { return false; } Marca other = (Marca) object; - if ((this.marcaId == null && other.marcaId != null) || (this.marcaId != null && !this.marcaId.equals(other.marcaId))) { + if ((this.getMarcaId() == null && other.getMarcaId() != null) || (this.getMarcaId() != null && !this.getMarcaId().equals(other.getMarcaId()))) { return false; } return true; @@ -244,4 +254,20 @@ public class Marca implements Serializable { public void setTarifaHistList(List tarifaHistList) { this.tarifaHistList = tarifaHistList; } + + @Override + public void clonar() throws CloneNotSupportedException { + marcaClone = new Marca(); + marcaClone = (Marca) this.clone(); + } + + @Override + public Marca getCloneObject() throws CloneNotSupportedException { + return marcaClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ID [%s]", getMarcaId()); + } } diff --git a/src/com/rjconsultores/ventaboletos/entidad/Parada.java b/src/com/rjconsultores/ventaboletos/entidad/Parada.java index af1518bcc..4c18ebf7e 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Parada.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Parada.java @@ -24,10 +24,14 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; + /** * * @author Administrador @@ -35,7 +39,7 @@ import org.hibernate.annotations.FetchMode; @Entity @SequenceGenerator(name = "PARADA_SEQ", sequenceName = "PARADA_SEQ", allocationSize = 1) @Table(name = "PARADA") -public class Parada implements Serializable { +public class Parada implements Serializable, Auditavel { public static Integer ID_PARADA_TODOS = -1; private static final long serialVersionUID = 1L; @@ -100,6 +104,10 @@ public class Parada implements Serializable { @Fetch(value = FetchMode.SUBSELECT) private List codigosOrgaosConcedentes = new ArrayList(); + @Transient + @NaoAuditar + private Parada paradaClone; + public Parada() { super(); } @@ -337,4 +345,24 @@ public class Parada implements Serializable { public void setIndVisibleInternet(Boolean indVisibleInternet) { this.indVisibleInternet = indVisibleInternet; } + + @Override + public void clonar() throws CloneNotSupportedException { + paradaClone = new Parada(); + paradaClone = (Parada) this.clone(); + } + + @Override + public Parada getCloneObject() throws CloneNotSupportedException { +// if(paradaClone == null) { +// this.clonar(); +// } + return paradaClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("EsquemaAsientoID [%s]", getParadaId()); + } + } diff --git a/src/com/rjconsultores/ventaboletos/entidad/RolOperativo.java b/src/com/rjconsultores/ventaboletos/entidad/RolOperativo.java index 22c2b6136..2664f99d9 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/RolOperativo.java +++ b/src/com/rjconsultores/ventaboletos/entidad/RolOperativo.java @@ -7,6 +7,7 @@ package com.rjconsultores.ventaboletos.entidad; import java.io.Serializable; import java.util.Date; import java.util.List; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -15,10 +16,14 @@ import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; +import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; -import javax.persistence.SequenceGenerator; +import javax.persistence.Transient; + +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; /** * @@ -27,7 +32,7 @@ import javax.persistence.SequenceGenerator; @Entity @SequenceGenerator(name = "ROL_OPERATIVO_SEQ", sequenceName = "ROL_OPERATIVO_SEQ", allocationSize=1) @Table(name = "ROL_OPERATIVO") -public class RolOperativo implements Serializable { +public class RolOperativo implements Serializable, Auditavel { private static final long serialVersionUID = 1L; @Id @@ -51,6 +56,10 @@ public class RolOperativo implements Serializable { @JoinColumn(name = "DIAGRAMAAUTOBUS_ID", referencedColumnName = "DIAGRAMAAUTOBUS_ID") @ManyToOne private DiagramaAutobus diagramaAutobus; + + @Transient + @NaoAuditar + private RolOperativo rolOperativoClone; public RolOperativo() { } @@ -137,7 +146,7 @@ public class RolOperativo implements Serializable { return false; } RolOperativo other = (RolOperativo) object; - if ((this.roloperativoId == null && other.roloperativoId != null) || (this.roloperativoId != null && !this.roloperativoId.equals(other.roloperativoId))) { + if ((this.getRoloperativoId() == null && other.getRoloperativoId() != null) || (this.getRoloperativoId() != null && !this.getRoloperativoId().equals(other.getRoloperativoId()))) { return false; } return true; @@ -147,4 +156,21 @@ public class RolOperativo implements Serializable { public String toString() { return this.getDescroloperativo(); } + + @Override + public void clonar() throws CloneNotSupportedException { + rolOperativoClone = new RolOperativo(); + rolOperativoClone = (RolOperativo) this.clone(); + } + + @Override + public RolOperativo getCloneObject() throws CloneNotSupportedException { + return rolOperativoClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ID [%s]", getRoloperativoId()); + } + } diff --git a/src/com/rjconsultores/ventaboletos/entidad/Ruta.java b/src/com/rjconsultores/ventaboletos/entidad/Ruta.java index 779cb3782..a2d1417ef 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Ruta.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Ruta.java @@ -28,6 +28,9 @@ import javax.persistence.Transient; import org.hibernate.annotations.Where; +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; + /** * * @author Rafius @@ -36,7 +39,7 @@ import org.hibernate.annotations.Where; @SequenceGenerator(name = "RUTA_SEQ", sequenceName = "RUTA_SEQ", allocationSize = 1) @org.hibernate.annotations.Entity(dynamicUpdate = true) @Table(name = "RUTA") -public class Ruta implements Serializable, Comparable { +public class Ruta implements Serializable, Comparable, Auditavel { private static final long serialVersionUID = 1L; @@ -156,6 +159,10 @@ public class Ruta implements Serializable, Comparable { @Column(name = "indnumfidelidadobligatorio") private Boolean indNumFidelidadObligatorio; + @Transient + @NaoAuditar + private Ruta rutaClone; + public Ruta() { super(); indRutaCancelada = false; @@ -601,6 +608,22 @@ public class Ruta implements Serializable, Comparable { public void setLsRutaIcmsExcepcions(List lsRutaIcmsExcepcions) { this.lsRutaIcmsExcepcions = lsRutaIcmsExcepcions; } + + @Override + public void clonar() throws CloneNotSupportedException { + rutaClone = new Ruta(); + rutaClone = (Ruta) this.clone(); + } + + @Override + public Ruta getCloneObject() throws CloneNotSupportedException { + return rutaClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ID [%s]", getRutaId()); + } public Boolean getIndPrecioPorDemanda() { return indPrecioPorDemanda; diff --git a/src/com/rjconsultores/ventaboletos/entidad/Tarifa.java b/src/com/rjconsultores/ventaboletos/entidad/Tarifa.java index 99275b0d1..3d7b0fec0 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Tarifa.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Tarifa.java @@ -24,6 +24,14 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import br.com.rjconsultores.auditador.annotations.AuditarAtributo; +import br.com.rjconsultores.auditador.annotations.AuditarClasse; +import br.com.rjconsultores.auditador.annotations.AuditarID; +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; +import br.com.rjconsultores.auditador.interfaces.AuditavelTelaAlternativa; /** * @@ -32,72 +40,130 @@ import javax.persistence.TemporalType; @Entity @SequenceGenerator(name = "TARIFA_SEQ", sequenceName = "TARIFA_SEQ", allocationSize = 1) @Table(name = "TARIFA") -public class Tarifa implements Serializable { +@AuditarClasse(nome = "TARIFA", tela = "Alteração de Preço", campoEmpresa = "empresaId") +public class Tarifa implements Serializable, Auditavel, AuditavelTelaAlternativa { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @GeneratedValue(strategy = GenerationType.AUTO, generator = "TARIFA_SEQ") @Column(name = "TARIFA_ID") + @AuditarID private Integer tarifaId; + @Column(name = "PRECIO") + @AuditarAtributo(nome = "Tarifa") private BigDecimal precio; + @Column(name = "IMPORTETAXAEMBARQUE") + @AuditarAtributo(nome = "Taxa de Embarque") private BigDecimal importetaxaembarque; + @Column(name = "IMPORTEPEDAGIO") + @AuditarAtributo(nome = "Pedagio") private BigDecimal importepedagio; + @Column(name = "IMPORTEOUTROS") + @AuditarAtributo(nome = "Outros") private BigDecimal importeoutros; + @Column(name = "IMPORTESEGURO") + @AuditarAtributo(nome = "Seguro") private BigDecimal importeseguro; + @Column(name = "IMPORTETPP") + @AuditarAtributo(nome = "Tarifa TPP") private BigDecimal importeTPP; + @Column(name = "PRECIOORIGINAL") + @AuditarAtributo(nome = "Tarifa Original") private BigDecimal preciooriginal; + @Column(name = "STATUSTARIFA") + @AuditarAtributo(nome = "Status Tarifa") private String statustarifa; + @Column(name = "ACTIVO") + @NaoAuditar private Boolean activo; + @Column(name = "FECMODIF") @Temporal(TemporalType.TIMESTAMP) + @NaoAuditar private Date fecmodif; @Column(name = "USUARIO_ID") + @NaoAuditar private Integer usuarioId; + @OneToOne @JoinColumn(name = "TRAMO_ID") + @NaoAuditar private Tramo tramo; + @OneToOne @JoinColumn(name = "MARCA_ID") + @NaoAuditar private Marca marca; + @OneToOne @JoinColumn(name = "CLASESERVICIO_ID") + @NaoAuditar private ClaseServicio claseServicio; + @OneToOne @JoinColumn(name = "MONEDA_ID") + @NaoAuditar private Moneda moneda; + @OneToOne @JoinColumn(name = "VIGENCIATARIFA_ID") + @NaoAuditar private VigenciaTarifa vigenciaTarifa; + @Column(name = "PRECIOREDABIERTO") + @AuditarAtributo(nome = "Tarifa volta em aberto") private BigDecimal precioredabierto; + @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "TARIFA_ID", referencedColumnName = "TARIFA_ID") + @NaoAuditar private List lsTarifaTipoptovta; + @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "TARIFA_ID", referencedColumnName = "TARIFA_ID") + @NaoAuditar private List lsTarifaCategoria; + @OneToOne @JoinColumn(name = "ORIGEN_ID") + @NaoAuditar private Parada origen; + @OneToOne @JoinColumn(name = "DESTINO_ID") + @NaoAuditar private Parada destino; + @OneToOne @JoinColumn(name = "RUTA_ID") + @NaoAuditar private Ruta ruta; + @OneToOne @JoinColumn(name = "ORGAOCONCEDENTE_ID") + @NaoAuditar private OrgaoConcedente orgaoConcedente; + + @Transient + @NaoAuditar + private Tarifa tarifaClone; + + @NaoAuditar + @Transient + private String telaAlternativa; + + @Transient + private Integer empresaId; public Tarifa() { } @@ -344,4 +410,39 @@ public class Tarifa implements Serializable { public void setImporteseguro(BigDecimal importeseguro) { this.importeseguro = importeseguro; } + + @Override + public void clonar() throws CloneNotSupportedException { + tarifaClone = new Tarifa(); + tarifaClone = (Tarifa) this.clone(); + tarifaClone.setEmpresaId(this.getMarca() != null && this.getMarca().getEmpresa() != null ? this.getMarca().getEmpresa().getEmpresaId() : null); + } + + @Override + public Tarifa getCloneObject() throws CloneNotSupportedException { + return tarifaClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ID [%s]", getTarifaId()); + } + + public Integer getEmpresaId() { + return empresaId; + } + + public void setEmpresaId(Integer empresaId) { + this.empresaId = empresaId; + } + + public void setTelaAlternativa(String telaAlternativa) { + this.telaAlternativa = telaAlternativa; + } + + @Override + public String getTelaAlternativa() { + return telaAlternativa; + } + } diff --git a/src/com/rjconsultores/ventaboletos/entidad/TarifaOficial.java b/src/com/rjconsultores/ventaboletos/entidad/TarifaOficial.java index 4b4f58015..8906065a0 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/TarifaOficial.java +++ b/src/com/rjconsultores/ventaboletos/entidad/TarifaOficial.java @@ -16,70 +16,128 @@ import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import br.com.rjconsultores.auditador.annotations.AuditarAtributo; +import br.com.rjconsultores.auditador.annotations.AuditarClasse; +import br.com.rjconsultores.auditador.annotations.AuditarID; +import br.com.rjconsultores.auditador.annotations.NaoAuditar; +import br.com.rjconsultores.auditador.interfaces.Auditavel; @Entity @SequenceGenerator(name = "TARIFA_OFICIAL_SEQ", sequenceName = "TARIFA_OFICIAL_SEQ", allocationSize = 1) @Table(name = "TARIFA_OFICIAL") -public class TarifaOficial implements Serializable { +@AuditarClasse(nome = "TARIFA", tela = "Alteração de Preço / Tarifa Oficial", campoEmpresa = "empresaId") +public class TarifaOficial implements Serializable, Auditavel { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @GeneratedValue(strategy = GenerationType.AUTO, generator = "TARIFA_OFICIAL_SEQ") @Column(name = "TARIFAOFICIAL_ID") + @AuditarID private Integer tarifaOficialId; + @Column(name = "PRECIO") + @AuditarAtributo(nome = "Tarifa") private BigDecimal precio; + @Column(name = "PRECIOORIGINAL") + @AuditarAtributo(nome = "Tarifa Original") private BigDecimal preciooriginal; + @Column(name = "IMPORTETAXAEMBARQUE") + @AuditarAtributo(nome = "Taxa de Embarque") private BigDecimal importetaxaembarque; + @Column(name = "IMPORTEPEDAGIO") + @AuditarAtributo(nome = "Pedagio") private BigDecimal importepedagio; + @Column(name = "IMPORTEOUTROS") + @AuditarAtributo(nome = "Outros") private BigDecimal importeoutros; + @Column(name = "IMPORTESEGURO") + @AuditarAtributo(nome = "Seguro") private BigDecimal importeseguro; + @Column(name = "IMPORTETPP") + @AuditarAtributo(nome = "Tarifa TPP") private BigDecimal importetpp; + @Column(name = "STATUSTARIFA") + @AuditarAtributo(nome = "Status Tarifa") private String statustarifa; + @Column(name = "ACTIVO") + @NaoAuditar private Boolean activo; + @Column(name = "FECMODIF") @Temporal(TemporalType.TIMESTAMP) + @NaoAuditar private Date fecmodif; + @Column(name = "USUARIO_ID") + @NaoAuditar private Integer usuarioId; + @OneToOne @JoinColumn(name = "TRAMO_ID") + @NaoAuditar private Tramo tramo; + @OneToOne @JoinColumn(name = "MARCA_ID") + @NaoAuditar private Marca marca; + @OneToOne @JoinColumn(name = "CLASESERVICIO_ID") + @NaoAuditar private ClaseServicio claseServicio; + @OneToOne @JoinColumn(name = "MONEDA_ID") + @NaoAuditar private Moneda moneda; + @OneToOne @JoinColumn(name = "VIGENCIATARIFA_ID") + @NaoAuditar private VigenciaTarifa vigenciaTarifa; + @Column(name = "PRECIOREDABIERTO") + @AuditarAtributo(nome = "Tarifa volta em aberto") private BigDecimal precioredabierto; + @OneToOne @JoinColumn(name = "ORIGEN_ID") + @NaoAuditar private Parada origen; + @OneToOne @JoinColumn(name = "DESTINO_ID") + @NaoAuditar private Parada destino; + @OneToOne @JoinColumn(name = "RUTA_ID") + @NaoAuditar private Ruta ruta; + @OneToOne @JoinColumn(name = "ORGAOCONCEDENTE_ID") + @NaoAuditar private OrgaoConcedente orgaoConcedente; + + @Transient + @NaoAuditar + private TarifaOficial tarifaOficialClone; + + @Transient + private Integer empresaId; public TarifaOficial() { } @@ -283,4 +341,30 @@ public class TarifaOficial implements Serializable { public void setImporteseguro(BigDecimal importeseguro) { this.importeseguro = importeseguro; } + + @Override + public void clonar() throws CloneNotSupportedException { + tarifaOficialClone = new TarifaOficial(); + tarifaOficialClone = (TarifaOficial) this.clone(); + tarifaOficialClone.setEmpresaId(this.getMarca() != null && this.getMarca().getEmpresa() != null ? this.getMarca().getEmpresa().getEmpresaId() : null); + } + + @Override + public TarifaOficial getCloneObject() throws CloneNotSupportedException { + return tarifaOficialClone; + } + + @Override + public String getTextoInclusaoExclusao() { + return String.format("ID [%s]", getTarifaOficialId()); + } + + public Integer getEmpresaId() { + return empresaId; + } + + public void setEmpresaId(Integer empresaId) { + this.empresaId = empresaId; + } + } diff --git a/src/com/rjconsultores/ventaboletos/service/LogAuditoriaService.java b/src/com/rjconsultores/ventaboletos/service/LogAuditoriaService.java new file mode 100644 index 000000000..a5a3ffb74 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/service/LogAuditoriaService.java @@ -0,0 +1,19 @@ +package com.rjconsultores.ventaboletos.service; + +import java.util.List; + +import com.rjconsultores.ventaboletos.entidad.LogAuditoria; + +import br.com.rjconsultores.auditador.model.AuditadorObjects; + +public interface LogAuditoriaService extends GenericService { + + public void auditar(Object objetoOriginal, Object objetoNovo); + + public void auditarExclusao(Object objeto); + + public List listarTodasAsTelas(); + + public void suscribir(List lsObjects); + +} diff --git a/src/com/rjconsultores/ventaboletos/service/impl/EsquemaCorridaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/EsquemaCorridaServiceImpl.java index 2706dee4a..d65523f07 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/EsquemaCorridaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/EsquemaCorridaServiceImpl.java @@ -9,6 +9,7 @@ import java.util.Calendar; import java.util.Date; import java.util.List; +import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -29,7 +30,9 @@ import com.rjconsultores.ventaboletos.entidad.ParadaEsquema; import com.rjconsultores.ventaboletos.entidad.RolOperativo; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.entidad.Tramo; +import com.rjconsultores.ventaboletos.service.EsquemaAsientoService; import com.rjconsultores.ventaboletos.service.EsquemaCorridaService; +import com.rjconsultores.ventaboletos.service.LogAuditoriaService; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; @@ -39,6 +42,8 @@ import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; */ @Service("esquemaCorridaService") public class EsquemaCorridaServiceImpl implements EsquemaCorridaService { + + private static Logger log = Logger.getLogger(EsquemaCorridaServiceImpl.class); @Autowired private EsquemaCorridaDAO esquemaCorridaDAO; @@ -46,13 +51,24 @@ public class EsquemaCorridaServiceImpl implements EsquemaCorridaService { private RutaCombinacionDAO rutaCombinacionDAO; @Autowired private EsquemaTramoDAO esquemaTramoDAO; + @Autowired + private EsquemaAsientoService esquemaAsientoService; + + @Autowired + private LogAuditoriaService logAuditoriaService; public List obtenerTodos() { return esquemaCorridaDAO.obtenerTodos(); } public EsquemaCorrida obtenerID(Integer id) { - return esquemaCorridaDAO.obtenerID(id); + EsquemaCorrida esquemaCorrida = esquemaCorridaDAO.obtenerID(id); + try { + esquemaCorrida.clonar(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return esquemaCorrida; } @Override @@ -86,16 +102,45 @@ public class EsquemaCorridaServiceImpl implements EsquemaCorridaService { entidad.setClaseServicio(c); entidad.setRolOperativo(r); - return esquemaCorridaDAO.actualizacion(entidad); + entidad = esquemaCorridaDAO.actualizacion(entidad); + + logAuditoriaService.auditar(null, entidad); + + return entidad; } @Transactional public EsquemaCorrida actualizacion(EsquemaCorrida entidad) { - entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - entidad.setFecmodif(Calendar.getInstance().getTime()); - entidad.setActivo(Boolean.TRUE); + try { + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); + + EsquemaCorrida clone = entidad.getCloneObject(); + + entidad = esquemaCorridaDAO.actualizacion(entidad); + entidad.clonar(); + EsquemaCorrida novoClone = entidad.getCloneObject(); + + novoClone.setEsquemaAsientoList(null); + List lsAsientos = esquemaAsientoService.obtenerPorCorrida(entidad); + if(lsAsientos != null) { + List lsNovoAsientos = new ArrayList(); + for (EsquemaAsiento esquemaAsiento : lsAsientos) { + esquemaAsiento.clonar(); + lsNovoAsientos.add(esquemaAsiento.getCloneObject()); + } + novoClone.setEsquemaAsientoList(lsNovoAsientos); + } + + logAuditoriaService.auditar(clone, entidad.getCloneObject()); + + return entidad; + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new RuntimeException(e.getMessage(), e); + } - return esquemaCorridaDAO.actualizacion(entidad); } @Transactional @@ -116,6 +161,8 @@ public class EsquemaCorridaServiceImpl implements EsquemaCorridaService { entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Boolean.FALSE); + + logAuditoriaService.auditarExclusao(entidad); esquemaCorridaDAO.actualizacion(entidad); } @@ -139,54 +186,72 @@ public class EsquemaCorridaServiceImpl implements EsquemaCorridaService { @Transactional public void actualizaEsquemaTramo(List listParadaEsquema, EsquemaCorrida ec) { - - ec = this.obtenerID(ec.getEsquemacorridaId()); - if (ec.getEsquemaTramoList() != null) { - for (EsquemaTramo et : ec.getEsquemaTramoList()) { - et.setActivo(Boolean.FALSE); - et.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + + try { + + ec = this.obtenerID(ec.getEsquemacorridaId()); + ec.clonar(); + EsquemaCorrida originalClone = ec.getCloneObject(); + ec.clonar(); + EsquemaCorrida novoClone = ec.getCloneObject(); + List lsTramosNovo = new ArrayList(); + + if (ec.getEsquemaTramoList() != null) { + for (EsquemaTramo et : ec.getEsquemaTramoList()) { + et.setActivo(Boolean.FALSE); + et.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + et.setFecmodif(Calendar.getInstance().getTime()); + esquemaTramoDAO.actualizacion(et); + } + } + + Date dataHorInicioSistema = DateUtil.getFecInicio().getTime(); + for (int i = 0; (i < listParadaEsquema.size() - 1); i++) { + Parada paradaOrigen = listParadaEsquema.get(i).getParada(); + Parada paradaDestino = listParadaEsquema.get(i + 1).getParada(); + + Tramo t = rutaCombinacionDAO.busqueda(ec.getRuta(), paradaOrigen, paradaDestino); + + if (t == null) { + throw new RuntimeException("No fue encontrado el tramo para el origen:" + paradaOrigen + " y destino:" + paradaDestino); + } + + EsquemaTramo et = new EsquemaTramo(); + et.setActivo(Boolean.TRUE); + et.setEsquemaCorrida(ec); et.setFecmodif(Calendar.getInstance().getTime()); - esquemaTramoDAO.actualizacion(et); + et.setNumsecuencia((short) (i + 1)); + et.setTramo(t); + et.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + et.setPlataforma(listParadaEsquema.get(i).getPlataforma()); + et.setTipoPassagem(listParadaEsquema.get(i).getTipoPassagem()); + Date tiempoEstancia = listParadaEsquema.get(i).getTiempoEstancia(); + if ((tiempoEstancia != null) && (DateUtil.compareDate(tiempoEstancia, dataHorInicioSistema) == 0)) { + et.setTiempoEstancia(null); + } else { + et.setTiempoEstancia(tiempoEstancia); + } + + Date excepcionRecorrido = listParadaEsquema.get(i).getExcepcionRecorrido(); + if ((excepcionRecorrido != null) && (DateUtil.compareDate(excepcionRecorrido, dataHorInicioSistema) == 0)) { + et.setExcepcionRecorrido(null); + } else { + et.setExcepcionRecorrido(excepcionRecorrido); + } + if(esquemaTramoDAO.verificarDuplicidadeEsquemaTramo(et)){ + throw new RuntimeException("No es possible suscribir tramos duplicados."); + } + esquemaTramoDAO.suscribir(et); + + lsTramosNovo.add(et); } - } - - Date dataHorInicioSistema = DateUtil.getFecInicio().getTime(); - for (int i = 0; (i < listParadaEsquema.size() - 1); i++) { - Parada paradaOrigen = listParadaEsquema.get(i).getParada(); - Parada paradaDestino = listParadaEsquema.get(i + 1).getParada(); - - Tramo t = rutaCombinacionDAO.busqueda(ec.getRuta(), paradaOrigen, paradaDestino); - - if (t == null) { - throw new RuntimeException("No fue encontrado el tramo para el origen:" + paradaOrigen + " y destino:" + paradaDestino); - } - - EsquemaTramo et = new EsquemaTramo(); - et.setActivo(Boolean.TRUE); - et.setEsquemaCorrida(ec); - et.setFecmodif(Calendar.getInstance().getTime()); - et.setNumsecuencia((short) (i + 1)); - et.setTramo(t); - et.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - et.setPlataforma(listParadaEsquema.get(i).getPlataforma()); - et.setTipoPassagem(listParadaEsquema.get(i).getTipoPassagem()); - Date tiempoEstancia = listParadaEsquema.get(i).getTiempoEstancia(); - if ((tiempoEstancia != null) && (DateUtil.compareDate(tiempoEstancia, dataHorInicioSistema) == 0)) { - et.setTiempoEstancia(null); - } else { - et.setTiempoEstancia(tiempoEstancia); - } - - Date excepcionRecorrido = listParadaEsquema.get(i).getExcepcionRecorrido(); - if ((excepcionRecorrido != null) && (DateUtil.compareDate(excepcionRecorrido, dataHorInicioSistema) == 0)) { - et.setExcepcionRecorrido(null); - } else { - et.setExcepcionRecorrido(excepcionRecorrido); - } - if(esquemaTramoDAO.verificarDuplicidadeEsquemaTramo(et)){ - throw new RuntimeException("No es possible suscribir tramos duplicados."); - } - esquemaTramoDAO.suscribir(et); + novoClone.setEsquemaTramoList(lsTramosNovo); + + logAuditoriaService.auditar(originalClone, novoClone); + + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new RuntimeException(e.getMessage(), e); } } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/LogAuditoriaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/LogAuditoriaServiceImpl.java new file mode 100644 index 000000000..ef64bed49 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/service/impl/LogAuditoriaServiceImpl.java @@ -0,0 +1,134 @@ +package com.rjconsultores.ventaboletos.service.impl; + +import java.util.Calendar; +import java.util.List; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.rjconsultores.ventaboletos.dao.LogAuditoriaDAO; +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.LogAuditoria; +import com.rjconsultores.ventaboletos.service.LogAuditoriaService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; + +import br.com.rjconsultores.auditador.auditadores.Auditador; +import br.com.rjconsultores.auditador.enums.AuditadorTipoAlteracao; +import br.com.rjconsultores.auditador.model.AuditadorObjects; + +@Service("LogAuditoriaService") +public class LogAuditoriaServiceImpl implements LogAuditoriaService { + + private static Logger log = Logger.getLogger(LogAuditoriaServiceImpl.class); + + @Autowired + private LogAuditoriaDAO logAuditoriaDAO; + + @Override + public List obtenerTodos() { + return logAuditoriaDAO.obtenerTodos(); + } + + @Override + public LogAuditoria obtenerID(Long id) { + return logAuditoriaDAO.obtenerID(id); + } + + @Override + @Transactional + public LogAuditoria suscribir(LogAuditoria entidad) { + entidad.setUsuario(UsuarioLogado.getUsuarioLogado()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); + return logAuditoriaDAO.suscribir(entidad); + } + + @Override + @Transactional + public LogAuditoria actualizacion(LogAuditoria entidad) { + entidad.setUsuario(UsuarioLogado.getUsuarioLogado()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); + return logAuditoriaDAO.actualizacion(entidad); + } + + @Override + @Transactional + public void borrar(LogAuditoria entidad) { + entidad.setUsuario(UsuarioLogado.getUsuarioLogado()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.FALSE); + logAuditoriaDAO.actualizacion(entidad); + } + + @Override + @Transactional + public void auditar(Object original, Object novo) { + try { + log.info(String.format(":: Iniciando gravação registros de auditoria classe: %s", novo.getClass().toString())); + Integer totalRegistrosAuditados = 0; + List lista = Auditador.getInstance().auditar(original, novo); + if(lista != null && !lista.isEmpty()) { + suscribir(lista); + totalRegistrosAuditados = lista.size(); + } + log.info(String.format(":: Iniciando gravação registros de auditoria classe: %s - Total Registros auditados: %d", novo.getClass().toString(), totalRegistrosAuditados)); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + + private LogAuditoria convertToLogAuditoria(AuditadorObjects log) { + LogAuditoria logAuditoria = new LogAuditoria(); + logAuditoria.setUsuario(UsuarioLogado.getUsuarioLogado()); + logAuditoria.setFecmodif(Calendar.getInstance().getTime()); + logAuditoria.setActivo(Boolean.TRUE); + logAuditoria.setCampoAlterado(log.getCampoAlterado() != null ? log.getCampoAlterado().toUpperCase() : null); + logAuditoria.setClasseAlterada(log.getClasseAlterada()); + logAuditoria.setClassePrincipal(log.getClassePrincipal()); + logAuditoria.setTela(log.getTela()); + logAuditoria.setTipoAlteracao(log.getTipoAlteracao() != null ? log.getTipoAlteracao().toString() : AuditadorTipoAlteracao.ALTERACAO.toString()); + logAuditoria.setValorAnterior(log.getValorAnterior() != null ? log.getValorAnterior().toUpperCase() : null); + logAuditoria.setValorNovo(log.getValorNovo() != null ? log.getValorNovo().toUpperCase() : null); + logAuditoria.setIdAuditado(log.getIdAuditado()); + + if(log.getEmpresaId() != null) { + logAuditoria.setEmpresa(new Empresa(log.getEmpresaId())); + } + return logAuditoria; + } + + @Override + @Transactional + public void auditarExclusao(Object objeto) { + try { + log.info(String.format(":: Iniciando gravação registros de auditoria de exclusao classe: %s", objeto.getClass().getSimpleName())); + Integer totalRegistrosAuditados = 0; + List lista = Auditador.getInstance().auditarExclusao(objeto); + if(lista != null && !lista.isEmpty()) { + suscribir(lista); + totalRegistrosAuditados = lista.size(); + } + log.info(String.format(":: Iniciando gravação registros de auditoria de exclusao classe: %s - Total Registros auditados: %d", objeto.getClass().getSimpleName(), totalRegistrosAuditados)); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + + @Override + public List listarTodasAsTelas() { + return logAuditoriaDAO.listarTodasAsTelas(); + } + + @Override + @Transactional + public void suscribir(List lsObjects) { + for (AuditadorObjects auditado : lsObjects) { + LogAuditoria logAuditoria = convertToLogAuditoria(auditado); + suscribir(logAuditoria); + } + } + +} diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TarifaOficialServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TarifaOficialServiceImpl.java index adda5cc82..fdfed24c8 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/TarifaOficialServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/TarifaOficialServiceImpl.java @@ -26,6 +26,7 @@ import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.Via; import com.rjconsultores.ventaboletos.entidad.VigenciaTarifa; import com.rjconsultores.ventaboletos.exception.BusinessException; +import com.rjconsultores.ventaboletos.service.LogAuditoriaService; import com.rjconsultores.ventaboletos.service.TarifaOficialService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.vo.comissao.TarifaOficialVO; @@ -43,6 +44,9 @@ public class TarifaOficialServiceImpl implements TarifaOficialService { private SeguroTarifaDAO seguroTarifaDAO; @Autowired private OrgaoConcedenteDAO orgaoConcedenteDAO; + + @Autowired + private LogAuditoriaService logAuditoriaService; @Override @Transactional @@ -245,18 +249,34 @@ public class TarifaOficialServiceImpl implements TarifaOficialService { @Override @Transactional public void actualizacion(TarifaOficial tarifaOficial) { - tarifaOficialDAO.actualizacion(tarifaOficial); + try { + TarifaOficial originalClone = tarifaOficial.getCloneObject(); + tarifaOficialDAO.actualizacion(tarifaOficial); + tarifaOficial.setEmpresaId(tarifaOficial.getMarca() != null && tarifaOficial.getMarca().getEmpresa() != null ? tarifaOficial.getMarca().getEmpresa().getEmpresaId() : null); + logAuditoriaService.auditar(originalClone, tarifaOficial); + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new RuntimeException(e.getMessage(), e); + } } @Override public TarifaOficial obtenerID(Integer tarifaOficialId) { - return tarifaOficialDAO.obtenerID(tarifaOficialId); + TarifaOficial tarifaOficial = tarifaOficialDAO.obtenerID(tarifaOficialId); + try { + tarifaOficial.clonar(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return tarifaOficial; } @Override @Transactional public void borrar(TarifaOficial tarifaOficial) { tarifaOficialDAO.borrar(tarifaOficial); + tarifaOficial.setEmpresaId(tarifaOficial.getMarca() != null && tarifaOficial.getMarca().getEmpresa() != null ? tarifaOficial.getMarca().getEmpresa().getEmpresaId() : null); + logAuditoriaService.auditarExclusao(tarifaOficial); } @Override diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java index d86d8a2ab..e4e14e04b 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java @@ -36,6 +36,7 @@ import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.Via; import com.rjconsultores.ventaboletos.entidad.VigenciaTarifa; import com.rjconsultores.ventaboletos.exception.BusinessException; +import com.rjconsultores.ventaboletos.service.LogAuditoriaService; import com.rjconsultores.ventaboletos.service.MonedaService; import com.rjconsultores.ventaboletos.service.RutaService; import com.rjconsultores.ventaboletos.service.TarifaHistService; @@ -61,6 +62,10 @@ public class TarifaServiceImpl implements TarifaService { private TarifaMinimaService tarifaMinimaService; @Autowired private RutaService rutaService; + + @Autowired + private LogAuditoriaService logAuditoriaService; + private static Logger log = Logger.getLogger(TarifaServiceImpl.class); public List obtenerTodos() { @@ -69,7 +74,13 @@ public class TarifaServiceImpl implements TarifaService { @Transactional(readOnly = true) public Tarifa obtenerID(Integer id) { - return tarifaDAO.obtenerID(id); + Tarifa tarifa = tarifaDAO.obtenerID(id); + try { + tarifa.clonar(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return tarifa; } private void cadastrarTarifaHistorico(Tarifa entidad) { @@ -103,36 +114,57 @@ public class TarifaServiceImpl implements TarifaService { entidad.setPrecioredabierto(entidad.getPrecioredabierto().setScale(2, RoundingMode.HALF_UP)); } cadastrarTarifaHistorico(entidad); - + + entidad.setEmpresaId(entidad.getMarca() != null && entidad.getMarca().getEmpresa() != null ? entidad.getMarca().getEmpresa().getEmpresaId() : null); + + logAuditoriaService.auditar(null, entidad); + return tarifaDAO.suscribir(entidad); + } @Transactional public Tarifa actualizacion(Tarifa entidad) { - entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - entidad.setFecmodif(Calendar.getInstance().getTime()); - entidad.setActivo(Boolean.TRUE); - if (entidad.getPrecio() != null) { - entidad.setPrecio(entidad.getPrecio().setScale(2, RoundingMode.HALF_UP)); + try { + + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); + if (entidad.getPrecio() != null) { + entidad.setPrecio(entidad.getPrecio().setScale(2, RoundingMode.HALF_UP)); + } + if (entidad.getPreciooriginal() != null) { + entidad.setPreciooriginal(entidad.getPreciooriginal().setScale(2, RoundingMode.HALF_UP)); + } + if (entidad.getPrecioredabierto() != null) { + entidad.setPrecioredabierto(entidad.getPrecioredabierto().setScale(2, RoundingMode.HALF_UP)); + } + + // Rafael: Segundo a Letícia, não pode atualizar o DOLAR caso haja uma + // atualização de preço, os dolores somente são gerados na inclusão de preço. + + // Tarifa tarifa = this.obtenerID(entidad.getTarifaId()); + // entidad.setLsTarifaCategoria(tarifa.getLsTarifaCategoria()); + // entidad.setLsTarifaTipoptovta(tarifa.getLsTarifaTipoptovta()); + + cadastrarTarifaHistorico(entidad); + // cadastrarTarifaMonedaEstrangeira(entidad); + + + Tarifa originalClone = entidad.getCloneObject(); + + tarifaDAO.updateTarifa(entidad); + + entidad.setEmpresaId(entidad.getMarca() != null && entidad.getMarca().getEmpresa() != null ? entidad.getMarca().getEmpresa().getEmpresaId() : null); + + logAuditoriaService.auditar(originalClone, entidad); + + return entidad; + + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new RuntimeException(e.getMessage(), e); } - if (entidad.getPreciooriginal() != null) { - entidad.setPreciooriginal(entidad.getPreciooriginal().setScale(2, RoundingMode.HALF_UP)); - } - if (entidad.getPrecioredabierto() != null) { - entidad.setPrecioredabierto(entidad.getPrecioredabierto().setScale(2, RoundingMode.HALF_UP)); - } - - // Rafael: Segundo a Letícia, não pode atualizar o DOLAR caso haja uma - // atualização de preço, os dolores somente são gerados na inclusão de preço. - - // Tarifa tarifa = this.obtenerID(entidad.getTarifaId()); - // entidad.setLsTarifaCategoria(tarifa.getLsTarifaCategoria()); - // entidad.setLsTarifaTipoptovta(tarifa.getLsTarifaTipoptovta()); - - cadastrarTarifaHistorico(entidad); - // cadastrarTarifaMonedaEstrangeira(entidad); - tarifaDAO.updateTarifa(entidad); - return entidad; } @Transactional @@ -154,6 +186,10 @@ public class TarifaServiceImpl implements TarifaService { entidad.setActivo(Boolean.FALSE); cadastrarTarifaHistorico(entidad); + + entidad.setEmpresaId(entidad.getMarca() != null && entidad.getMarca().getEmpresa() != null ? entidad.getMarca().getEmpresa().getEmpresaId() : null); + + logAuditoriaService.auditarExclusao(entidad); tarifaDAO.actualizacion(entidad); } @@ -251,8 +287,12 @@ public class TarifaServiceImpl implements TarifaService { log.debug("Tarifa: Ruta " + ruta.getDescruta() + " - " + ruta.getRutaId() + " Tramo: " + tarifa.getTramo().getTramoId() + " Marca " + marca + " Vigencia: " + vigencia); - + tarifa = tarifaDAO.suscribir(tarifa); + + tarifa.setEmpresaId(tarifa.getMarca() != null && tarifa.getMarca().getEmpresa() != null ? tarifa.getMarca().getEmpresa().getEmpresaId() : null); + + logAuditoriaService.auditar(null, tarifa); } } }