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.core.aceitacao.plugin;
2
 
3
import static br.gov.al.saude.test.ConstantesTestHelper.PRIMEIRO_REGISTRO_0;
4
import static br.gov.al.saude.test.ConstantesTestHelper.TAMANHO_DA_PAGINA_5;
5
import static br.gov.al.saude.test.ConstantesTestHelper.MensagensRetorno.DADOS_EXIBIDOS_VAZIO;
6
import static br.gov.al.saude.test.ConstantesTestHelper.MensagensRetorno.DADOS_GRAVADOS_COM_SUCESSO;
7
import static br.gov.al.saude.test.ConstantesTestHelper.MensagensRetorno.MENSAGEM_ARQUIVO_ACATADO_COM_SUCESSO;
8
import static br.gov.al.saude.test.ConstantesTestHelper.PessoaConstantes.SEQUENCIAL_PESSOA_LUCIANO_BARBOSA_1;
9
import static br.gov.al.saude.test.util.ConversorDeTipo.converterStringParaLong;
10
import static br.gov.al.saude.test.util.StringUtils.valueInt;
11
import static br.gov.al.saude.test.util.StringUtils.valueLong;
12
 
13
import java.io.File;
14
import java.io.FileInputStream;
15
import java.io.InputStream;
16
import java.util.ArrayList;
17
import java.util.HashSet;
18
import java.util.List;
19
import java.util.Set;
20
 
21
import net.sf.jasperreports.engine.JasperExportManager;
22
import net.sf.jasperreports.engine.JasperPrint;
23
 
24
import org.springframework.beans.factory.annotation.Autowired;
25
 
26
import br.gov.al.saude.framework.core.consulta.restricao.Restricoes;
27
import br.gov.al.saude.framework.core.util.VerificadorUtil;
28
import br.gov.al.saude.rhd.core.application.avaliacao.AvaliacaoFacade;
29
import br.gov.al.saude.rhd.core.application.avaliacaodesempenho.AvaliacaoDesempenhoFacade;
30
import br.gov.al.saude.rhd.core.application.cronograma.CronogramaFacade;
31
import br.gov.al.saude.rhd.core.application.emissorrelatorio.EmissorRelatorioFacade;
32
import br.gov.al.saude.rhd.core.application.grupoavaliacao.GrupoAvaliacaoFacade;
33
import br.gov.al.saude.rhd.core.application.pessoa.PessoaFisicaViewFacade;
34
import br.gov.al.saude.rhd.core.application.servidor.ServidorFacade;
35
import br.gov.al.saude.rhd.core.application.servidoravaliacao.ServidorAvaliacaoFacade;
36
import br.gov.al.saude.rhd.core.application.servidorfalta.ServidorFaltaFacade;
37
import br.gov.al.saude.rhd.core.application.unidade.UnidadeFacade;
38
import br.gov.al.saude.rhd.model.Avaliacao;
39
import br.gov.al.saude.rhd.model.AvaliacaoDesempenho;
40
import br.gov.al.saude.rhd.model.Cronograma;
41
import br.gov.al.saude.rhd.model.CronogramaEtapa;
42
import br.gov.al.saude.rhd.model.Etapa;
43
import br.gov.al.saude.rhd.model.GrupoAvaliacao;
44
import br.gov.al.saude.rhd.model.QualificacaoServidorCronograma;
45
import br.gov.al.saude.rhd.model.QuestaoAvaliacaoDesempenho;
46
import br.gov.al.saude.rhd.model.RevisaoAvaliacao;
47
import br.gov.al.saude.rhd.model.RevisaoAvaliacaoDesempenho;
48
import br.gov.al.saude.rhd.model.RevisaoAvaliacaoDesempenhoId;
49
import br.gov.al.saude.rhd.model.ServidorAvaliacao;
50
import br.gov.al.saude.rhd.model.ServidorAvaliacaoId;
51
import br.gov.al.saude.rhd.model.dto.RevisaoAvaliacaoDTO;
52
import br.gov.al.saude.rhd.model.dto.ServidorAvaliacaoDTO;
53
import br.gov.al.saude.rhd.model.dto.ServidorDadoFuncionalViewDTO;
54
import br.gov.al.saude.rhd.model.dto.ServidorFaltasMesAhMesDTO;
55
import br.gov.al.saude.rhd.model.view.QualificacaoServidorView;
56
import br.gov.al.saude.rhd.model.view.ServidorDadoFuncionalView;
57
import br.gov.al.saude.rhd.model.view.ServidorView;
58
import br.gov.al.saude.rhd.model.view.UnidadeView;
59
import br.gov.al.saude.rhd.parametros.ParametroEmissaoRelatorioDTO;
60
import br.gov.al.saude.rhd.parametros.ParametrosConsultarGrupoAvaliacao;
61
import br.gov.al.saude.rhd.parametros.ParametrosConsultarRevisaoAvaliacaoNaoRespondida;
62
import br.gov.al.saude.rhd.parametros.ParametrosConsultarServidorAvaliacaoAvaliadoPorAvaliador;
63
import br.gov.al.saude.rhd.parametros.ParametrosConsultarServidorAvaliacaoDisponivelParaOhGrupoAvaliacao;
64
import br.gov.al.saude.sca.model.usuario.view.UsuarioView;
65
import br.gov.al.saude.scg.model.view.PessoaFisicaView;
66
import br.gov.al.saude.test.aceitacao.helper.CenarioTestHelper;
67
import br.gov.al.saude.test.aceitacao.plugin.TestPlugin;
68
import br.gov.al.saude.test.builder.AvaliacaoDesempenhoBuilder;
69
import br.gov.al.saude.test.builder.CronogramaBuilder;
70
import br.gov.al.saude.test.builder.CronogramaEtapaBuilder;
71
import br.gov.al.saude.test.builder.EtapaBuilder;
72
import br.gov.al.saude.test.builder.GrupoAvaliacaoBuilder;
73
import br.gov.al.saude.test.builder.ParametroEmissaoRelatorioBuilder;
74
import br.gov.al.saude.test.builder.PessoaFisicaViewBuilder;
75
import br.gov.al.saude.test.builder.QualificacaoServidorBuilder;
76
import br.gov.al.saude.test.builder.RevisaoAvaliacaoBuilder;
77
import br.gov.al.saude.test.builder.RevisaoAvaliacaoDesempenhoBuilder;
78
import br.gov.al.saude.test.builder.ServidorAvaliacaoBuilder;
79
import br.gov.al.saude.test.builder.ServidorAvaliacaoIdBuilder;
80
import br.gov.al.saude.test.builder.ServidorDadoFuncionalViewBuilder;
81
import br.gov.al.saude.test.builder.ServidorViewBuilder;
82
import br.gov.al.saude.test.builder.UnidadeViewBuilder;
83
import br.gov.al.saude.test.builder.UsuarioViewBuilder;
84
import br.gov.al.saude.test.util.Command;
85
import br.gov.al.saude.test.util.VerificadorLancamentoException;
86
 
87
import com.itextpdf.text.pdf.PdfReader;
88
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
89
 
90
public class ApiTestPlugin implements TestPlugin {
91
 
92
        private static Integer PRIMEIRO_REGISTRO_ZERO = valueInt(PRIMEIRO_REGISTRO_0);
93
 
94
        private CenarioTestHelper cenarioTestHelper;
95
 
96
        private ServidorFacade servidorFacade;
97
        private CronogramaFacade cronogramaFacade;
98
        private ServidorAvaliacaoFacade servidorAvaliacaoFacade;
99
        private AvaliacaoDesempenhoFacade avaliacaoDesempenhoFacade;
100
        private GrupoAvaliacaoFacade grupoAvaliacaoFacade;
101
        private ServidorFaltaFacade servidorFaltaFacade;
102
        private AvaliacaoFacade avaliacaoFacade;
103
        private UnidadeFacade unidadeFacade;
104
        private EmissorRelatorioFacade emissorRelatorioFacade;
105
        private PessoaFisicaViewFacade pessoaFisicaViewFacade;
106
 
107
        public void setUp() throws Exception {
108
                cenarioTestHelper.limparBanco();
109
        }
110
 
111
        public void tearDown() throws Exception {
112
                cenarioTestHelper.limparBanco();
113
        }
114
 
115
        @Autowired
116
        public ApiTestPlugin(CenarioTestHelper cenarioTestHelper, ServidorFacade servidorFacade, CronogramaFacade cronogramaFacade,
117
                        AvaliacaoDesempenhoFacade avaliacaoDesempenhoFacade, ServidorAvaliacaoFacade servidorAvaliacaoFacade, GrupoAvaliacaoFacade grupoAvaliacaoFacade,
118
                        ServidorFaltaFacade servidorFaltaFacade, AvaliacaoFacade avaliacaoFacade, UnidadeFacade unidadeFacade, EmissorRelatorioFacade emissorRelatorioFacade,
119
                        PessoaFisicaViewFacade pessoaFisicaViewFacade) {
120
                this.cenarioTestHelper = cenarioTestHelper;
121
                this.servidorFacade = servidorFacade;
122
                this.cronogramaFacade = cronogramaFacade;
123
                this.servidorAvaliacaoFacade = servidorAvaliacaoFacade;
124
                this.avaliacaoDesempenhoFacade = avaliacaoDesempenhoFacade;
125
                this.grupoAvaliacaoFacade = grupoAvaliacaoFacade;
126
                this.servidorFaltaFacade = servidorFaltaFacade;
127
                this.avaliacaoFacade = avaliacaoFacade;
128
                this.unidadeFacade = unidadeFacade;
129
                this.emissorRelatorioFacade = emissorRelatorioFacade;
130
                this.pessoaFisicaViewFacade = pessoaFisicaViewFacade;
131
        }
132
 
133
        @Override
134
        public String consultarDadosPessoais(final String sequencialPessoa) {
135
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
136
                        @Override
137
                        public String execute() throws Exception {
138
                                List<ServidorView> listaServidores = new ArrayList<ServidorView>();    
139
                                listaServidores.add(servidorFacade.consultarDadosPessoais(valueLong(sequencialPessoa)));
140
                                return cenarioTestHelper.gerarMensagemConsultar(listaServidores);
141
                        }
142
                });
