Subversion Repositories Integrator Subversion

Rev

Rev 195 | 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;
305 espaco 22
import br.com.ec.domain.model.tipos.TipoPersonalizacao;
106 espaco 23
 
24
@Entity
25
@Table(name="sec_pedido_produto", schema="sc_sec")
26
public class PedidoProduto implements Serializable, Identidade {
27
 
28
        private static final long serialVersionUID = 1L;
29
 
30
        private PedidoProdutoId pedidoProdutoId;
31
        private Pedido pedido;
32
        private Produto produto;
33
        private Integer quantidade = 1;
34
        private Double valor;
35
        private String observacao;
305 espaco 36
        private String tipoPersonalizacao;
37
        private Estampa estampa;
106 espaco 38
 
39
        public PedidoProduto() {
40
                this.pedidoProdutoId = new PedidoProdutoId();
41
        }
42
 
43
        public PedidoProduto(PedidoProdutoId produtoPedidoId) {
44
                this.pedidoProdutoId = produtoPedidoId;
45
        }
46
 
47
        public PedidoProduto(Produto produto, Pedido pedido) {
48
                pedidoProdutoId = new PedidoProdutoId();
49
                setPedido(pedido);
50
                setProduto(produto);
51
        }
52
 
53
        @Override
54
        @Transient
55
        public Object getId() {
56
                return getProdutoPedidoId();
57
        }
58
        @Override
59
        public void setId(Object id) {
60
                this.pedidoProdutoId = (PedidoProdutoId) id;
61
        }
62
 
63
        @EmbeddedId
64
        public PedidoProdutoId getProdutoPedidoId() {
65
                return pedidoProdutoId;
66
        }
67
        public void setProdutoPedidoId(PedidoProdutoId produtoPedidoId) {
68
                this.pedidoProdutoId = produtoPedidoId;
69
        }
70
 
71
        @ManyToOne
72
        @ForeignKey(name="fk_pedidoproduto_pedido")
73
        @JoinColumn(name = "seq_pedido", insertable=false, updatable=false, nullable = false)
74
        public Pedido getPedido() {
75
                return pedido;
76
        }
77
        public void setPedido(Pedido pedido) {
78
                if (VerificadorUtil.naoEstaNulo(pedido)) {
79
                        pedidoProdutoId.setSequencialPedido(pedido.getSequencial());
80
                }
81
                this.pedido = pedido;
82
        }
83
 
84
        @ManyToOne
85
        @ForeignKey(name="fk_pedidoproduto_produto")
86
        @JoinColumn(name = "seq_produto", insertable=false, updatable=false, nullable = false)
87
        public Produto getProduto() {
88
                return produto;
89
        }
90
        public void setProduto(Produto produto) {
91
                if (VerificadorUtil.naoEstaNulo(produto)) {
92
                        pedidoProdutoId.setSequencialProduto(produto.getSequencial());
93
                }
94
                this.produto = produto;
95
        }
96
 
97
        @Column(name="qtd_produto")
98
        @NotNull(message = "Parâmetro obrigatório não preenchido: Quantidade do produto pedido", groups = {Cadastrar.class, Alterar.class})
99
        public Integer getQuantidade() {
100
                return quantidade;
101
        }
102
        public void setQuantidade(Integer quantidade) {
103
                this.quantidade = quantidade;
104
        }
105
 
106
        @Column(name="val_venda")
107
        @NotNull(message = "Parâmetro obrigatório não preenchido: Valor do produto pedido", groups = {Cadastrar.class, Alterar.class})
108
        public Double getValor() {
109
                return valor;
110
        }
111
        public void setValor(Double valor) {
112
                this.valor = valor;
113
        }
114
 
305 espaco 115
        @Column(name="tip_personalizacao")
116
        public String getTipoPersonalizacao() {
117
                return tipoPersonalizacao;
118
        }
119
        public void setTipoPersonalizacao(String tipoPersonalizacao) {
120
                this.tipoPersonalizacao = tipoPersonalizacao;
121
        }
122
        @Transient
123
        public String getDescricaoTipoPersonalizacao() {
124
                return VerificadorUtil.naoEstaNulo(getTipoPersonalizacao())? TipoPersonalizacao.parse(getTipoPersonalizacao()).getDescricao() : null;
125
        }
126
 
127
        @ManyToOne
128
        @ForeignKey(name = "fk_pedidoproduto_estampa")
129
        @JoinColumn(name="seq_estampa", referencedColumnName="seq_estampa", insertable=true, updatable=false)
130
        public Estampa getEstampa() {
131
                return estampa;
132
        }
133
        public void setEstampa(Estampa estampa) {
134
                this.estampa = estampa;
135
        }
136
 
106 espaco 137
        @Column(name="dsc_observacao")
138
        @Size(max = 250, message = "Limite de caracteres ultrapassado: Observação")
139
        public String getObservacao() {
140
                return observacao;
141
        }
142
        public void setObservacao(String observacao) {
143
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
144
        }
145
 
146
        @Transient
147
        public Long getSequencialDoPedido() {
148
                return VerificadorUtil.naoEstaNulo(pedido)? pedido.getSequencial() : null;
149
        }
150
 
151
        @Transient
152
        public Long getSequencialDoProduto() {
153
                return VerificadorUtil.naoEstaNulo(produto)? produto.getSequencial() : null;
154
        }
155
 
156
        @Override
157
        public int hashCode() {
158
                final int prime = 31;
159
                int result = 1;
160
                result = prime * result + ((pedidoProdutoId == null) ? 0 : pedidoProdutoId.hashCode());
161
                return result;
162
        }
163
 
164
        @Override
165
        public boolean equals(Object obj) {
166
                if (this == obj)
167
                        return true;
168
                if (obj == null)
169
                        return false;
170
                if (getClass() != obj.getClass())
171
                        return false;
172
                PedidoProduto other = (PedidoProduto) obj;
173
                if (pedidoProdutoId == null) {
174
                        if (other.pedidoProdutoId != null)
175
                                return false;
176
                } else if (!pedidoProdutoId.equals(other.pedidoProdutoId))
177
                        return false;
178
                return true;
179
        }
180
 
181
}