Subversion Repositories Integrator Subversion

Rev

Rev 182 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 espaco 1
package br.com.ec.domain.model;
2
 
3
import java.io.Serializable;
4
import java.util.ArrayList;
5
import java.util.Collections;
6
import java.util.Comparator;
7
import java.util.Date;
8
import java.util.HashSet;
9
import java.util.List;
10
import java.util.Set;
11
 
12
import javax.persistence.Column;
13
import javax.persistence.Entity;
14
import javax.persistence.FetchType;
15
import javax.persistence.GeneratedValue;
16
import javax.persistence.GenerationType;
17
import javax.persistence.Id;
18
import javax.persistence.JoinColumn;
19
import javax.persistence.ManyToOne;
20
import javax.persistence.OneToMany;
21
import javax.persistence.Table;
22
import javax.persistence.Transient;
23
import javax.validation.constraints.NotNull;
24
import javax.validation.constraints.Size;
25
 
26
import org.hibernate.annotations.ForeignKey;
27
import org.hibernate.validator.constraints.NotEmpty;
28
 
29
import br.edu.cesmac.core.interfaces.Alterar;
30
import br.edu.cesmac.core.interfaces.Cadastrar;
31
import br.edu.cesmac.core.util.VerificadorUtil;
32
 
33
@Entity
34
@Table(name="sec_linha_vivo", schema="sc_sec")
35
public class LinhaVivo implements Serializable {
36
 
37
        private static final long serialVersionUID = 1L;
38
 
39
        private Long sequencial;
40
        private String numero;
41
        private Cliente cliente;
42
        private ProdutoVivo planoAtual;
43
        private Date dataAtualizacao;
44
 
45
        private Set<VendaVivo> listaVendasVivo;
46
 
47
        public LinhaVivo() {
48
                listaVendasVivo = new HashSet<VendaVivo>();
49
        }
50
 
51
        @Id
52
        @GeneratedValue(strategy = GenerationType.IDENTITY)
53
        @Column(name="seq_linha_vivo", nullable=false)
54
        public Long getSequencial() {
55
                return sequencial;
56
        }
57
        public void setSequencial(Long sequencial) {
58
                this.sequencial = sequencial;
59
        }
60
 
61
        @Column(name="dsc_numero")
62
        @Size(max = 12, message = "Limite de caracteres ultrapassado: Número")
63
        @NotNull(message = "Informe o número", groups = {Cadastrar.class, Alterar.class})
64
        @NotEmpty(message = "Informe o número", groups = {Cadastrar.class, Alterar.class})
65
        public String getNumero() {
66
                return numero;
67
        }
68
        public void setNumero(String numero) {
69
                this.numero = numero;
70
        }
71
 
72
        @ManyToOne
73
        @ForeignKey(name="fk_linhavivo_cliente")
74
        @JoinColumn(name = "seq_cliente")
75
        @NotNull(message = "Informe o cliente da linha", groups = {Cadastrar.class/*, Alterar.class*/})
76
        public Cliente getCliente() {
77
                return cliente;
78
        }
79
        public void setCliente(Cliente cliente) {
80
                this.cliente = cliente;
81
        }
82
 
83
        @ManyToOne
84
        @ForeignKey(name="fk_linhavivo_produtovivo")
85
        @JoinColumn(name = "seq_produto_vivo", nullable = true)
86
        public ProdutoVivo getPlanoAtual() {
87
                return planoAtual;
88
        }
89
        public void setPlanoAtual(ProdutoVivo planoAtual) {
90
                this.planoAtual = planoAtual;
91
        }
92
 
93
        @Column(name="dth_atualizacao")
94
        @NotNull(message = "Informe a data da atualização", groups = {Cadastrar.class, Alterar.class})
95
        public Date getDataAtualizacao() {
96
                return dataAtualizacao;
97
        }
98
        public void setDataAtualizacao(Date dataAtualizacao) {
99
                this.dataAtualizacao = dataAtualizacao;
100
        }
101
 
102
        @OneToMany(mappedBy="linhaVivo", fetch=FetchType.LAZY, orphanRemoval=false)
103
        public Set<VendaVivo> getListaVendasVivo() {
104
                return listaVendasVivo;
105
        }
106
        public void setListaVendasVivo(Set<VendaVivo> listaVendasVivo) {
107
                this.listaVendasVivo = listaVendasVivo;
108
        }
109
 
110
        @Override
111
        public int hashCode() {
112
                final int prime = 31;
113
                int result = 1;
114
                result = prime * result + ((sequencial == null) ? 0 : sequencial.hashCode());
115
                return result;
116
        }
117
 
118
        @Override
119
        public boolean equals(Object obj) {
120
                if (this == obj)
121
                        return true;
122
                if (obj == null)
123
                        return false;
124
                if (getClass() != obj.getClass())
125
                        return false;
126
                LinhaVivo other = (LinhaVivo) obj;
127
                if (sequencial == null) {
128
                        if (other.sequencial != null)
129
                                return false;
130
                } else if (!sequencial.equals(other.sequencial))
131
                        return false;
132
                return true;
133
        }
134
 
135
        @Transient
136
        public List<VendaVivo> getVendasVivoOrdenadas() {
137
                List<VendaVivo> vendasVivoOrdenadas = null;
138
                if (VerificadorUtil.naoEstaNuloOuVazio(getListaVendasVivo())) {
139
                        vendasVivoOrdenadas = new ArrayList<VendaVivo>(getListaVendasVivo());
140
                        Collections.sort(vendasVivoOrdenadas, new Comparator<VendaVivo>() {
141
                                public int compare(VendaVivo p1, VendaVivo p2) {
142
                                        return p2.getDataVenda().compareTo(p1.getDataVenda());
143
                                };
144
                        });
145
                }
146
                return vendasVivoOrdenadas;
147
        }
148
 
149
        @Transient
150
        public String getNomeDoCliente() {
151
                return VerificadorUtil.naoEstaNulo(getCliente())? getCliente().getNome() : "";
152
        }
153
 
154
        @Transient
155
        public String getCpfDoCliente() {
156
                return VerificadorUtil.naoEstaNulo(getCliente())? getCliente().getCpfCnpj() : "";
157
        }
158
 
159
        @Transient
160
        public String getCpfCnpjFormatadoDoCliente() {
161
                return VerificadorUtil.naoEstaNulo(getCliente())? getCliente().getCpfCnpjFormatado() : "";
162
        }
163
 
164
}