143
        }
144
 
145
        @Override
146
        public String consultarCronograma(final String ano) {
147
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
148
                        @Override
149
                        public String execute() throws Exception {
150
                                List<Cronograma> listaCronograma = cronogramaFacade.consultarCronogramaPorNumeroAno(valueLong(ano));
151
                                return cenarioTestHelper.gerarMensagemConsultar(listaCronograma);
152
                        }
153
                });
154
        }
155
 
156
        @Override
157
        public String cadastrarCronograma(final String ano, final String listaEtapas) {
158
                final Cronograma cronograma = new CronogramaBuilder().comNumeroAno(ano).build();
159
                final List<CronogramaEtapa> listaCronogramaEtapa = criarCronogramaEtapa(cronograma, listaEtapas);
160
                for (CronogramaEtapa cronogramaEtapa : listaCronogramaEtapa) {
161
                        cronograma.adicionarCronogramaEtapa(cronogramaEtapa);
162
                }
163
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
164
                        @Override
165
                        public String execute() throws Exception {
166
                                cronogramaFacade.cadastrar(cronograma);
167
                                List<Cronograma> cronogramasBuscados = cenarioTestHelper.consultarCronogramaEtapa(ano);
168
                                return DADOS_GRAVADOS_COM_SUCESSO + cenarioTestHelper.gerarMensagemConsultar(cronogramasBuscados);
169
                        }
170
                });
171
        }
172
 
173
        @Override
174
        public String alterarCronograma(final String ano, String listaEtapas, String sequencialUsuarioSca) {
175
                final Cronograma cronograma = new CronogramaBuilder().comNumeroAno(ano).build();
176
                final List<CronogramaEtapa> listaCronogramaEtapa = criarCronogramaEtapa(cronograma, listaEtapas);
177
                final UsuarioView usuario = new UsuarioViewBuilder().comSequencial(sequencialUsuarioSca).build();
178
                for (CronogramaEtapa cronogramaEtapa : listaCronogramaEtapa) {
179
                        cronograma.adicionarCronogramaEtapa(cronogramaEtapa);                                  
180
                }
181
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
182
                        @Override
183
                        public String execute() throws Exception {
184
                                cronogramaFacade.alterarCronogramaInserindoHistorico(cronograma, usuario);
185
                                Cronograma crongramaAlterado = cenarioTestHelper.consultarCronogramaPorId(cronograma);
186
                                return DADOS_GRAVADOS_COM_SUCESSO + cenarioTestHelper.gerarMensagemComHistorico(crongramaAlterado);
187
                        }
188
                });
189
        }
190
 
191
        @Override
192
        public String consultarParticipacaoDoServidor(String anoCorrente, String sequencialUnidadeExercicio, String nomeServidor, String matricula, String efetivoExercicio) {
193
                final List<Restricoes> restricoes = new ArrayList<Restricoes>();
194
                adicionarRestricaoCronogramaCasoSejaInformado(anoCorrente, restricoes);
195
                adicionarRestricaoEfetivoExercicioCasoSejaInformado(efetivoExercicio, restricoes);
196
                adicionarRestricaoMatriculaDadoFuncionalCasoSejaInformado(matricula, restricoes);
197
                adicionarRestricaoNomeServidorCasoSejaInformado(nomeServidor, restricoes);
198
                adicionarRestricaoUnidadeExercicioCasoSejaInformado(sequencialUnidadeExercicio, restricoes);
199
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
200
                        @Override
201
                        public String execute() throws Exception {
202
                                List<ServidorDadoFuncionalViewDTO> listaServidorDadoFuncionalViewDTO = servidorFacade.listarServidorDadoFuncionalParticipacaoAvaliacaoPorDemanda(restricoes, PRIMEIRO_REGISTRO_ZERO, Integer.MAX_VALUE);
203
                                return cenarioTestHelper.gerarMensagem(listaServidorDadoFuncionalViewDTO.toArray());
204
                        }
205
                });
206
        }
207
 
208
        @Override
209
        public String alterarEfetivoExercicioDoServidor(String sequencialDadoFuncional, String anoCronograma, String efetivoExercicio, String justificativa) {                         
210
                Cronograma cronograma = new CronogramaBuilder()
211
                                                                        .comNumeroAno(anoCronograma)
212
                                                                        .build();
213
                ServidorDadoFuncionalView dadoFuncional = new ServidorDadoFuncionalViewBuilder()
214
                                                                                                          .comSequencial(sequencialDadoFuncional)
215
                                                                                                          .build();
216
                final ServidorAvaliacao servidorAvaliacao = new ServidorAvaliacaoBuilder()
217
                                                                                                                .comCronograma(cronograma)
218
                                                                                                                .comDadoFuncional(dadoFuncional)
219
                                                                                                                .comTipoEfetivoExercicio(efetivoExercicio)
220
                                                                                                                .comDescricaoJustificativa(justificativa)
221
                                                                                                                .build();
222
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
223
                        @Override
224
                        public String execute() throws Exception {
225
                                servidorAvaliacaoFacade.alterar(servidorAvaliacao);
226
                                ServidorAvaliacao servidorAvaliacaoConsultado = cenarioTestHelper.consultarServidorAvaliacaoPorId(servidorAvaliacao);
227
                                return cenarioTestHelper.gerarMensagemServidorAvaliacaoResumido(servidorAvaliacaoConsultado);
228
                        }
229
                });
230
        }
231
 
232
        @Override
233
        public String consultarGrupoAvaliacao(String sequencialUsuarioLogado, String anoCronograma,
234
                                                                                  String sequencialUnidadeExercicio, String situacaoGrupo,
235
                                                                                  String descricaoGrupo) {
236
                UsuarioView usuarioLogado  = cenarioTestHelper.consultarUsuarioPorId(sequencialUsuarioLogado);
237
                Cronograma cronograma = new CronogramaBuilder().comNumeroAno(anoCronograma).build();
238
                UnidadeView unidadeExercicio = criarUnidade(sequencialUnidadeExercicio);
239
                final ParametrosConsultarGrupoAvaliacao parametros = new ParametrosConsultarGrupoAvaliacao(usuarioLogado, cronograma, unidadeExercicio,
240
                                                                                                                                                                                                 situacaoGrupo, descricaoGrupo, Integer.MAX_VALUE,
241
                                                                                                                                                                                                 PRIMEIRO_REGISTRO_ZERO);
242
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
243
                        @Override
244
                        public String execute() throws Exception {
245
                                List<GrupoAvaliacao> listaGrupoAvaliacao = grupoAvaliacaoFacade.consultarGrupoAvaliacao(parametros);
246
                                return cenarioTestHelper.gerarMensagem(listaGrupoAvaliacao.toArray(new Object[0]));
247
                        }
248
                });
249
        }
250
 
251
        @Override
252
        public String detalharGrupoAvaliacao(String sequencialDoGrupoDeAvaliacao) {
253
                final GrupoAvaliacao grupoAvaliacao = new GrupoAvaliacaoBuilder().comSequencial(sequencialDoGrupoDeAvaliacao).build();
254
 
255
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
256
                        @Override
257
                        public String execute() throws Exception {
258
                                GrupoAvaliacao grupoAvaliacaoConsultado = grupoAvaliacaoFacade.detalharGrupoAvaliacao(grupoAvaliacao);
259
                                return cenarioTestHelper.gerarMensagemAuxiliar(grupoAvaliacaoConsultado);
260
                        }
261
                });
262
        }
263
 
264
        @Override
