Subversion Repositories Integrator Subversion

Rev

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