Rev 195 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
package br.com.ec.domain.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.persistence.Transient;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.annotations.ForeignKey;
import br.edu.cesmac.core.generic.identidade.Identidade;
import br.edu.cesmac.core.interfaces.Alterar;
import br.edu.cesmac.core.interfaces.Cadastrar;
import br.edu.cesmac.core.util.StringUtil;
import br.edu.cesmac.core.util.VerificadorUtil;
@
Entity
@Table
(name=
"sec_pedido_produto", schema=
"sc_sec")
public class PedidoProduto
implements Serializable, Identidade
{
private static final long serialVersionUID = 1L
;
private PedidoProdutoId pedidoProdutoId
;
private Pedido pedido
;
private Produto produto
;
private Integer quantidade =
1;
private Double valor
;
private String observacao
;
public PedidoProduto
() {
this.
pedidoProdutoId =
new PedidoProdutoId
();
}
public PedidoProduto
(PedidoProdutoId produtoPedidoId
) {
this.
pedidoProdutoId = produtoPedidoId
;
}
public PedidoProduto
(Produto produto, Pedido pedido
) {
pedidoProdutoId =
new PedidoProdutoId
();
setPedido
(pedido
);
setProduto
(produto
);
}
@
Override
@Transient
public Object getId
() {
return getProdutoPedidoId
();
}
@
Override
public void setId
(Object id
) {
this.
pedidoProdutoId =
(PedidoProdutoId
) id
;
}
@EmbeddedId
public PedidoProdutoId getProdutoPedidoId
() {
return pedidoProdutoId
;
}
public void setProdutoPedidoId
(PedidoProdutoId produtoPedidoId
) {
this.
pedidoProdutoId = produtoPedidoId
;
}
@ManyToOne
@ForeignKey
(name=
"fk_pedidoproduto_pedido")
@JoinColumn
(name =
"seq_pedido", insertable=
false, updatable=
false, nullable =
false)
public Pedido getPedido
() {
return pedido
;
}
public void setPedido
(Pedido pedido
) {
if (VerificadorUtil.
naoEstaNulo(pedido
)) {
pedidoProdutoId.
setSequencialPedido(pedido.
getSequencial());
}
this.
pedido = pedido
;
}
@ManyToOne
@ForeignKey
(name=
"fk_pedidoproduto_produto")
@JoinColumn
(name =
"seq_produto", insertable=
false, updatable=
false, nullable =
false)
public Produto getProduto
() {
return produto
;
}
public void setProduto
(Produto produto
) {
if (VerificadorUtil.
naoEstaNulo(produto
)) {
pedidoProdutoId.
setSequencialProduto(produto.
getSequencial());
}
this.
produto = produto
;
}
@Column
(name=
"qtd_produto")
@NotNull
(message =
"Parâmetro obrigatório não preenchido: Quantidade do produto pedido", groups =
{Cadastrar.
class, Alterar.
class})
public Integer getQuantidade
() {
return quantidade
;
}
public void setQuantidade
(Integer quantidade
) {
this.
quantidade = quantidade
;
}
@Column
(name=
"val_venda")
@NotNull
(message =
"Parâmetro obrigatório não preenchido: Valor do produto pedido", groups =
{Cadastrar.
class, Alterar.
class})
public Double getValor
() {
return valor
;
}
public void setValor
(Double valor
) {
this.
valor = valor
;
}
@Column
(name=
"dsc_observacao")
@Size
(max =
250, message =
"Limite de caracteres ultrapassado: Observação")
public String getObservacao
() {
return observacao
;
}
public void setObservacao
(String observacao
) {
this.
observacao = StringUtil.
setarUpperCaseComTrim(observacao
);
}
@Transient
public Long getSequencialDoPedido
() {
return VerificadorUtil.
naoEstaNulo(pedido
)? pedido.
getSequencial() :
null;
}
@Transient
public Long getSequencialDoProduto
() {
return VerificadorUtil.
naoEstaNulo(produto
)? produto.
getSequencial() :
null;
}
@
Override
public int hashCode
() {
final int prime =
31;
int result =
1;
result = prime
* result +
((pedidoProdutoId ==
null) ? 0 : pedidoProdutoId.
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;
PedidoProduto other =
(PedidoProduto
) obj
;
if (pedidoProdutoId ==
null) {
if (other.
pedidoProdutoId !=
null)
return false;
} else if (!pedidoProdutoId.
equals(other.
pedidoProdutoId))
return false;
return true;
}
}