265
        public String cadastrarGrupoAvaliacao(String descricao, String sequencialPessoaAvaliador, String listaAvaliados,
266
                                                                                  String sequencialUnidade, String anoCronograma) {
267
                Cronograma cronograma = criarCronograma(anoCronograma);
268
                final GrupoAvaliacao grupoAvaliacao = new GrupoAvaliacaoBuilder()
269
                                                                                                  .comDescricao(descricao)
270
                                                                                                  .comUnidade(criarUnidade(sequencialUnidade))
271
                                                                                                  .comServidorAvaliador(criarAvaliador(sequencialPessoaAvaliador))
272
                                                                                                  .comCronograma(cronograma)
273
                                                                                                  .build();
274
                Set<ServidorAvaliacao> servidoresAvaliados = criarServidoresAvaliacao(listaAvaliados, grupoAvaliacao, cronograma);
275
                grupoAvaliacao.setServidoresAvaliados(servidoresAvaliados);
276
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
277
                        @Override
278
                        public String execute() throws Exception {
279
                                grupoAvaliacaoFacade.cadastrar(grupoAvaliacao);
280
                                GrupoAvaliacao grupoAvaliacaoConsultado = cenarioTestHelper.consultarGrupoAvaliacaoPorId(grupoAvaliacao);
281
                                return DADOS_GRAVADOS_COM_SUCESSO + cenarioTestHelper.gerarMensagemAuxiliar(grupoAvaliacaoConsultado);
282
                        }
283
                });
284
        }
285
 
286
        @Override
287
        public String alterarGrupoAvaliacao(String sequencialGrupo, String descricao, String sequencialPessoaAvaliador,
288
                                                                                String listaAvaliados, String observacao) {
289
                GrupoAvaliacao grupoAvaliacaoBuscado = cenarioTestHelper.consultarGrupoAvaliacaoPorSequencial(converterStringParaLong(sequencialGrupo));
290
                Set<ServidorAvaliacao> servidoresAvaliados = criarServidoresAvaliacao(listaAvaliados, grupoAvaliacaoBuscado);
291
                final GrupoAvaliacao grupoAvaliacaoAlterado = new GrupoAvaliacaoBuilder(grupoAvaliacaoBuscado)
292
                                                                                                                  .comDescricao(descricao)
293
                                                                                                                  .comServidorAvaliador(criarAvaliador(sequencialPessoaAvaliador))
294
                                                                                                                  .comServidoresAvaliados(servidoresAvaliados)
295
                                                                                                                  .comObservacao(observacao)
296
                                                                                                                  .build();
297
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
298
                        @Override
299
                        public String execute() throws Exception {
300
                                grupoAvaliacaoFacade.alterar(grupoAvaliacaoAlterado);
301
                                GrupoAvaliacao grupoAvaliacaoConsultado = cenarioTestHelper.consultarGrupoAvaliacaoPorId(grupoAvaliacaoAlterado);
302
                                return DADOS_GRAVADOS_COM_SUCESSO + cenarioTestHelper.gerarMensagemAuxiliar(grupoAvaliacaoConsultado);
303
                        }
304
                });
305
        }
306
 
307
        @Override
308
        public String confirmarFormacaoDoGrupoAvaliacao(String sequencialGrupo, String observacao) {
309
                final GrupoAvaliacao grupoAvaliacao = cenarioTestHelper.consultarGrupoAvaliacaoPorId(new GrupoAvaliacaoBuilder().comSequencial(sequencialGrupo).build());
310
                grupoAvaliacao.setObservacao(observacao);
311
 
312
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
313
                        @Override
314
                        public String execute() throws Exception {
315
                                grupoAvaliacaoFacade.confirmarFormacaoDoGrupoAvaliacao(grupoAvaliacao);
316
                                GrupoAvaliacao grupoAvaliacaoConsultado = cenarioTestHelper.consultarGrupoAvaliacaoPorId(grupoAvaliacao);
317
                                return DADOS_GRAVADOS_COM_SUCESSO + cenarioTestHelper.gerarMensagemAuxiliar(grupoAvaliacaoConsultado);
318
                        }
319
                });
320
        }
321
 
322
        @Override
323
        public String rejeitarFormacaoDoGrupoAvaliacao(String sequencialGrupo, String observacao) {
324
                final GrupoAvaliacao grupoAvaliacao = cenarioTestHelper.consultarGrupoAvaliacaoPorId(new GrupoAvaliacaoBuilder().comSequencial(sequencialGrupo).build());
325
                grupoAvaliacao.setObservacao(observacao);
326
 
327
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
328
                        @Override
329
                        public String execute() throws Exception {
330
                                grupoAvaliacaoFacade.rejeitarFormacaoDoGrupoAvaliacao(grupoAvaliacao);
331
                                GrupoAvaliacao grupoAvaliacaoConsultado = cenarioTestHelper.consultarGrupoAvaliacaoPorId(grupoAvaliacao);
332
                                return DADOS_GRAVADOS_COM_SUCESSO + cenarioTestHelper.gerarMensagemAuxiliar(grupoAvaliacaoConsultado);
333
                        }
334
                });
335
        }
336
 
337
        @Override
338
        public String listarServidoresParaEscolhaAvaliados(String sequencialGrupo, String anoCronograma, String codigoUnidade,
339
                                                                                                           String nomeServidor, String matriculaServidor) {
340
                GrupoAvaliacao grupoAvaliacao = cenarioTestHelper.consultarGrupoAvaliacaoPorSequencial(converterStringParaLong(sequencialGrupo));
341
                grupoAvaliacao = VerificadorUtil.naoEstaNulo(grupoAvaliacao) ? grupoAvaliacao : criarGrupoAvaliacao(sequencialGrupo, codigoUnidade, anoCronograma);
342
                final ParametrosConsultarServidorAvaliacaoDisponivelParaOhGrupoAvaliacao parametros = new ParametrosConsultarServidorAvaliacaoDisponivelParaOhGrupoAvaliacao();
343
                parametros.setNomeServidor(nomeServidor);
344
                parametros.setGrupoAvaliacao(grupoAvaliacao);
345
                parametros.setMatriculaServidor(converterStringParaLong(matriculaServidor));
346
                parametros.setPrimeiroRegistro(PRIMEIRO_REGISTRO_ZERO);
347
                parametros.setTamanhoPagina(Integer.MAX_VALUE);
348
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
349
                        @Override
350
                        public String execute() throws Exception {
351
                                List<ServidorAvaliacao> listaServidoresConsultados = servidorAvaliacaoFacade.consultarServidorAvaliacaoDisponivelParaOhGrupoAvaliacao(parametros);
352
                                return cenarioTestHelper.gerarMensagemServidorAvaliacaoNomeEhMatricula(listaServidoresConsultados);
353
                        }
354
                });
355
        }
356
 
357
        @Override
358
        public String consultarPessoaPorSequencial(final String sequencialPessoaFisica) {
359
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
360
                        @Override
361
                        public String execute() throws Exception {
362
                                PessoaFisicaView pessoaFisica = pessoaFisicaViewFacade.consultarPorSequencial(converterStringParaLong(sequencialPessoaFisica));
363
                                return VerificadorUtil.naoEstaNulo(pessoaFisica) ? cenarioTestHelper.gerarMensagem(pessoaFisica) : DADOS_EXIBIDOS_VAZIO;
364
                        }
365
                });
366
        }
367
 
368
        @Override
369
        public String adicionarAvaliadoGrupo(final String sequencialDadoFuncional, final String numeroAnoCronograma, final String sequencialGrupoAvaliacao) {
370
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
371
                        @Override
372
                        public String execute() throws Exception {
373
                                grupoAvaliacaoFacade.adicionarServidorAvaliacaoDoGrupo(converterStringParaLong(sequencialGrupoAvaliacao), converterStringParaLong(sequencialDadoFuncional), converterStringParaLong(numeroAnoCronograma));
374
                                GrupoAvaliacao grupoAvaliacao = cenarioTestHelper.consultarGrupoAvaliacaoPorSequencial(converterStringParaLong(sequencialGrupoAvaliacao));
375
                                return cenarioTestHelper.gerarMensagemAuxiliar(grupoAvaliacao);
376
                        }
377
                });
378
        }
379
 
380
        @Override
381
        public String remocaoAvaliadoGrupo(final String sequencialDadoFuncional, final String sequencialGrupoAvaliacao) {
382
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
383
                        @Override
384
                        public String execute() throws Exception {
385
                                grupoAvaliacaoFacade.removerServidorAvaliacaoDoGrupo(converterStringParaLong(sequencialGrupoAvaliacao), converterStringParaLong(sequencialDadoFuncional));
386
                                GrupoAvaliacao grupoAvaliacao = cenarioTestHelper.consultarGrupoAvaliacaoPorSequencial(converterStringParaLong(sequencialGrupoAvaliacao));
387
                                return cenarioTestHelper.gerarMensagemAuxiliar(grupoAvaliacao);
388
                        }
389
                });
390
        }
391
 
392
        @Override
