Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
449 blopes 1
package br.com.ec.domain.model;
2
 
3
import java.io.Serializable;
558 blopes 4
import java.util.Date;
449 blopes 5
 
6
import javax.persistence.Column;
7
import javax.persistence.Entity;
8
import javax.persistence.GeneratedValue;
9
import javax.persistence.GenerationType;
10
import javax.persistence.Id;
11
import javax.persistence.JoinColumn;
12
import javax.persistence.ManyToOne;
13
import javax.persistence.SequenceGenerator;
14
import javax.persistence.Table;
15
import javax.persistence.Transient;
16
import javax.validation.constraints.NotNull;
17
import javax.validation.constraints.Size;
18
 
19
import org.hibernate.annotations.ForeignKey;
20
import org.hibernate.validator.constraints.NotEmpty;
21
 
22
import br.com.ec.core.interfaces.Alterar;
23
import br.com.ec.core.interfaces.Cadastrar;
24
import br.com.ec.core.util.StringUtil;
25
import br.com.ec.core.util.VerificadorUtil;
26
 
462 blopes 27
@Entity
28
@Table(name="sec_modelo", schema="sc_sec")
449 blopes 29
public class Modelo implements Serializable, Comparable<Modelo> {
30
 
31
        private static final long serialVersionUID = 1L;
32
 
33
        private Long sequencial;
34
        private Marca marca;
35
        private String descricao;
36
        private String descricaoTecnica;
37
        private String descricaoEtiqueta;
38
        private String descricaoLocalizacao;
39
        private Boolean indicadorFavorito;
558 blopes 40
        private Date dataCadastro;
449 blopes 41
        private Boolean ativo;
42
 
43
        public Modelo() {}
44
 
524 blopes 45
        public Modelo(Long sequencial) {
46
                this.sequencial = sequencial;
47
        }
48
 
449 blopes 49
        public Modelo(Marca marca) {
50
                this.marca = marca;
51
        }
52
 
53
        @Id
54
        @SequenceGenerator(name = "sec_modelo_seq_modelo_seq") //TODO: ALTERAR NOME DA SEQUENCE
55
        @GeneratedValue(strategy = GenerationType.IDENTITY)
56
        @Column(name="seq_modelo", nullable=false)
57
        public Long getSequencial() {
58
                return sequencial;
59
        }
60
        public void setSequencial(Long sequencial) {
61
                this.sequencial = sequencial;
62
        }
63
 
64
        @ManyToOne
65
        @ForeignKey(name="fk_modelo_marca")
66
        @JoinColumn(name = "seq_marca", referencedColumnName="seq_marca", nullable=true)
67
        public Marca getMarca() {
68
                return marca;
69
        }
70
        public void setMarca(Marca marca) {
71
                this.marca = marca;
72
        }
73
 
74
        @Column(name="dsc_modelo")
75
        @Size(max = 255, message = "Limite de caracteres ultrapassado: Descrição")
76
        @NotEmpty(message="Obrigatório informar a descrição", groups={Cadastrar.class, Alterar.class})
77
        public String getDescricao() {
78
                return descricao;
79
        }
80
        public void setDescricao(String descricao) {
81
                this.descricao = StringUtil.setarUpperCaseComTrim(descricao);
82
        }
83
 
84
        @Column(name="dsc_tecnica")
85
        @Size(max = 255, message = "Limite de caracteres ultrapassado: Descrição Técnica")
86
        public String getDescricaoTecnica() {
87
                return descricaoTecnica;
88
        }
89
        public void setDescricaoTecnica(String descricaoTecnica) {
90
                this.descricaoTecnica = StringUtil.setarUpperCaseComTrim(descricaoTecnica);
91
        }
92
 
93
        @Column(name="dsc_etiqueta")
94
        @Size(max = 20, message = "Limite de caracteres ultrapassado: Descrição da Etiqueta")
95
        @NotEmpty(message="Obrigatório informar a descrição da etiqueta", groups={Cadastrar.class, Alterar.class})
96
        public String getDescricaoEtiqueta() {
97
                return descricaoEtiqueta;
98
        }
99
        public void setDescricaoEtiqueta(String descricaoEtiqueta) {
100
                this.descricaoEtiqueta = StringUtil.setarUpperCaseComTrim(descricaoEtiqueta);
101
        }
102
 
103
        @Column(name="dsc_localizacao")
104
        @Size(max = 20, message = "Limite de caracteres ultrapassado: Localização")
105
        public String getDescricaoLocalizacao() {
106
                return descricaoLocalizacao;
107
        }
108
        public void setDescricaoLocalizacao(String descricaoLocalizacao) {
109
                this.descricaoLocalizacao = StringUtil.setarUpperCaseComTrim(descricaoLocalizacao);
110
        }
111
 
112
        @Column(name="ind_favorito")
113
        @NotNull(message="Obrigatório informar o indicador de favorito", groups={Cadastrar.class, Alterar.class})
114
        public Boolean getIndicadorFavorito() {
115
                return indicadorFavorito;
116
        }
117
        public void setIndicadorFavorito(Boolean indicadorFavorito) {
118
                this.indicadorFavorito = indicadorFavorito;
119
        }
120
 
558 blopes 121
        @Column(name="dat_cadastro")
122
        @NotNull(message="Obrigatório informar a data de cadastro", groups={Cadastrar.class, Alterar.class})
123
        public Date getDataCadastro() {
124
                return dataCadastro;
125
        }
126
        public void setDataCadastro(Date dataCadastro) {
127
                this.dataCadastro = dataCadastro;
128
        }
129
 
449 blopes 130
        @Column(name="ind_ativo", nullable=false)
131
        public Boolean getAtivo() {
132
                return ativo;
133
        }
134
        public void setAtivo(Boolean ativo) {
135
                this.ativo = ativo;
136
        }
137
 
138
        @Transient
139
        public String getDescricaoDaMarca() {
140
                return VerificadorUtil.naoEstaNulo(marca)? marca.getDescricao() : null;
141
        }
142
 
143
        @Transient
144
        public String getDescricaoComDescricaoTecnica() {
145
                return getDescricao() + getDescricaoTecnicaComParenteses();
146
        }
147
 
148
        @Transient
149
        public String getDescricaoTecnicaComParenteses() {
150
                return VerificadorUtil.naoEstaNuloOuVazio(getDescricaoTecnica())? " (" + getDescricaoTecnica() + ") " : "";
151
        }
152
 
153
        @Override
154
        public int hashCode() {
155
                final int prime = 31;
156
                int result = 1;
157
                result = prime * result + ((sequencial == null) ? 0 : sequencial.hashCode());
158
                return result;
159
        }
160
 
161
        @Override
162
        public boolean equals(Object obj) {
163
                if (this == obj)
164
                        return true;
165
                if (obj == null)
166
                        return false;
167
                if (getClass() != obj.getClass())
168
                        return false;
169
                Modelo other = (Modelo) obj;
170
                if (sequencial == null) {
171
                        if (other.sequencial != null)
172
                                return false;
173
                } else if (!sequencial.equals(other.sequencial))
174
                        return false;
175
                return true;
176
        }
177
 
178
        @Override
179
        public int compareTo(Modelo modelo) {
180
                if (VerificadorUtil.naoEstaNulo(modelo)) {
181
                        int comparacao = this.getDescricaoDaMarca().compareTo(modelo.getDescricaoDaMarca());
182
                        if (comparacao != 0) return comparacao;
183
                        return this.getDescricao().compareTo(modelo.getDescricao());
184
                }
185
                return 0;
186
        }
187
 
188
}