Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

package br.gov.al.saude.srv.model.historico;

import java.io.Serializable;
import java.util.Date;
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.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import org.hibernate.envers.RevisionEntity;
import org.hibernate.envers.RevisionNumber;
import org.hibernate.envers.RevisionTimestamp;
import br.gov.al.saude.framework.core.generic.auditoria.IRevisaoEntidade;
import br.gov.al.saude.framework.core.util.VerificadorUtil;
import br.gov.al.saude.framework.model.UsuarioView;

@Entity
@Table(name="srv_revisao_historico", schema="sc_srv")
@RevisionEntity(RevisaoListener.class)
public class RevisaoEntity implements Serializable, IRevisaoEntidade {
       
        private static final long serialVersionUID = -1255842407304508513L;

        private Long sequencial;
        private Date dataHoraHistorico;
        private Long usuario;
        private UsuarioView usuarioView;
       
        @Id
        @GeneratedValue(generator="REVISAO_GENERATOR", strategy = GenerationType.SEQUENCE)
        @SequenceGenerator(name="REVISAO_GENERATOR", sequenceName = "sc_srv.sq_revishistori", initialValue = 1, allocationSize = 1, schema="sc_srv")
        @RevisionNumber
        @Column(name="seq_revisao_historico")
        public Long getSequencial() {
                return sequencial;
        }

        public void setSequencial(Long sequencial) {
                this.sequencial = sequencial;
        }

        @RevisionTimestamp
        @Column(name="dth_historico")
        @Temporal(TemporalType.TIMESTAMP)
        public Date getDataHoraHistorico() {
                return dataHoraHistorico;
        }

        public void setDataHoraHistorico(Date dataHoraHistorico) {
                this.dataHoraHistorico = dataHoraHistorico;
        }

        @Column(name="seq_pessoa_usuario")
        public Long getUsuario() {
                return usuario;
        }

        public void setUsuario(Long usuario) {
                this.usuario = usuario;
        }

        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime
                                * result
                                + ((dataHoraHistorico == null) ? 0 : dataHoraHistorico
                                                .hashCode());
                result = prime * result
                                + ((sequencial == null) ? 0 : sequencial.hashCode());
                result = prime * result + ((usuario == null) ? 0 : usuario.hashCode());
                return result;
        }
       
        @OneToOne
        @JoinColumn(name="seq_pessoa_usuario", referencedColumnName="seq_pessoa", insertable=false, updatable=false)
        public UsuarioView getUsuarioView() {
                return usuarioView;
        }
       
        public void setUsuarioView(UsuarioView usuarioView) {
                this.usuarioView = usuarioView;
        }
       
        @Transient
        @Override
        public String getNomeUsuario() {
                return VerificadorUtil.naoEstaNulo(getUsuarioView())? getUsuarioView().getNomePessoa() : null;
        }

        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (!(obj instanceof RevisaoEntity))
                        return false;
                RevisaoEntity other = (RevisaoEntity) obj;
                if (dataHoraHistorico == null) {
                        if (other.dataHoraHistorico != null)
                                return false;
                } else if (!dataHoraHistorico.equals(other.dataHoraHistorico))
                        return false;
                if (sequencial == null) {
                        if (other.sequencial != null)
                                return false;
                } else if (!sequencial.equals(other.sequencial))
                        return false;
                if (usuario == null) {
                        if (other.usuario != null)
                                return false;
                } else if (!usuario.equals(other.usuario))
                        return false;
                return true;
        }

}