393
        public String excluirGrupoAvaliacao(final String sequencialGrupoAvaliacao) {
394
                final GrupoAvaliacao grupoAvaliacao = criarGrupoAvaliacao(sequencialGrupoAvaliacao);
395
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
396
                        @Override
397
                        public String execute() throws Exception {
398
                                grupoAvaliacaoFacade.excluir(grupoAvaliacao);
399
                                GrupoAvaliacao grupoAvaliacaoConsultado = cenarioTestHelper.consultarGrupoAvaliacaoPorSequencial(converterStringParaLong(sequencialGrupoAvaliacao));
400
                                return VerificadorUtil.estaNulo(grupoAvaliacaoConsultado) ? "Grupo de avaliação excluído com sucesso." : null;
401
                        }
402
                });
403
        }
404
 
405
        @Override
406
        public String consultarCronogramaCorrente() {
407
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
408
                        @Override
409
                        public String execute() throws Exception {
410
                                Cronograma cronograma = cronogramaFacade.consultarCronogramaCorrente();
411
                                return cenarioTestHelper.gerarMensagem(cronograma);
412
                        }
413
                });
414
        }
415
 
416
        @Override
417
        public String listarMatriculasAutoAvaliacao(String sequencialUsuarioLogado,     String anoCronograma) {
418
                PessoaFisicaView pessoa = new PessoaFisicaView();
419
                pessoa.setSequencialPessoa(new Long(sequencialUsuarioLogado));
420
                final ServidorView servidor = new ServidorViewBuilder().comPessoaFisica(pessoa).build();
421
                final Cronograma cronograma = new CronogramaBuilder().comNumeroAno(anoCronograma).build();
422
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
423
                        @Override
424
                        public String execute() throws Exception {
425
                                List<ServidorAvaliacao> listaServidoresConsultados = servidorAvaliacaoFacade.listarServidorAvaliacaoPorServidorEhCronograma(servidor, cronograma);
426
                                return cenarioTestHelper.gerarMensagemServidorAvaliacaoMatriculaUnidadeEeCargo(listaServidoresConsultados);
427
                        }
428
                });
429
        }
430
 
431
        @Override
432
        public String listarQuestaoAutoAvaliacao(String sequencialDadoFuncional, String anoCronograma) {
433
                final ServidorAvaliacao servidorAvaliacao = gerarServidorAvaliacao(sequencialDadoFuncional, anoCronograma);
434
 
435
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
436
                        @Override
437
                        public String execute() throws Exception {
438
                                List<QuestaoAvaliacaoDesempenho> listaQuestoes = avaliacaoDesempenhoFacade.listarQuestaoAutoAvaliacao(servidorAvaliacao);
439
                                return cenarioTestHelper.gerarMensagem(listaQuestoes.toArray(new Object[0]));
440
                        }
441
                });
442
        }
443
 
444
        @Override
445
        public String responderQuestaoAutoAvaliacao(String sequencialAvaliacaoDesempenho, String sequencialDadoFuncional, String anoCronograma,
446
                        String sequencialQuestao, String respostaMultiplaEscolha, String respostaAberta) {
447
                ServidorAvaliacao servidorAvaliacao = gerarServidorAvaliacao(sequencialDadoFuncional, anoCronograma);
448
 
449
                QuestaoAvaliacaoDesempenho questaoAvaliacaoDesempenho = cenarioTestHelper.consultarQuestaoAvaliacaoDesempenho(sequencialQuestao);
450
 
451
                final AvaliacaoDesempenho avaliacaoDesempenho = new AvaliacaoDesempenhoBuilder()
452
                        .comSequencial(sequencialAvaliacaoDesempenho)
453
                        .comServidorAvaliacao(servidorAvaliacao)
454
                        .comQuestaoAvaliacaoDesempenho(questaoAvaliacaoDesempenho)
455
                        .comTipoRespostaMultiplaEscolha(respostaMultiplaEscolha)
456
                        .comRespostaAberta(respostaAberta)
457
                        .build();
458
 
459
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
460
                        @Override
461
                        public String execute() throws Exception {
462
                                avaliacaoDesempenhoFacade.responderQuestao(avaliacaoDesempenho);
463
                                List<QuestaoAvaliacaoDesempenho> listaQuestoes = avaliacaoDesempenhoFacade.listarQuestaoAutoAvaliacao(avaliacaoDesempenho.getServidorAvaliacao());
464
                                return DADOS_GRAVADOS_COM_SUCESSO + cenarioTestHelper.gerarMensagem(listaQuestoes.toArray(new Object[0]));
465
                        }
466
                });
467
        }
468
 
469
        @Override
470
        public String listarServidoresMesmoGrupoAvaliador(String sequencialPessoaAvaliador, String anoCronograma) {
471
                final ParametrosConsultarServidorAvaliacaoAvaliadoPorAvaliador parametros = new ParametrosConsultarServidorAvaliacaoAvaliadoPorAvaliador();
472
                parametros.setSequencialPessoaFisicaAvaliador(converterStringParaLong(sequencialPessoaAvaliador));
473
                parametros.setNumeroAnoCronograma(converterStringParaLong(anoCronograma));
474
                parametros.setTamanhoPagina(Integer.MAX_VALUE);
475
                parametros.setPrimeiroRegistro(PRIMEIRO_REGISTRO_ZERO);
476
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
477
                        @Override
478
                        public String execute() throws Exception {
479
                                List<ServidorAvaliacaoDTO> listaAvaliados = servidorAvaliacaoFacade.consultarServidorAvaliacaoAvaliadosPorAvaliador(parametros);
480
                                return cenarioTestHelper.gerarMensagem(listaAvaliados.toArray(new Object[0]));
481
                        }
482
                });
483
        }
484
 
485
        @Override
486
        public String listarQuestaoAvaliacao(String sequencialDadoFuncional, String anoCronograma) {
487
                final ServidorAvaliacao servidorAvaliacao = gerarServidorAvaliacao(sequencialDadoFuncional, anoCronograma);
488
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
489
                        @Override
490
                        public String execute() throws Exception {
491
                                List<QuestaoAvaliacaoDesempenho> listaQuestoes = avaliacaoDesempenhoFacade.listarQuestaoAvaliacao(servidorAvaliacao);
492
                                return cenarioTestHelper.gerarMensagem(listaQuestoes.toArray(new Object[0]));
493
                        }
494
                });
495
        }
496
 
497
        @Override
498
        public String listarRevisaoNaoRespondida(String sequencialPessoaUsuario, String anoCronograma) {
499
                UsuarioView usuario = cenarioTestHelper.consultarUsuarioPorId(sequencialPessoaUsuario);
500
                Cronograma cronograma = criarCronograma(anoCronograma);
501
                final ParametrosConsultarRevisaoAvaliacaoNaoRespondida parametros = new ParametrosConsultarRevisaoAvaliacaoNaoRespondida();
502
                parametros.setCronograma(cronograma);
503
                parametros.setUsuario(usuario);
504
                parametros.setTamanhoPagina(Integer.MAX_VALUE);
505
                parametros.setPrimeiroRegistro(PRIMEIRO_REGISTRO_ZERO);
506
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
507
                        @Override
508
                        public String execute() throws Exception {
509
                                List<RevisaoAvaliacaoDTO> revisoes = avaliacaoFacade.consultarRevisaoNaoRespondida(parametros);
510
                                return cenarioTestHelper.gerarMensagemConsultar(revisoes);
511
                        }
512
                });
513
        }
514
 
515
        @Override
516
        public String responderSolicitacaoRevisao(final String sequencialRevisao, String resposta, String questoesDesempenho) {
517
                final RevisaoAvaliacao revisaoAvaliacao = cenarioTestHelper.consultarRevisaoAvaliacao(new Long(sequencialRevisao));
518
                revisaoAvaliacao.setResposta(resposta);
519
 
520
                List<RevisaoAvaliacaoDesempenho> revisoesCriadas = criarListaRevisaoAvaliacaoDesempenho(questoesDesempenho);
521
                List<RevisaoAvaliacaoDesempenho> novaListaDeRevisao = new ArrayList<RevisaoAvaliacaoDesempenho>();
522
                for (RevisaoAvaliacaoDesempenho revisaoAvaliacaoDesempenho : revisaoAvaliacao.getRevisoesAvaliacaoDesempenho()) {
523
                        for (RevisaoAvaliacaoDesempenho revisaoAvaliacaoDesempenhoCriada : revisoesCriadas) {
524
                                if(revisaoAvaliacaoDesempenhoCriada.getReviAvaliacaoDesempenhoId().equals(revisaoAvaliacaoDesempenho.getReviAvaliacaoDesempenhoId())) {
525
                                        revisaoAvaliacaoDesempenho.setResposta(revisaoAvaliacaoDesempenhoCriada.getResposta());
526
                                }
527
                        }
528
                        novaListaDeRevisao.add(revisaoAvaliacaoDesempenho);
529
                }
530
                revisaoAvaliacao.setRevisoesAvaliacaoDesempenho(novaListaDeRevisao);
531
 
532
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
533
                        @Override
534
                        public String execute() throws Exception {
535
                                avaliacaoFacade.responderSolicitacaoRevisao(revisaoAvaliacao);
536
                                RevisaoAvaliacao revisaoAvaliacaoConsultada = cenarioTestHelper.consultarRevisaoAvaliacao(new Long(sequencialRevisao));
537
                                return DADOS_GRAVADOS_COM_SUCESSO + cenarioTestHelper.gerarMensagem(revisaoAvaliacaoConsultada);
538
                        }
539
                });
