Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 espaco 1
package br.gov.al.saude.rhd.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.HashSet;
8
import java.util.List;
9
import java.util.Set;
10
 
11
import javax.persistence.CascadeType;
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.SequenceGenerator;
22
import javax.persistence.Table;
23
import javax.persistence.Transient;
24
import javax.validation.constraints.NotNull;
25
 
26
import org.hibernate.validator.constraints.NotEmpty;
27
 
28
import br.gov.al.saude.framework.core.generic.identidade.Identidade;
29
import br.gov.al.saude.framework.core.interfaces.Alterar;
30
import br.gov.al.saude.framework.core.interfaces.Cadastrar;
31
import br.gov.al.saude.framework.core.util.VerificadorUtil;
32
import br.gov.al.saude.rhd.model.view.UnidadeView;
33
import br.gov.al.saude.scg.model.view.PessoaFisicaView;
34
 
35
@Entity
36
@Table(name = "rhd_grupo_avaliacao", schema = "sc_rhd")
37
public class GrupoAvaliacao implements Serializable, Identidade {
38
 
39
        private static final long serialVersionUID = 1L;
40
 
41
        private Long sequencial;
42
        private String descricao;
43
        private String tipoSituacao;
44
        private String observacao;
45
        private UnidadeView unidade;
46
        private PessoaFisicaView avaliador;
47
        private Cronograma cronograma;
48
        private Set<ServidorAvaliacao> servidoresAvaliados;
49
 
50
        @Id
51
        @Column(name="seq_grupo_avaliacao", nullable=false)
52
        @GeneratedValue(generator = "GRUPO_AVALICAO_GENERATOR", strategy = GenerationType.SEQUENCE)
53
        @SequenceGenerator(name = "GRUPO_AVALICAO_GENERATOR", sequenceName = "SQ_GRUPOAVALIAC", initialValue = 1, allocationSize = 1)
54
        public Long getSequencial() {
55
                return sequencial;
56
        }
57
 
58
        public void setSequencial(Long sequencial) {
59
                this.sequencial = sequencial;
60
        }
61
 
62
        @NotNull(message="Obrigatório informar descrição", groups={Cadastrar.class, Alterar.class})
63
        @NotEmpty(message="Obrigatório informar descrição", groups={Cadastrar.class, Alterar.class})
64
        @Column(name="dsc_grupo_avaliacao", nullable=false)
65
        public String getDescricao() {
66
                return descricao;
67
        }
68
 
69
        public void setDescricao(String descricao) {
70
                this.descricao = descricao;
71
        }
72
 
73
        @Column(name="tip_situacao_grupo", nullable=false)
74
        public String getTipoSituacao() {
75
                return tipoSituacao;
76
        }
77
 
78
        @Transient
79
        public String getDescricaoTipoSituacao() {
80
                if(VerificadorUtil.naoEstaNuloOuVazio(getTipoSituacao())){
81
                        switch (getTipoSituacao().charAt(0)) {
82
                                case 'A':
83
                                        return "Aprovado";
84
                                case 'P':
85
                                        return "Pendente";
86
                                case 'N':
87
                                        return "Não aprovado";
88
                        }
89
                }
90
                return null;
91
        }
92
 
93
        public void setTipoSituacao(String tipoSituacao) {
94
                this.tipoSituacao = tipoSituacao;
95
        }
96
 
97
        @Column(name="dsc_observacao")
98
        public String getObservacao() {
99
                return observacao;
100
        }
101
 
102
        public void setObservacao(String observacao) {
103
                this.observacao = observacao;
104
        }
105
 
106
        @ManyToOne
107
        @JoinColumn(name="cod_unidade_cadastro", nullable=false)
108
        public UnidadeView getUnidade() {
109
                return unidade;
110
        }
111
 
112
        @Transient
113
        public String getDescricaoUnidade(){
114
                return VerificadorUtil.naoEstaNulo(unidade) ? unidade.getDescricao() : null;
115
        }
116
 
117
        public void setUnidade(UnidadeView unidade) {
118
                this.unidade = unidade;
119
        }
120
 
121
        @NotNull(message="Obrigatório informar avaliados", groups={Cadastrar.class, Alterar.class})
122
        @NotEmpty(message="Obrigatório informar avaliados", groups={Cadastrar.class, Alterar.class})
123
        @OneToMany(mappedBy="grupoAvaliacao", fetch=FetchType.LAZY, cascade={CascadeType.PERSIST, CascadeType.MERGE}, orphanRemoval=true)
124
        public Set<ServidorAvaliacao> getServidoresAvaliados() {
125
                return servidoresAvaliados;
126
        }
127
 
128
        @Transient
129
        public List<ServidorAvaliacao> getServidorAvaliacaosAsListOrdenado(){
130
                List<ServidorAvaliacao> servidoresAvaliadosOrdenados = null;
131
                if(VerificadorUtil.naoEstaNulo(getServidoresAvaliados())){
132
                        servidoresAvaliadosOrdenados = new ArrayList<ServidorAvaliacao>(getServidoresAvaliados());
133
                        Collections.sort(servidoresAvaliadosOrdenados, new Comparator<ServidorAvaliacao>() {
134
                                public int compare(ServidorAvaliacao o1, ServidorAvaliacao o2) {
135
                                        return o1.getServidorDadoFuncional().getServidorView().getNome().compareTo(o2.getServidorDadoFuncional().getServidorView().getNome());
136
                                };
137
                        });
138
                }
139
                return servidoresAvaliadosOrdenados;
140
        }
141
 
142
        public void setServidoresAvaliados(Set<ServidorAvaliacao> servidoresAvaliados) {
143
                this.servidoresAvaliados = servidoresAvaliados;
144
        }
145
 
146
        @NotNull(message="Obrigatório informar avaliador", groups={Cadastrar.class, Alterar.class})
147
        @ManyToOne
148
        @JoinColumn(name="seq_pessoa_avaliador", referencedColumnName="seq_pessoa")
149
        public PessoaFisicaView getAvaliador() {
150
                return avaliador;
151
        }
152
 
153
        @Transient
154
        public String getNomeAvaliador(){
155
                return VerificadorUtil.naoEstaNulo(avaliador) ? avaliador.getNomePessoa() : null;
156
        }
157
 
158
        public void setAvaliador(PessoaFisicaView servidorAvaliador) {
159
                this.avaliador = servidorAvaliador;
160
        }
161
 
162
        @ManyToOne
163
        @JoinColumn(name="num_ano", referencedColumnName="num_ano")
164
        public Cronograma getCronograma() {
165
                return cronograma;
166
        }
167
 
168
        public void setCronograma(Cronograma cronograma) {
169
                this.cronograma = cronograma;
170
        }
171
 
172
        @Transient
173
        public String getSituacaoPorExtenso() {
174
                if("A".equals(tipoSituacao))
175
                        return "Aprovado";
176
                if("N".equals(tipoSituacao))
177
                        return "Não Aprovado";
178
                if("P".equals(tipoSituacao))
179
                        return "Pendente";
180
                return null;
181
        }
182
 
183
        @Override
184
        @Transient
185
        public Object getId() {
186
                return this.sequencial;
187
        }
188
 
189
        @Override
190
        public void setId(Object id) {
191
                this.sequencial = (Long) id;
192
        }
193
 
194
        public void adicionarServidorAvaliacao(ServidorAvaliacao servidorAvaliacao) {
195
                if (servidoresAvaliados == null) {
196
                        servidoresAvaliados = new HashSet<ServidorAvaliacao>();
197
                }
198
                servidoresAvaliados.add(servidorAvaliacao);
199
        }
200
 
201
        public void removerServidorAvaliacao(ServidorAvaliacao servidorAvaliacao) {
202
                if (servidoresAvaliados != null) {
203
                        servidoresAvaliados.remove(servidorAvaliacao);
204
                }
205
        }
206
 
207
        @Override
208
        public int hashCode() {
209
                final int prime = 31;
210
                int result = 1;
211
                result = prime * result
212
                                + ((sequencial == null) ? 0 : sequencial.hashCode());
213
                return result;
214
        }
215
 
216
        @Override
217
        public boolean equals(Object obj) {
218
                if (this == obj)
219
                        return true;
220
                if (obj == null)
221
                        return false;
222
                if (getClass() != obj.getClass())
223
                        return false;
224
                GrupoAvaliacao other = (GrupoAvaliacao) obj;
225
                if (sequencial == null) {
226
                        if (other.sequencial != null)
227
                                return false;
228
                } else if (!sequencial.equals(other.sequencial))
229
                        return false;
230
                return true;
231
        }
232
}