Subversion Repositories Integrator Subversion

Rev

Rev 106 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
106 espaco 1
package br.com.ec.domain.model;
2
 
3
import java.io.Serializable;
4
 
5
import javax.persistence.Column;
6
import javax.persistence.EmbeddedId;
7
import javax.persistence.Entity;
8
import javax.persistence.JoinColumn;
9
import javax.persistence.ManyToOne;
10
import javax.persistence.Table;
11
import javax.persistence.Transient;
12
import javax.validation.constraints.NotNull;
13
import javax.validation.constraints.Size;
14
 
15
import org.hibernate.annotations.ForeignKey;
16
 
195 espaco 17
import br.com.ec.core.generic.identidade.Identidade;
18
import br.com.ec.core.interfaces.Alterar;
19
import br.com.ec.core.interfaces.Cadastrar;
20
import br.com.ec.core.util.StringUtil;
21
import br.com.ec.core.util.VerificadorUtil;
106 espaco 22
 
23
@Entity
24
@Table(name="sec_pedido_produto", schema="sc_sec")
25
public class PedidoProduto implements Serializable, Identidade {
26
 
27
        private static final long serialVersionUID = 1L;
28
 
29
        private PedidoProdutoId pedidoProdutoId;
30
        private Pedido pedido;
31
        private Produto produto;
32
        private Integer quantidade = 1;
33
        private Double valor;
34
        private String observacao;
35
 
36
        public PedidoProduto() {
37
                this.pedidoProdutoId = new PedidoProdutoId();
38
        }
39
 
40
        public PedidoProduto(PedidoProdutoId produtoPedidoId) {
41
                this.pedidoProdutoId = produtoPedidoId;
42
        }
43
 
44
        public PedidoProduto(Produto produto, Pedido pedido) {
45
                pedidoProdutoId = new PedidoProdutoId();
46
                setPedido(pedido);
47
                setProduto(produto);
48
        }
49
 
50
        @Override
51
        @Transient
52
        public Object getId() {
53
                return getProdutoPedidoId();
54
        }
55
        @Override
56
        public void setId(Object id) {
57
                this.pedidoProdutoId = (PedidoProdutoId) id;
58
        }
59
 
60
        @EmbeddedId
61
        public PedidoProdutoId getProdutoPedidoId() {
62
                return pedidoProdutoId;
63
        }
64
        public void setProdutoPedidoId(PedidoProdutoId produtoPedidoId) {
65
                this.pedidoProdutoId = produtoPedidoId;
66
        }
67
 
68
        @ManyToOne
69
        @ForeignKey(name="fk_pedidoproduto_pedido")
70
        @JoinColumn(name = "seq_pedido", insertable=false, updatable=false, nullable = false)
71
        public Pedido getPedido() {
72
                return pedido;
73
        }
74
        public void setPedido(Pedido pedido) {
75
                if (VerificadorUtil.naoEstaNulo(pedido)) {
76
                        pedidoProdutoId.setSequencialPedido(pedido.getSequencial());
77
                }
78
                this.pedido = pedido;
79
        }
80
 
81
        @ManyToOne
82
        @ForeignKey(name="fk_pedidoproduto_produto")
83
        @JoinColumn(name = "seq_produto", insertable=false, updatable=false, nullable = false)
84
        public Produto getProduto() {
85
                return produto;
86
        }
87
        public void setProduto(Produto produto) {
88
                if (VerificadorUtil.naoEstaNulo(produto)) {
89
                        pedidoProdutoId.setSequencialProduto(produto.getSequencial());
90
                }
91
                this.produto = produto;
92
        }
93
 
94
        @Column(name="qtd_produto")
95
        @NotNull(message = "Parâmetro obrigatório não preenchido: Quantidade do produto pedido", groups = {Cadastrar.class, Alterar.class})
96
        public Integer getQuantidade() {
97
                return quantidade;
98
        }
99
        public void setQuantidade(Integer quantidade) {
100
                this.quantidade = quantidade;
101
        }
102
 
103
        @Column(name="val_venda")
104
        @NotNull(message = "Parâmetro obrigatório não preenchido: Valor do produto pedido", groups = {Cadastrar.class, Alterar.class})
105
        public Double getValor() {
106
                return valor;
107
        }
108
        public void setValor(Double valor) {
109
                this.valor = valor;
110
        }
111
 
112
        @Column(name="dsc_observacao")
113
        @Size(max = 250, message = "Limite de caracteres ultrapassado: Observação")
114
        public String getObservacao() {
115
                return observacao;
116
        }
117
        public void setObservacao(String observacao) {
118
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
119
        }
120
 
121
        @Transient
122
        public Long getSequencialDoPedido() {
123
                return VerificadorUtil.naoEstaNulo(pedido)? pedido.getSequencial() : null;
124
        }
125
 
126
        @Transient
127
        public Long getSequencialDoProduto() {
128
                return VerificadorUtil.naoEstaNulo(produto)? produto.getSequencial() : null;
129
        }
130
 
131
        @Override
132
        public int hashCode() {
133
                final int prime = 31;
134
                int result = 1;
135
                result = prime * result + ((pedidoProdutoId == null) ? 0 : pedidoProdutoId.hashCode());
136
                return result;
137
        }
138
 
139
        @Override
140
        public boolean equals(Object obj) {
141
                if (this == obj)
142
                        return true;
143
                if (obj == null)
144
                        return false;
145
                if (getClass() != obj.getClass())
146
                        return false;
147
                PedidoProduto other = (PedidoProduto) obj;
148
                if (pedidoProdutoId == null) {
149
                        if (other.pedidoProdutoId != null)
150
                                return false;
151
                } else if (!pedidoProdutoId.equals(other.pedidoProdutoId))
152
                        return false;
153
                return true;
154
        }
155
 
156
}