540
        }
541
 
542
        private List<CronogramaEtapa> criarCronogramaEtapa(Cronograma cronograma, String listaEtapas) {
543
                List<CronogramaEtapa> listaCronogramaEtapa = new ArrayList<CronogramaEtapa>();
544
                String[] etapaStringArray = {};
545
                if(listaEtapas != null) {
546
                        etapaStringArray = listaEtapas.split(";");
547
                }
548
 
549
                for (String etapaString : etapaStringArray) {
550
                        EtapaBuilder etapaBuilder = new EtapaBuilder();
551
                        CronogramaEtapaBuilder cronogramaEtapaBuilder = new CronogramaEtapaBuilder();
552
                        cronogramaEtapaBuilder.comCronograma(cronograma);
553
                        String[] camposEtapa = etapaString.split(",");
554
                        etapaBuilder.comCodigo(camposEtapa[0].trim());
555
                        etapaBuilder.comDescricao(camposEtapa[1].trim());
556
                        Etapa etapa = etapaBuilder.build();
557
                        cronogramaEtapaBuilder.comEtapa(etapa);
558
                        cronogramaEtapaBuilder.comDataInicialEtapa(camposEtapa[2].trim());
559
                        cronogramaEtapaBuilder.comDataFinalEtapa(camposEtapa[3].trim());
560
                        CronogramaEtapa cronogramaEtapa = cronogramaEtapaBuilder.build();
561
                        cronogramaEtapa.getCronogramaEtapaId().setCodigoEtapa(etapa.getCodigo());
562
                        cronogramaEtapa.getCronogramaEtapaId().setNumeroAno(cronograma.getNumeroAno());
563
                        listaCronogramaEtapa.add(cronogramaEtapa);
564
                }
565
                return listaCronogramaEtapa;
566
        }
567
 
568
        private Set<ServidorAvaliacao> criarServidoresAvaliacao(String listaAvaliados, GrupoAvaliacao grupoAvaliacaoBuscado) {
569
                Cronograma cronograma = grupoAvaliacaoBuscado.getCronograma();
570
                return criarServidoresAvaliacao(listaAvaliados, grupoAvaliacaoBuscado, cronograma);
571
        }
572
 
573
        private Set<ServidorAvaliacao> criarServidoresAvaliacao(String listaAvaliados, GrupoAvaliacao grupoAvaliacao, Cronograma cronograma) {
574
                Set<ServidorAvaliacao> listaServidorAvaliacao = new HashSet<ServidorAvaliacao>();
575
                String[] servidoresAvaliadosStringArray = {};
576
 
577
                if(listaAvaliados != null) {
578
                        servidoresAvaliadosStringArray = listaAvaliados.split(";");
579
                }
580
 
581
                for (String servidorAvaliacaoString : servidoresAvaliadosStringArray) {
582
                        String[] camposServidorAvaliacao = servidorAvaliacaoString.split(",");
583
                        ServidorDadoFuncionalView servidorDadoFuncional = cenarioTestHelper.consultarDadoFuncional(camposServidorAvaliacao[0].trim());
584
                        ServidorAvaliacao servidorAvaliacao = new ServidorAvaliacaoBuilder()
585
                                                                                                        .comCronograma(cronograma)
586
                                                                                                        .comGrupoAvaliacao(grupoAvaliacao)
587
                                                                                                        .comTipoEfetivoExercicio("S")
588
                                                                                                        .comDadoFuncional(servidorDadoFuncional)
589
                                                                                                        .build();
590
 
591
                        listaServidorAvaliacao.add(servidorAvaliacao);
592
                }
593
 
594
                return listaServidorAvaliacao;
595
        }
596
 
597
 
598
 
599
 
600
        @Override
601
        public String listarServidorParaVincularQualificacao(final String unidadesExercicio, final String cronogramaCorrente) {
602
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
603
                        @Override
604
                        public String execute() throws Exception {
605
                                List<ServidorDadoFuncionalView> listaDadoFuncional = servidorFacade.listarServidorParticipanteDeGrupoDaUnidadeEhCronograma(gerarListaSequencialUnidadeExercicio(unidadesExercicio), valueLong(cronogramaCorrente), 0, 5);
606
                                return cenarioTestHelper.gerarMensagemServidorResumido(listaDadoFuncional);
607
                        }
608
                });
609
        }
610
 
611
        @Override
612
        public String listarQualificacaoServidor(String sequencialDadoFuncionalServidor, String anoCronograma) {
613
                final ServidorDadoFuncionalView servidorDadoFuncional = cenarioTestHelper.consultarDadoFuncional(sequencialDadoFuncionalServidor);
614
                final ServidorAvaliacaoId servidorAvaliacaoId = new ServidorAvaliacaoIdBuilder().comSequencialDadoFuncional(sequencialDadoFuncionalServidor).comNumeroAno(anoCronograma).build();
615
                final ServidorAvaliacao servidorAvaliacao = new ServidorAvaliacaoBuilder().comServidorAvaliacaoId(servidorAvaliacaoId).build();
616
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
617
                        @Override
618
                        public String execute() throws Exception {
619
                                List<QualificacaoServidorView> listaQualificacoesDisponiveis = servidorFacade.listarQualificacaoServidor(servidorDadoFuncional);
620
                                List<QualificacaoServidorView> listaQualificacoesUtilizadas = servidorFacade.listarQualificacaoServidorCronograma(servidorAvaliacao);
621
                                return cenarioTestHelper.gerarMensagemlistarQualificacaoServidor(listaQualificacoesDisponiveis, listaQualificacoesUtilizadas);
622
                        }
623
                });
624
        }
625
 
626
        @Override
627
        public String vincularQualificacao(final String sequencialDadoFuncionalServidor, final String numeroAnoCronograma, final String[] listaSequencialQualificacoes) {
628
                final ServidorDadoFuncionalView servidorDadoFuncional = criarServidorDadoFuncionalView(sequencialDadoFuncionalServidor);
629
                final Cronograma cronograma = criarCronograma(numeroAnoCronograma);
630
                final QualificacaoServidorView[] qualificacoesServidor = criarArrayQualificacaoServidorView(listaSequencialQualificacoes);
631
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
632
                        @Override
633
                        public String execute() throws Exception {
634
                                servidorFacade.vincularQualificacao(servidorDadoFuncional, cronograma, qualificacoesServidor);
635
                                List<QualificacaoServidorCronograma> listaQualificacoes = cenarioTestHelper.consultarQualificacaoServidorCronograma(sequencialDadoFuncionalServidor, numeroAnoCronograma, listaSequencialQualificacoes);
636
                                return DADOS_GRAVADOS_COM_SUCESSO + cenarioTestHelper.gerarMensagem(listaQualificacoes.toArray(new Object[0]));
637
                        }
638
                });
639
        }
640
 
641
        @Override
642
        public String solicitarRevisaoAvaliacao(String tipoAvaliacao, String solicitacao, String notaAvaliacao,
643
                                                                                        String sequencialDadoFuncionalServidor, String anoCronograma,
644
                                                                                        String questoesDesempenho) {
645
                ServidorAvaliacao servidorAvaliacao = criarServidorAvaliacao(sequencialDadoFuncionalServidor, anoCronograma);
646
 
647
                List<RevisaoAvaliacaoDesempenho> revisoesAvaliacaoDesempenho = criarListaRevisaoAvaliacaoDesempenho(questoesDesempenho);
648
 
649
                final RevisaoAvaliacao revisaoAvaliacao = new RevisaoAvaliacaoBuilder()
650
                                                                                                          .comTipoAvaliacao(tipoAvaliacao)
651
                                                                                                          .comSolicitacao(solicitacao)
652
                                                                                                          .comNota(notaAvaliacao)
653
                                                                                                          .comServidorAvaliacao(servidorAvaliacao)
654
                                                                                                          .build();
655
 
656
                List<RevisaoAvaliacaoDesempenho> revisoes = new ArrayList<RevisaoAvaliacaoDesempenho>();
657
 
658
                for (RevisaoAvaliacaoDesempenho revisaoAvaliacaoDesempenho : revisoesAvaliacaoDesempenho) {
659
                        RevisaoAvaliacaoDesempenhoId revisaoAvaliacaoDesempenhoId = new RevisaoAvaliacaoDesempenhoId();
660
                        revisaoAvaliacaoDesempenhoId.setSequencialAvaliacaoDesempenho(revisaoAvaliacaoDesempenho.getAvaliacaoDesempenho().getSequencial());
661
 
662
                        revisaoAvaliacaoDesempenho.setReviAvaliacaoDesempenhoId(revisaoAvaliacaoDesempenhoId);
663
                        revisaoAvaliacaoDesempenho.setRevisaoAvaliacao(revisaoAvaliacao);
664
 
665
                        revisoes.add(revisaoAvaliacaoDesempenho);
666
                }
667
 
668
                revisaoAvaliacao.setRevisoesAvaliacaoDesempenho(revisoes);
669
 
670
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
671
                        @Override
672
                        public String execute() throws Exception {
673
                                avaliacaoFacade.solicitarRevisaoAvaliacao(revisaoAvaliacao);
674
                                RevisaoAvaliacao revisaoAvaliacaoConsultada = cenarioTestHelper.consultarRevisaoAvaliacao(revisaoAvaliacao.getSequencial());
675
 
676
                                return DADOS_GRAVADOS_COM_SUCESSO + cenarioTestHelper.gerarMensagem(revisaoAvaliacaoConsultada);
677
                        }
678
                });
