package br.gov.al.saude.srv.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import br.gov.al.saude.framework.core.interfaces.Alterar;
import br.gov.al.saude.framework.core.interfaces.Cadastrar;
import br.gov.al.saude.srv.model.embedded.ServidorContaBancarialId;
@
Entity
@Table
(name =
"srv_servidor_conta_bancaria", schema =
"sc_srv")
public class ServidorContaBancaria
implements Serializable,
Comparable<ServidorContaBancaria
> {
private static final long serialVersionUID = 1L
;
private ServidorContaBancarialId servidorContaBancarialId =
new ServidorContaBancarialId
();
private Servidor servidor
;
private Banco banco
;
private String numeroAgencia
;
private String numeroConta
;
private Integer numeroOperacao
;
@EmbeddedId
public ServidorContaBancarialId getServidorContaBancarialId
() {
return servidorContaBancarialId
;
}
public void setServidorContaBancarialId
(ServidorContaBancarialId servidorContaBancarialId
) {
this.
servidorContaBancarialId = servidorContaBancarialId
;
}
@ManyToOne
@JoinColumn
(name=
"seq_pessoa_servidor", referencedColumnName=
"seq_pessoa_servidor", nullable=
false, insertable=
false, updatable=
false)
public Servidor getServidor
() {
return servidor
;
}
public void setServidor
(Servidor servidor
) {
getServidorContaBancarialId
().
setSequencialPessoaServidor(servidor.
getPessoa().
getSequencialPessoa());
this.
servidor = servidor
;
}
@ManyToOne
@JoinColumn
(name=
"cod_banco", referencedColumnName=
"cod_banco", nullable=
false, insertable=
false, updatable=
false)
@NotNull
(message=
"Obrigatório informar o Banco.", groups=
{Cadastrar.
class, Alterar.
class})
public Banco getBanco
() {
return banco
;
}
public void setBanco
(Banco banco
) {
if (getServidorContaBancarialId
() !=
null && banco
!=
null) {
getServidorContaBancarialId
().
setCodigoBanco(banco.
getCodigo());
}
this.
banco = banco
;
}
@Column
(name=
"num_conta_bancaria", length=
20, nullable=
false)
@NotNull
(message=
"Obrigatório informar o número da conta.", groups=
{Cadastrar.
class, Alterar.
class})
public String getNumeroConta
() {
return numeroConta
;
}
public void setNumeroConta
(String numeroConta
) {
this.
numeroConta = numeroConta
;
}
@Column
(name=
"num_agencia", length=
1)
@NotNull
(message=
"Obrigatório informar o número da agência.", groups=
{Cadastrar.
class, Alterar.
class})
public String getNumeroAgencia
() {
return numeroAgencia
;
}
public void setNumeroAgencia
(String numeroAgencia
) {
this.
numeroAgencia = numeroAgencia
;
}
@Column
(name=
"num_operacao_contabancaria", length=
2)
public Integer getNumeroOperacao
() {
return numeroOperacao
;
}
public void setNumeroOperacao
(Integer numeroOperacao
) {
this.
numeroOperacao = numeroOperacao
;
}
@
Override
public int hashCode
() {
final int prime =
31;
int result =
1;
result = prime
* result
+
((servidorContaBancarialId ==
null) ? 0
: servidorContaBancarialId.
hashCode());
return result
;
}
@
Override
public boolean equals
(Object obj
) {
if (this == obj
)
return true;
if (obj ==
null)
return false;
if (getClass
() != obj.
getClass())
return false;
ServidorContaBancaria other =
(ServidorContaBancaria
) obj
;
if (servidorContaBancarialId ==
null) {
if (other.
servidorContaBancarialId !=
null)
return false;
} else if (!servidorContaBancarialId
.
equals(other.
servidorContaBancarialId))
return false;
return true;
}
@
Override
public int compareTo
(ServidorContaBancaria scb
) {
return getBanco
().
getCodigo().
compareTo(scb.
getBanco().
getCodigo());
}
}