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.HashSet;
5
import java.util.Set;
6
 
7
import javax.persistence.CascadeType;
8
import javax.persistence.Column;
9
import javax.persistence.Entity;
10
import javax.persistence.FetchType;
11
import javax.persistence.GeneratedValue;
12
import javax.persistence.GenerationType;
13
import javax.persistence.Id;
14
import javax.persistence.JoinColumn;
15
import javax.persistence.ManyToOne;
16
import javax.persistence.OneToMany;
17
import javax.persistence.Table;
18
import javax.persistence.Transient;
19
import javax.validation.constraints.Size;
20
 
21
import org.hibernate.annotations.ForeignKey;
22
import org.hibernate.validator.constraints.NotEmpty;
23
 
24
import br.com.ec.domain.model.tipos.TipoCategoria;
25
import br.edu.cesmac.core.interfaces.Alterar;
26
import br.edu.cesmac.core.interfaces.Cadastrar;
27
import br.edu.cesmac.core.util.StringUtil;
28
import br.edu.cesmac.core.util.VerificadorUtil;
29
 
30
@Entity
31
@Table(name="sec_categoria", schema="sc_sec")
32
public class Categoria implements Serializable {
33
 
34
        private static final long serialVersionUID = 1L;
35
 
36
        private Long sequencial;
37
        private Categoria categoriaPai;
38
        private String descricao;
39
        private String tipo;
40
        private Set<Categoria> listaCategoriasFilhas;
41
        private IndicadorDRE indicadorDRE;
42
        private Boolean ativo;
43
 
44
        private Boolean consultarApenasFilhos;
45
 
46
        public Categoria() {
47
                listaCategoriasFilhas = new HashSet<Categoria>();
48
        }
49
 
50
        public Categoria(Long sequencial) {
51
                this.sequencial = sequencial;
52
                listaCategoriasFilhas = new HashSet<Categoria>();
53
        }
54
 
55
        @Id
56
        @GeneratedValue(strategy = GenerationType.IDENTITY)
57
        @Column(name="seq_categoria", nullable=false)
58
        public Long getSequencial() {
59
                return sequencial;
60
        }
61
        public void setSequencial(Long sequencial) {
62
                this.sequencial = sequencial;
63
        }
64
 
65
        @ManyToOne
66
        @ForeignKey(name = "fk_categoria_categoriapai")
67
        @JoinColumn(name="seq_categoria_pai", referencedColumnName="seq_categoria", insertable=true, updatable=true)
68
        public Categoria getCategoriaPai() {
69
                return categoriaPai;
70
        }
71
        public void setCategoriaPai(Categoria categoriaPai) {
72
                this.categoriaPai = categoriaPai;
73
        }
74
 
75
        @Column(name="dsc_categoria")
76
        @NotEmpty(message="Obrigatório informar a descrição", groups={Cadastrar.class, Alterar.class})
77
        @Size(max = 120, message = "Limite de caracteres ultrapassado: Descrição")
78
        public String getDescricao() {
79
                return descricao;
80
        }
81
        public void setDescricao(String descricao) {
82
                this.descricao = StringUtil.setarUpperCaseComTrim(descricao);
83
        }
84
 
85
        @NotEmpty(message="Obrigatório informar o tipo da categoria", groups={Cadastrar.class, Alterar.class})
86
        @Column(name="tip_categoria")
87
        public String getTipo() {
88
                return tipo;
89
        }
90
        public void setTipo(String tipo) {
91
                this.tipo = tipo;
92
        }
93
 
94
        @OneToMany(mappedBy="categoriaPai", cascade=CascadeType.ALL, fetch=FetchType.LAZY, orphanRemoval=true)
95
        public Set<Categoria> getListaCategoriasFilhas() {
96
                return listaCategoriasFilhas;
97
        }
98
        public void setListaCategoriasFilhas(Set<Categoria> listaCategoriasFilhas) {
99
                this.listaCategoriasFilhas = listaCategoriasFilhas;
100
        }
101
 
102
        @ManyToOne
103
        @ForeignKey(name = "fk_categoria_dre")
104
        @JoinColumn(name="cod_dre", referencedColumnName="cod_dre", insertable=true, updatable=true, nullable=true)
105
        public IndicadorDRE getIndicadorDRE() {
106
                return indicadorDRE;
107
        }
108
        public void setIndicadorDRE(IndicadorDRE indicadorDRE) {
109
                this.indicadorDRE = indicadorDRE;
110
        }
111
 
112
        @Column(name="ind_ativo", nullable=false)
113
        public Boolean getAtivo() {
114
                return ativo;
115
        }
116
        public void setAtivo(Boolean ativo) {
117
                this.ativo = ativo;
118
        }
119
 
120
        @Transient
121
        public Boolean getConsultarApenasFilhos() {
122
                return consultarApenasFilhos;
123
        }
124
        public void setConsultarApenasFilhos(Boolean consultarApenasFilhos) {
125
                this.consultarApenasFilhos = consultarApenasFilhos;
126
        }
127
 
128
        @Transient
129
        public String getTipoCategoriaDescricao() {
130
                return VerificadorUtil.naoEstaNuloOuVazio(getTipo())? TipoCategoria.parse(getTipo()).getDescricao() : null;
131
        }
132
 
133
        @Transient
134
        public String getDescricaoDaCategoriaPai() {
135
                return VerificadorUtil.naoEstaNulo(getCategoriaPai())? getCategoriaPai().getDescricao() : null;
136
        }
137
 
138
        @Override
139
        public int hashCode() {
140
                final int prime = 31;
141
                int result = 1;
142
                result = prime * result
143
                                + ((sequencial == null) ? 0 : sequencial.hashCode());
144
                return result;
145
        }
146
 
147
        @Override
148
        public boolean equals(Object obj) {
149
                if (this == obj)
150
                        return true;
151
                if (obj == null)
152
                        return false;
153
                if (getClass() != obj.getClass())
154
                        return false;
155
                Categoria other = (Categoria) obj;
156
                if (sequencial == null) {
157
                        if (other.sequencial != null)
158
                                return false;
159
                } else if (!sequencial.equals(other.sequencial))
160
                        return false;
161
                return true;
162
        }
163
 
164
}