679
        }
680
 
681
        @Override
682
        public String visualizarNotaAvaliacao(String sequencialServidor, String anoCronograma) {
683
                final List<ServidorAvaliacao> listaServidorAvaliacao = criarListaServidorAvaliacao(sequencialServidor, anoCronograma);
684
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
685
                        @Override
686
                        public String execute() throws Exception {
687
                                List<Avaliacao> listaAvaliacao = new ArrayList<Avaliacao>();
688
                                for (ServidorAvaliacao servidorAvaliacao : listaServidorAvaliacao) {
689
                                        listaAvaliacao.add(avaliacaoFacade.visualizarNotaAvaliacao(servidorAvaliacao));
690
                                }
691
                                return cenarioTestHelper.gerarMensagem(listaAvaliacao.toArray());
692
                        }
693
                });
694
        }
695
 
696
        @Override
697
        public String consultarFaltasDoServidor(final String cronograma, final String numeroDocumentoServidor)  {
698
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
699
                        @Override
700
                        public String execute() throws Exception {
701
                                List<ServidorFaltasMesAhMesDTO> listaFaltasServidores = servidorFaltaFacade.listarFaltasDoServidorMesAhMesPorDemanda(valueLong(cronograma), numeroDocumentoServidor, valueInt(PRIMEIRO_REGISTRO_0), valueInt(TAMANHO_DA_PAGINA_5));
702
                                String mensagemParaRetorno = cenarioTestHelper.gerarMensagem(listaFaltasServidores.toArray());
703
                                return ajustarMensagem(mensagemParaRetorno);
704
                        }
705
                });
706
        }
707
 
708
        @Override
709
        public String importarFaltasDoServidor(final String cronograma, final String nomeArquivo) {
710
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
711
                        @Override
712
                        public String execute() throws Exception {
713
                                InputStream inputStream = null;
714
                                try {
715
                                        File planilha = new File(nomeArquivo);
716
                                        inputStream = new FileInputStream(planilha);
717
                                } catch (Exception e){}
718
                                        servidorFaltaFacade.importarFaltasServidor(valueLong(cronograma), inputStream, nomeArquivo);
719
                                        String mensagemParaRetorno = MENSAGEM_ARQUIVO_ACATADO_COM_SUCESSO + " " + cenarioTestHelper.consultarFaltasDoServidor(cronograma);
720
                                return ajustarMensagem(mensagemParaRetorno);
721
                        }
722
                });
723
        }
724
 
725
        @Override
726
        public String listarUnidades(String sequencialPessoaUsuario) {
727
                final UsuarioView usuario = cenarioTestHelper.consultarUsuarioPorId(sequencialPessoaUsuario);
728
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
729
                        @Override
730
                        public String execute() throws Exception {
731
                                List<UnidadeView> listaUnidades = unidadeFacade.listarUnidadeExercicioPorPapelUsuario(usuario);
732
                                return cenarioTestHelper.gerarMensagem(listaUnidades.toArray());
733
                        }
734
                });
735
        }
736
 
737
        @Override
738
        public String emitirRelatorioQualificacao(String anoCronograma, String unidadeExercicio, String
739
                        sequencialGrupoAvaliacao, String matriculaServidor, String sequencialUsuarioEmissao) {
740
                final ParametroEmissaoRelatorioDTO parametroEmissaoRelatorio = new ParametroEmissaoRelatorioBuilder()
741
                                                                                                                                                                .comCronograma(anoCronograma)
742
                                                                                                                                                                .comUnidadeExercicio(unidadeExercicio)
743
                                                                                                                                                                .comGrupoAvaliacao(sequencialGrupoAvaliacao)
744
                                                                                                                                                                .comMatriculaServidor(matriculaServidor)
745
                                                                                                                                                                .comUsuario(sequencialUsuarioEmissao)
746
                                                                                                                                                                .build();
747
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
748
                        @Override
749
                        public String execute() throws Exception {
750
                                JasperPrint relatorioGerado = emissorRelatorioFacade.emitirRelatorioQualificacao(parametroEmissaoRelatorio);
751
                                return gerarMensagemRelatorio(relatorioGerado);
752
                        }
753
                });
754
        }
755
 
756
        @Override
757
        public String emitirRelatorioFaltas(String anoCronograma, String unidadeExercicio, String matriculaServidor) {
758
                final ParametroEmissaoRelatorioDTO parametroEmissaoRelatorio = new ParametroEmissaoRelatorioBuilder()
759
                                                                                        .comCronograma(anoCronograma)
760
                                                                                        .comUnidadeExercicio(unidadeExercicio)
761
                                                                                        .comMatriculaServidor(matriculaServidor)
762
                                                                                        .comUsuarioEmissao(gerarUsuario(SEQUENCIAL_PESSOA_LUCIANO_BARBOSA_1))
763
                                                                                        .build();
764
 
765
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
766
 
767
                        @Override
768
                        public String execute() throws Exception {
769
                                JasperPrint relatorioGerado = emissorRelatorioFacade.emitirRelatorioFaltas(parametroEmissaoRelatorio);
770
                                return gerarMensagemRelatorio(relatorioGerado);
771
                        }
772
 
773
                });
774
        }
775
 
776
        @Override
777
        public String listarGrupoPorUnidadeExercicio(String anoCronograma,
778
                        String unidadeExercicio) {
779
                final ParametroEmissaoRelatorioDTO parametroEmissaoRelatorio = new ParametroEmissaoRelatorioBuilder()
780
                                                                                                                                                                .comCronograma(anoCronograma)
781
                                                                                                                                                                .comUnidadeExercicio(unidadeExercicio)
782
                                                                                                                                                                .build();
783
 
784
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
785
 
786
                        @Override
787
                        public String execute() throws Exception {
788
                                List<GrupoAvaliacao> gruposAvaliacoes = emissorRelatorioFacade.listarGrupoPorUnidadeExercicio(parametroEmissaoRelatorio);
789
                                return cenarioTestHelper.gerarMensagemGrupoAvaliacaoDescricao(gruposAvaliacoes);
790
                        }
791
                });
792
        }
793
 
794
        @Override
795
        public String emitirRelatorioReconsideracao(String anoCronograma,
796
                        String unidadeExercicio, String sequencialGrupoAvaliacao,
797
                        String matriculaServidor, String sequencialUsuarioEmissao) {
798
                final ParametroEmissaoRelatorioDTO parametroEmissaoRelatorio = new ParametroEmissaoRelatorioBuilder()
799
                                                                                                                                                                .comCronograma(anoCronograma)
800
                                                                                                                                                                .comUnidadeExercicio(unidadeExercicio)
801
                                                                                                                                                                .comGrupoAvaliacao(sequencialGrupoAvaliacao)
802
                                                                                                                                                                .comMatriculaServidor(matriculaServidor)
803
                                                                                                                                                                .comUsuario(sequencialUsuarioEmissao)
804
                                                                                                                                                                .build();
805
 
806
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
807
 
808
                        @Override
809
                        public String execute() throws Exception {
810
                                JasperPrint relatorioGerado = emissorRelatorioFacade.emitirRelatorioReconsideracao(parametroEmissaoRelatorio);
811
                                return gerarMensagemRelatorio(relatorioGerado);
812
                        }
813
                });
814
        }
815
 
816
        @Override
