package com.rjconsultores.ventaboletos.entidad; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; 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.annotations.Fetch; import org.hibernate.annotations.FetchMode; import org.hibernate.annotations.Where; 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 @Table(name = "OPERADOR_EMBARCADA") @AuditarClasse(nome = "OPERADOR_EMBARCADA", tela = "auditarClasse.OperadorEmbarcada") @SequenceGenerator(name = "OPERADOR_EMBARCADA_SEQ", sequenceName = "OPERADOR_EMBARCADA_SEQ", allocationSize = 1) public class OperadorEmbarcada implements Serializable, Auditavel { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @GeneratedValue(strategy = GenerationType.AUTO, generator = "OPERADOR_EMBARCADA_SEQ") @Column(name = "OPERADOR_EMBARCADA_ID") @AuditarID private Long operadorEmbarcadaId; @OneToOne @JoinColumn(name = "USUARIO_ID") private Usuario usuario; @OneToMany(mappedBy = "operadorEmbarcada", cascade = CascadeType.ALL, fetch = FetchType.EAGER) @Fetch(FetchMode.SELECT) @Where(clause="activo=1") private List linhas; @OneToMany(mappedBy = "operadorEmbarcada", cascade = CascadeType.ALL, fetch = FetchType.EAGER) @Fetch(FetchMode.SELECT) @Where(clause="activo=1") private List servicos; @Column(name = "FECMODIF") @Temporal(TemporalType.TIMESTAMP) private Date fecmodif; @Column(name = "ACTIVO") private Boolean activo; @Transient @NaoAuditar private OperadorEmbarcada operadorClone; public Long getOperadorEmbarcadaId() { return operadorEmbarcadaId; } public void setOperadorEmbarcadaId(Long operadorEmbarcadaId) { this.operadorEmbarcadaId = operadorEmbarcadaId; } public Usuario getUsuario() { return usuario; } public void setUsuario(Usuario usuario) { this.usuario = usuario; } public List getLinhas() { List tmp = new ArrayList(); if (linhas != null) { for (OperadorEmbarcadaLinha es : linhas) { if (es.getActivo()) { tmp.add(es); } } } return tmp; } public void setLinhas(List linhas) { this.linhas = linhas; } public List getServicos() { List tmp = new ArrayList(); if (servicos != null) { for (OperadorEmbarcadaServico es : servicos) { if (es.getActivo()) { tmp.add(es); } } } return tmp; } public void setServicos(List servicos) { this.servicos = servicos; } public Boolean getActivo() { return activo == null ? false : activo; } public void setActivo(Boolean activo) { this.activo = activo; } public Date getFecmodif() { return fecmodif; } public void setFecmodif(Date fecmodif) { this.fecmodif = fecmodif; } public Integer getUsuarioId() { return this.usuario.getUsuarioId(); } public String getUsername() { return this.usuario.getClaveUsuario(); } public String getName() { return usuario.getName(); } @Override public void clonar() throws CloneNotSupportedException { operadorClone = new OperadorEmbarcada(); operadorClone = (OperadorEmbarcada) this.clone(); } @Override public OperadorEmbarcada getCloneObject() throws CloneNotSupportedException { return operadorClone; } @Override public String getTextoInclusaoExclusao() { return String.format("ID [%s]", getOperadorEmbarcadaId()); } }