817
        public String emitirRelatorioAcompanhamentoAvaliacao(String anoCronograma,
818
                        String unidadeExercicio, String sequencialGrupoAvaliacao,
819
                        String matriculaServidor, String sequencialUsuarioEmissao) {
820
                final ParametroEmissaoRelatorioDTO parametroEmissaoRelatorio = new ParametroEmissaoRelatorioBuilder()
821
                                .comCronograma(anoCronograma)
822
                                .comUnidadeExercicio(unidadeExercicio)
823
                                .comGrupoAvaliacao(sequencialGrupoAvaliacao)
824
                                .comMatriculaServidor(matriculaServidor)
825
                                .comUsuario(sequencialUsuarioEmissao)
826
                                .build();
827
 
828
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
829
 
830
                        @Override
831
                        public String execute() throws Exception {
832
                                JasperPrint relatorioGerado = emissorRelatorioFacade.emitirRelatorioAcompanhamentoAvaliacao(parametroEmissaoRelatorio);
833
                                return gerarMensagemRelatorio(relatorioGerado);
834
                        }
835
                });
836
        }
837
 
838
        @Override
839
        public String emitirRelatorioAvaliacaoGeral(String anoCronograma,
840
                        String unidadeExercicio, String sequencialGrupoAvaliacao,
841
                        String matriculaServidor, String sequencialUsuarioEmissao) {
842
                final ParametroEmissaoRelatorioDTO parametroEmissaoRelatorio = new ParametroEmissaoRelatorioBuilder()
843
                .comCronograma(anoCronograma)
844
                .comUnidadeExercicio(unidadeExercicio)
845
                .comGrupoAvaliacao(sequencialGrupoAvaliacao)
846
                .comMatriculaServidor(matriculaServidor)
847
                .comUsuario(sequencialUsuarioEmissao)
848
                .build();
849
 
850
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
851
 
852
                        @Override
853
                        public String execute() throws Exception {
854
                                JasperPrint relatorioGerado = emissorRelatorioFacade.emitirRelatorioAvaliacaoGeral(parametroEmissaoRelatorio);
855
                                return gerarMensagemRelatorio(relatorioGerado);
856
                        }
857
                });
858
        }
859
 
860
        @Override
861
        public String emitirRelatorioObservacoes(String anoCronograma, String unidadeExercicio, String sequencialGrupoAvaliacao, String numeroMatriculaServidor) {
862
                final ParametroEmissaoRelatorioDTO parametroEmissaoRelatorio = new ParametroEmissaoRelatorioBuilder()
863
                                                                                                                                                        .comCronograma(anoCronograma)
864
                                                                                                                                                        .comUnidadeExercicio(unidadeExercicio)
865
                                                                                                                                                        .comGrupoAvaliacao(sequencialGrupoAvaliacao)
866
                                                                                                                                                        .comMatriculaServidor(numeroMatriculaServidor)
867
                                                                                                                                                        .comUsuarioEmissao(gerarUsuario(SEQUENCIAL_PESSOA_LUCIANO_BARBOSA_1))
868
                                                                                                                                                        .build();
869
 
870
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
871
 
872
                        @Override
873
                        public String execute() throws Exception {
874
                                JasperPrint relatorioGerado = emissorRelatorioFacade.emitirRelatorioObservacoes(parametroEmissaoRelatorio);
875
                                return gerarMensagemRelatorio(relatorioGerado);
876
                        }
877
 
878
                });
879
        }
880
 
881
        @Override
882
        public String listarQuestoesRecurso(String sequencialDadoFuncional, String numeroAnoCronograma) {
883
                final ServidorAvaliacao servidorAvaliacao = gerarServidorAvaliacao(sequencialDadoFuncional, numeroAnoCronograma);
884
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
885
                        @Override
886
                        public String execute() throws Exception {
887
                                List<QuestaoAvaliacaoDesempenho> listaQuestoes = avaliacaoDesempenhoFacade.listarQuestoesRecurso(servidorAvaliacao);
888
                                return cenarioTestHelper.gerarMensagem(listaQuestoes.toArray(new Object[0]));
889
                        }
890
                });
891
        }
892
 
893
        private UsuarioView gerarUsuario(String sequencialUsuarioEmissao) {
894
                if(VerificadorUtil.naoEstaNuloOuVazio(sequencialUsuarioEmissao)) {
895
                        UsuarioView usuario = new UsuarioView();
896
                        usuario.setSequencialPessoa(converterStringParaLong(sequencialUsuarioEmissao));
897
                        return usuario;
898
                }
899
                return null;
900
        }
901
 
902
        private String gerarMensagemRelatorio(JasperPrint relatorioGerado) {
903
                return extrairTextoDoJasperPrint(relatorioGerado);
904
        }
905
 
906
        private String extrairTextoDoJasperPrint(final JasperPrint relatorio) {
907
                return VerificadorLancamentoException.verificarMensagemLancamentoException(new Command() {
908
                        @Override
909
                        public String execute() throws Exception {
910
                                byte[] bytePdf = JasperExportManager.exportReportToPdf(relatorio);
911
                                PdfReader pfdReader = new PdfReader(bytePdf);
912
 
913
                                StringBuilder retorno = new StringBuilder("");
914
                                for (int i = 1; i <= pfdReader.getNumberOfPages(); i++) {
915
                                        retorno.append(PdfTextExtractor.getTextFromPage(new PdfReader(bytePdf), i));
916
                                }
917
 
918
                                return retorno.toString();
919
                        }
920
                });
921
        }
922
 
923
        private String ajustarMensagem(String mensagemParaRetorno) {
924
                return mensagemParaRetorno
925
                .replace("MES10", "Outubro").replace("MES11", "Novembro").replace("MES12", "Dezembro")
926
                .replace("MES1", "Janeiro").replace("MES2", "Fevereiro").replace("MES3", "Março")
927
                .replace("MES4", "Abril").replace("MES5", "Maio").replace("MES6", "Junho")
928
                .replace("MES7", "Julho").replace("MES8", "Agosto").replace("MES9", "Setembro")
929
                .replace("null", "0");
930
        }
931
 
932
        private ServidorAvaliacao criarServidorAvaliacao(String sequencialDadoFuncionalServidor, String anoCronograma){
933
                ServidorDadoFuncionalView servidorDadoFuncional = new ServidorDadoFuncionalViewBuilder().comSequencial(sequencialDadoFuncionalServidor).build();
934
                Cronograma cronograma = new CronogramaBuilder().comNumeroAno(anoCronograma).build();
935
                return new ServidorAvaliacaoBuilder()
936
                           .comCronograma(cronograma)
937
                           .comDadoFuncional(servidorDadoFuncional)
938
                           .build();
939
        }
940
 
941
        private ServidorAvaliacao criarServidorAvaliacao(ServidorDadoFuncionalView servidorDadoFuncional, String anoCronograma){
942
                Cronograma cronograma = new CronogramaBuilder().comNumeroAno(anoCronograma).build();
943
                return new ServidorAvaliacaoBuilder()
944
                                   .comCronograma(cronograma)
945
                                   .comDadoFuncional(servidorDadoFuncional)
946
                                   .build();
947
        }
948
 
949
        private List<ServidorAvaliacao> criarListaServidorAvaliacao(String sequencialServidor, String anoCronograma) {
950
                List<ServidorDadoFuncionalView> listaServidorDadoFuncional = cenarioTestHelper.consultarDadosFuncionais(sequencialServidor);
951
                final List<ServidorAvaliacao> listaServidorAvaliacao = new ArrayList<ServidorAvaliacao>();
952
                for (ServidorDadoFuncionalView servidorDadoFuncional : listaServidorDadoFuncional) {
953
                        listaServidorAvaliacao.add(criarServidorAvaliacao(servidorDadoFuncional, anoCronograma));
954
                }
955
                return listaServidorAvaliacao;
956
        }
957
 
958
        private void adicionarRestricaoMatriculaDadoFuncionalCasoSejaInformado(String numeroMatriculaServidor, List<Restricoes> restricoes) {
959
                if(VerificadorUtil.naoEstaNuloOuVazio(numeroMatriculaServidor)){
960
                        restricoes.add(Restricoes.igualComAlias("sd", "numeroMatricula", valueLong(numeroMatriculaServidor)));
961
                }
962
        }
963
 
964
        private void adicionarRestricaoNomeServidorCasoSejaInformado(String nomeServidor, List<Restricoes> restricoes) {
965
                if(VerificadorUtil.naoEstaNuloOuVazio(nomeServidor)){
966
                        restricoes.add(Restricoes.likeComAlias("sd", "servidorView.nome", nomeServidor));
967
                }
968
        }
969
 
970
        private void adicionarRestricaoUnidadeExercicioCasoSejaInformado(String unidadeExercicio, List<Restricoes> restricoes) {
971
                List<Long> sequencialUnidadesExercicio = gerarListaSequencialUnidadeExercicio(unidadeExercicio);
972
                if(sequencialUnidadesExercicio.size() == 1){
973
                        restricoes.add(Restricoes.igualComAlias("sd", "unidadeExercicio.sequencial", sequencialUnidadesExercicio.get(0)));
974
                }else{
975
                        restricoes.add(Restricoes.inComAlias("sd", "unidadeExercicio.sequencial", sequencialUnidadesExercicio));
976
                }
977
        }
978
 
979
        private void adicionarRestricaoCronogramaCasoSejaInformado(String anoCronograma, List<Restricoes> restricoes) {
980
                if(VerificadorUtil.naoEstaNuloOuVazio(anoCronograma)){
981
                        restricoes.add(Restricoes.igualComAlias("sv", "cronograma.numeroAno", valueLong(anoCronograma)));
982
                }
983
        }
984
 
985
        private void adicionarRestricaoEfetivoExercicioCasoSejaInformado(String tipoEfetivoExercicio, List<Restricoes> restricoes) {
986
                if(VerificadorUtil.naoEstaNuloOuVazio(tipoEfetivoExercicio)){
987
                        restricoes.add(Restricoes.igualComAlias("sv", "tipoEfetivoExercicio", tipoEfetivoExercicio));
988
                }
989
        }
990
 
991
        private List<Long> gerarListaSequencialUnidadeExercicio(String unidadeExercicio) {
992
                List<Long> sequencialUnidadesExercicio = new ArrayList<Long>();
993
                if(VerificadorUtil.naoEstaNulo(unidadeExercicio)){
994
                        String[] sequencias = unidadeExercicio.split(";");
995
                        for (String valor : sequencias) {
996
                                sequencialUnidadesExercicio.add(valueLong(valor));
997
                        }
998
                }
999
                return sequencialUnidadesExercicio;
1000
        }
1001
 
1002
        private PessoaFisicaView criarAvaliador(String sequencialPessoaAvaliador) {
1003
                PessoaFisicaView avaliador = null;
1004
                if(VerificadorUtil.naoEstaNuloOuVazio(sequencialPessoaAvaliador)){
1005
                        avaliador = new PessoaFisicaViewBuilder()
1006
                                                        .comSequencialPessoa(sequencialPessoaAvaliador)
1007
                                                        .build();
1008
                }
1009
                return avaliador;
1010
        }
1011
 
1012
        private UnidadeView criarUnidade(String sequencialUnidade) {
1013
                UnidadeView unidade = null;
1014
                if(VerificadorUtil.naoEstaNuloOuVazio(sequencialUnidade)){
1015
                        unidade = new UnidadeViewBuilder()
1016
                                                  .comSequencial(sequencialUnidade)
1017
                                                  .build();
1018
                }
1019
                return unidade;
1020
        }
1021
 
1022
        private Cronograma criarCronograma(String anoCronograma) {
1023
                Cronograma cronograma = null;
1024
                if(VerificadorUtil.naoEstaNuloOuVazio(anoCronograma)){
1025
                        cronograma = new CronogramaBuilder().comNumeroAno(anoCronograma).build();
1026
                }
1027
                return cronograma;
1028
        }
1029
 
1030
        private ServidorAvaliacao gerarServidorAvaliacao(String sequencialDadoFuncional, String anoCronograma) {
1031
                Cronograma cronograma = new CronogramaBuilder()
1032
                                                                        .comNumeroAno(anoCronograma)
1033
                                                                        .build();
1034
                ServidorDadoFuncionalView dadoFuncional = new ServidorDadoFuncionalViewBuilder()
1035
                                                                                                          .comSequencial(sequencialDadoFuncional)
1036
                                                                                                          .build();
1037
                return new ServidorAvaliacaoBuilder()
1038
                                   .comCronograma(cronograma)
1039
                                   .comDadoFuncional(dadoFuncional)
1040
                                   .build();
1041
        }
1042
 
1043
        private List<RevisaoAvaliacaoDesempenho> criarListaRevisaoAvaliacaoDesempenho(String questoesDesempenho) {
1044
                List<RevisaoAvaliacaoDesempenho> revisoes = new ArrayList<RevisaoAvaliacaoDesempenho>();
1045
                String[] revisaoStringArray = {};
1046
                if(questoesDesempenho != null) {
1047
                        revisaoStringArray = questoesDesempenho.split(";");
1048
                }
1049
                for (String revisaoString : revisaoStringArray) {
1050
                        String[] camposRevisao = revisaoString.split(",");
1051
                        String sequencialAvaliacaoDesempenho = camposRevisao[0].trim();
1052
                        String solicitacao = null;
1053
                        String sequencialRevisaoAvaliacao = null;
1054
                        String resposta = null;
1055
 
1056
                        try {solicitacao = camposRevisao[1].trim();} catch (Exception e) {}
1057
                        try {sequencialRevisaoAvaliacao = camposRevisao[2].trim();} catch (Exception e) {}
1058
                        try {resposta = camposRevisao[3].trim();} catch (Exception e) {}
1059
 
1060
                        RevisaoAvaliacao revisaoAvaliacao = new RevisaoAvaliacaoBuilder().comSequencial(sequencialRevisaoAvaliacao).build();  
1061
                        AvaliacaoDesempenho  avaliacaoDesempenho = new AvaliacaoDesempenhoBuilder().comSequencial(sequencialAvaliacaoDesempenho).build();
1062
 
1063
                        RevisaoAvaliacaoDesempenhoId revisaoAvaliacaoDesempenhoId = new RevisaoAvaliacaoDesempenhoId();
1064
                        revisaoAvaliacaoDesempenhoId.setSequencialAvaliacaoDesempenho(avaliacaoDesempenho.getSequencial());
1065
                        revisaoAvaliacaoDesempenhoId.setSequencialRevisaoAvaliacaoDesempenho(revisaoAvaliacao.getSequencial());
1066
 
1067
                        RevisaoAvaliacaoDesempenho revisaoAvaliacaoDesempenho = new RevisaoAvaliacaoDesempenhoBuilder()
1068
                                .comAvaliacaoDesemepnho(avaliacaoDesempenho)
1069
                                .comRevisaoAvaliacao(revisaoAvaliacao)
1070
                                .comSolicitacao(solicitacao)
1071
                                .comResposta(resposta)
1072
                                .comRevisaoAvaliacaoDesempenhoId(revisaoAvaliacaoDesempenhoId)
1073
                                .build();
1074
 
1075
                        revisoes.add(revisaoAvaliacaoDesempenho);
1076
                }
1077
                return revisoes;
1078
        }
1079
 
1080
        private GrupoAvaliacao criarGrupoAvaliacao(String sequencialGrupo, String codigoUnidade, String anoCronograma) {
1081
                GrupoAvaliacao grupoAvaliacao = new GrupoAvaliacaoBuilder()
1082
                                                                                        .comCronograma(anoCronograma)
1083
                                                                                        .comUnidade(codigoUnidade)
1084
                                                                                        .comSequencial(sequencialGrupo)
1085
                                                                                        .build();
1086
                return grupoAvaliacao;
1087
        }
1088
 
1089
        private GrupoAvaliacao criarGrupoAvaliacao(String sequencialGrupo) {
1090
                GrupoAvaliacao grupoAvaliacao = null;
1091
                if(VerificadorUtil.naoEstaNuloOuVazio(sequencialGrupo)){
1092
                        grupoAvaliacao = new GrupoAvaliacaoBuilder()
1093
                                                                 .comSequencial(sequencialGrupo)
1094
                                                                 .build();
1095
                }
1096
                return grupoAvaliacao;
1097
        }
1098
 
1099
        private ServidorDadoFuncionalView criarServidorDadoFuncionalView(String sequencialDadoFuncionalServidor) {
1100
                ServidorDadoFuncionalView servidorDadoFuncional = null;
1101
                if(VerificadorUtil.naoEstaNuloOuVazio(sequencialDadoFuncionalServidor)){
1102
                        servidorDadoFuncional = new ServidorDadoFuncionalViewBuilder().comSequencial(sequencialDadoFuncionalServidor).build();
1103
                }
1104
                return servidorDadoFuncional;
1105
        }
1106
 
1107
        private QualificacaoServidorView[] criarArrayQualificacaoServidorView(String[] listaSequencialQualificacoes) {
1108
                QualificacaoServidorView[] qualificacoesServidor = null;
1109
                if(VerificadorUtil.naoEstaNuloOuVazio(listaSequencialQualificacoes)){
1110
                        qualificacoesServidor = new QualificacaoServidorView[listaSequencialQualificacoes.length];
1111
                        for (int i = 0; i < listaSequencialQualificacoes.length; i++) {
1112
                                qualificacoesServidor[i] = criarQualificacaoServidorView(listaSequencialQualificacoes[i]);
1113
                        }
1114
                }
1115
                return qualificacoesServidor;
1116
        }
1117
 
1118
        private QualificacaoServidorView criarQualificacaoServidorView(String sequencial) {
1119
                QualificacaoServidorView qualificacaoServidor = null;
1120
                if(VerificadorUtil.naoEstaNuloOuVazio(sequencial)){
1121
                        qualificacaoServidor = new QualificacaoServidorBuilder().comSequencial(sequencial).build();
1122
                }
1123
                return qualificacaoServidor;
1124
        }
1125
 
1126
}