1
2
3
4
5 package ecar.servlet.relatorio;
6
7 import java.util.ArrayList;
8 import java.util.Collections;
9 import java.util.Comparator;
10 import java.util.Date;
11 import java.util.Iterator;
12 import java.util.List;
13 import java.util.Set;
14
15 import javax.servlet.http.HttpServletRequest;
16
17 import comum.database.Dao;
18 import comum.util.Data;
19 import comum.util.Pagina;
20 import comum.util.Util;
21 import comum.util.XmlBuilder;
22
23 import ecar.bean.AtributoEstruturaListagemItens;
24 import ecar.bean.TotalizadorRelatorios;
25 import ecar.dao.ConfiguracaoDao;
26 import ecar.dao.EstruturaDao;
27 import ecar.dao.EstruturaFuncaoDao;
28 import ecar.dao.FuncaoDao;
29 import ecar.dao.IettIndResulRevIettrrDAO;
30 import ecar.dao.ItemEstruturaCriterioDao;
31 import ecar.dao.ItemEstruturaDao;
32 import ecar.dao.SituacaoDao;
33 import ecar.exception.ECARException;
34 import ecar.login.SegurancaECAR;
35 import ecar.pojo.ConfiguracaoCfg;
36 import ecar.pojo.CriterioCri;
37 import ecar.pojo.EstruturaEtt;
38 import ecar.pojo.EstruturaFuncaoEttf;
39 import ecar.pojo.EstruturaFuncaoEttfPK;
40 import ecar.pojo.FuncaoFun;
41 import ecar.pojo.IettIndResulRevIettrr;
42 import ecar.pojo.ItemEstFisicoRevIettfr;
43 import ecar.pojo.ItemEstLocalRevIettlr;
44 import ecar.pojo.ItemEstruturaIett;
45 import ecar.pojo.ItemEstruturarevisaoIettrev;
46 import ecar.pojo.ObjetoEstrutura;
47 import ecar.pojo.OrgaoOrg;
48 import ecar.pojo.SituacaoSit;
49 import ecar.pojo.UsuarioUsu;
50
51
52
53
54
55 public class RevisaoItemEstruturaMetasFisicas extends AbstractServletReportXmlXsl {
56
57
58
59
60 private static final long serialVersionUID = 2395457474744685932L;
61 private EstruturaDao estruturaDao;
62 private ItemEstruturaDao itemEstruturaDao;
63 private ItemEstruturaCriterioDao itemCriterioDao;
64 private FuncaoDao funcaoDao;
65 private SituacaoDao situacaoDao;
66 private EstruturaFuncaoDao estruturaFuncaoDao;
67 private SegurancaECAR seguranca = null;
68 private List itensMarcados;
69 private List idsEstrutura;
70 private List totalizadores;
71 private OrgaoOrg orgaoResponsavel;
72 private String orgaoEscolhido = "";
73 private boolean imprimirEstrutura;
74 private String codEttEscolhida;
75 private long codIettPai;
76 private EstruturaEtt estruturaEscolhida;
77
78
79
80
81
82
83
84
85
86
87
88 public StringBuffer getXml(HttpServletRequest request) throws ECARException{
89
90 XmlBuilder builder = new XmlBuilder();
91 estruturaDao = new EstruturaDao(request);
92 itemEstruturaDao = new ItemEstruturaDao(request);
93 itemCriterioDao = new ItemEstruturaCriterioDao(request);
94 estruturaFuncaoDao = new EstruturaFuncaoDao(request);
95 funcaoDao = new FuncaoDao(request);
96 situacaoDao = new SituacaoDao(request);
97 seguranca = (SegurancaECAR)request.getSession().getAttribute("seguranca");
98 itensMarcados = new ArrayList();
99 idsEstrutura = new ArrayList();
100 totalizadores = new ArrayList();
101 orgaoResponsavel = new OrgaoOrg();
102
103 imprimirEstrutura = ("S".equals(Pagina.getParamStr(request, "imprimirEstrutura"))) ? true : false;
104 codEttEscolhida = Pagina.getParamStr(request, "codEttImprimir");
105 codIettPai = Pagina.getParamLong(request, "codIettPaiImprimir");
106
107 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(request);
108 ItemEstruturaIett item = new ItemEstruturaIett();
109
110 if(!imprimirEstrutura){
111 item = (ItemEstruturaIett) itemEstruturaDao.buscar(ItemEstruturaIett.class, Long.valueOf(Pagina.getParamStr(request, "codIett")));
112 }
113 else {
114 estruturaEscolhida = (EstruturaEtt) estruturaDao.buscar(EstruturaEtt.class, Long.valueOf(codEttEscolhida));
115 }
116
117 String datahora = Data.parseDateHour(new Date()).substring(0,16);
118 ConfiguracaoCfg config = new ConfiguracaoDao(null).getConfiguracao();
119 String titulo = config.getTituloSistema();
120 String tituloItens = "";
121 String cabecalho = "Itens de Revisão Das Metas Físicas da Estrutura do " + titulo;
122
123
124
125 String criteriosCom = Pagina.getParamStr(request, "criteriosIncluidosCom");
126 String criteriosSem = Pagina.getParamStr(request, "criteriosIncluidosSem");
127 String[] criteriosParaFiltrarCom = (!"".equals(criteriosCom.trim())) ? criteriosCom.split("\\|") : new String[] {};
128 String[] criteriosParaFiltrarSem = (!"".equals(criteriosSem.trim())) ? criteriosSem.split("\\|") : new String[] {};
129
130 List listaCriteriosCom = new ArrayList();
131 List listaCriteriosSem = new ArrayList();
132
133 for(int i = 0; i < criteriosParaFiltrarCom.length; i++){
134 listaCriteriosCom.add(criteriosParaFiltrarCom[i]);
135 }
136
137 for(int i = 0; i < criteriosParaFiltrarSem.length; i++){
138 listaCriteriosSem.add(criteriosParaFiltrarSem[i]);
139 }
140
141
142 String situacoes = Pagina.getParamStr(request, "situacoesIncluidas");
143 String[] situacoesParaFiltrar = (!"".equals(situacoes.trim())) ? situacoes.split("\\|") : new String[] {};
144
145 List listaSituacoes = new ArrayList();
146
147 for(int i = 0; i < situacoesParaFiltrar.length; i++){
148 listaSituacoes.add(situacoesParaFiltrar[i]);
149 }
150
151
152 Dao dao = new Dao();
153 String orgao = request.getParameter("codOrgaoSelecionado");
154
155 if(!"".equals(orgao) && orgao != null){
156 orgaoResponsavel = (OrgaoOrg) dao.buscar(OrgaoOrg.class, Long.valueOf(orgao));
157 }
158
159 orgaoEscolhido = (orgaoResponsavel.getCodOrg() != null) ? orgaoResponsavel.getSiglaOrg() : "Todos os Órgãos";
160
161 if("T".equals(Pagina.getParamStr(request, "todosCheck"))){
162 tituloItens = "Todos";
163 }
164 else if("M".equals(Pagina.getParamStr(request, "todosCheck"))){
165 tituloItens = "Monitorados";
166 }
167 else if("N".equals(Pagina.getParamStr(request, "todosCheck"))){
168 tituloItens = "Não Monitorados";
169 }
170 else {
171 tituloItens = "Conforme Relação Informada Pelo Usuário";
172 }
173
174 builder.addNode("relatorio",
175 "titulo=\"" + builder.normalize(cabecalho) + "\"" +
176 " datahora=\"" + datahora + "\"");
177
178
179 geraXMLCapa(builder, titulo, tituloItens, orgaoEscolhido, listaCriteriosCom, listaCriteriosSem, listaSituacoes);
180
181 if(!imprimirEstrutura){
182 itensMarcados.add(item.getCodIett().toString());
183 }
184
185 String[] itensMarcadosNaPagina = request.getParameterValues("itemFilho");
186
187 if(itensMarcadosNaPagina != null){
188 for(int i = 0; i < itensMarcadosNaPagina.length; i++){
189 itensMarcados.add(itensMarcadosNaPagina[i]);
190 }
191 }
192
193
194 geraXMLItem(builder, item, orgao, listaCriteriosCom, listaCriteriosSem, listaSituacoes);
195
196 geraXMLTotalizador(builder);
197
198 builder.closeNode("relatorio");
199
200 return builder.toStringBuffer();
201 }
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218 public void geraXMLCapa(XmlBuilder builder, String titulo, String tituloItens, String orgao,
219 List listaCriteriosCom, List listaCriteriosSem, List listaSituacoes) throws ECARException{
220 builder.addNode("capa",
221 "titulo=\"" + builder.normalize(titulo) + "\"" +
222 " tituloItens=\"" + builder.normalize(tituloItens) + "\"" +
223 " orgao=\"" + builder.normalize(orgao) + "\"");
224
225 FuncaoFun criterioFun = funcaoDao.getFuncao(Long.valueOf("6"));
226
227 if(criterioFun != null &&
228 (listaCriteriosCom != null && listaCriteriosCom.size() > 0
229 || listaCriteriosSem != null && listaCriteriosSem.size() > 0)){
230 builder.addNode("filtros", "tipo=\"" + builder.normalize(criterioFun.getLabelPadraoFun()) + "\"" +
231 " estilo=\"CS\"");
232
233 if(listaCriteriosCom != null && listaCriteriosCom.size() > 0){
234 Iterator itCriterios = listaCriteriosCom.iterator();
235 while(itCriterios.hasNext()){
236 String id = (String) itCriterios.next();
237 CriterioCri criterio = (CriterioCri) itemCriterioDao.buscar(CriterioCri.class, Long.valueOf(id));
238
239 if(criterio != null){
240 builder.addClosedNode("filtro", " valor=\"" + builder.normalize(criterio.getDescricaoCri()) + "\" tipo=\"C\"");
241 }
242 }
243 }
244
245 if(listaCriteriosSem != null && listaCriteriosSem.size() > 0){
246 Iterator itCriterios = listaCriteriosSem.iterator();
247 while(itCriterios.hasNext()){
248 String id = (String) itCriterios.next();
249 CriterioCri criterio = (CriterioCri) itemCriterioDao.buscar(CriterioCri.class, Long.valueOf(id));
250
251 if(criterio != null){
252 builder.addClosedNode("filtro", " valor=\"" + builder.normalize(criterio.getDescricaoCri()) + "\" tipo=\"S\"");
253 }
254 }
255 }
256
257 builder.closeNode("filtros");
258 }
259
260 if(listaSituacoes != null && listaSituacoes.size() > 0){
261 builder.addNode("filtros", "tipo=\"" + builder.normalize("Situações") + "\"" +
262 " estilo=\"SI\"");
263
264 Iterator itSituacoes = listaSituacoes.iterator();
265 while(itSituacoes.hasNext()){
266 String id = (String) itSituacoes.next();
267 SituacaoSit situacao = (SituacaoSit) situacaoDao.buscar(SituacaoSit.class, Long.valueOf(id));
268 if(situacao != null){
269 builder.addClosedNode("filtro", " valor=\"" + builder.normalize(situacao.getDescricaoSit()) + "\" tipo=\"N\"");
270 }
271 }
272 builder.closeNode("filtros");
273 }
274
275 builder.closeNode("capa");
276 }
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292 public void geraXMLItem(XmlBuilder builder, ItemEstruturaIett item, String orgao,
293 List listaCriteriosCom, List listaCriteriosSem, List listaSituacoes) throws ECARException{
294 builder.addNode("item");
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328 geraXMLFilhosPorOrgao(builder, item, orgao, listaCriteriosCom, listaCriteriosSem, listaSituacoes);
329
330 builder.closeNode("item");
331 }
332
333
334
335
336
337
338
339
340
341
342
343 public void geraXMLFuncoes(XmlBuilder builder, ItemEstruturarevisaoIettrev itemRevisao) throws ECARException{
344 String funcaoAtual = "";
345 try {
346 boolean mostrouIndicadorResultado = false;
347 boolean exibirQuantidadesPrevistas = false;
348
349 Set funcoes = itemRevisao.getEstruturaEttrev().getEstruturaFuncaoEttfs();
350 List funcoesParalela = new ArrayList(funcoes);
351
352 Iterator itFuncoes = funcoes.iterator();
353 while(itFuncoes.hasNext()){
354 EstruturaFuncaoEttf estruturaFuncao = (EstruturaFuncaoEttf) itFuncoes.next();
355 funcaoAtual = estruturaFuncao.getLabelEttf();
356
357 boolean mostraDados = false;
358 if("S".equals(estruturaFuncao.getIndRevisaoEttf())){
359 mostraDados = true;
360 }
361
362 if(mostraDados){
363
364 String funcao = Util.primeiraLetraToUpperCase(estruturaFuncao.getFuncaoFun().getNomeFun());
365 if ("Quantidades_Previstas".equals(funcao)){
366 exibirQuantidadesPrevistas = true;
367 if (!mostrouIndicadorResultado){
368 mostrouIndicadorResultado = true;
369 EstruturaFuncaoEttf funcaoPai = this.buscarFuncaoPai(itemRevisao, Long.valueOf("14"));
370 if(funcaoPai != null){
371 this.geraXMLIndicadores_Resultado(builder, itemRevisao, funcaoPai.getLabelEttf(), exibirQuantidadesPrevistas);
372 }
373 }
374 }
375 else if ("Indicadores_Resultado".equals(funcao)){
376 if(!mostrouIndicadorResultado){
377 mostrouIndicadorResultado = true;
378 exibirQuantidadesPrevistas = this.verificarFuncao("Quantidades_Previstas", funcoesParalela);
379 this.geraXMLIndicadores_Resultado(builder, itemRevisao, estruturaFuncao.getLabelEttf(), exibirQuantidadesPrevistas);
380 }
381 else {
382 continue;
383 }
384 }
385 else if ("Localizacao".equals(funcao)){
386 this.geraXMLLocalizacao(builder, itemRevisao, estruturaFuncao.getLabelEttf());
387 }
388 }
389 }
390
391 } catch(Exception e){
392 this.logger.error(e);
393 throw new ECARException("Erro na criação do Relatório: Funções - " + funcaoAtual);
394 }
395 }
396
397
398
399
400
401
402
403
404
405
406
407
408
409 public void geraXMLHierarquia(XmlBuilder builder, ItemEstruturaIett item, String quebrarPagina, String orgao) throws ECARException{
410 try{
411 builder.addNode("hierarquia", "quebrarPagina=\"" + builder.normalize(quebrarPagina) + "\" orgaoResponsavel=\"" + builder.normalize(orgao) + "\"");
412 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(null);
413 List pais = itemEstruturaDao.getAscendentes(item);
414 Iterator it = pais.iterator();
415 while(it.hasNext()){
416 ItemEstruturaIett pai = (ItemEstruturaIett) it.next();
417 String nomeNivel = pai.getNomeIett();
418 if(pai.getSiglaIett() != null && !"".equals(pai.getSiglaIett()))
419 nomeNivel = pai.getSiglaIett() + " - " + nomeNivel;
420 builder.addClosedNode("nivel", "estrutura=\"" + builder.normalize(pai.getEstruturaEtt().getNomeEtt()) + ":\" nomeNivel=\"" + builder.normalize(nomeNivel) + "\"");
421
422 this.incrementarTotalizador(pai.getEstruturaEtt().getCodEtt(), pai.getEstruturaEtt().getNomeEtt() + ":");
423 }
424
425 builder.closeNode("hierarquia");
426 } catch(Exception e){
427 this.logger.error(e);
428 throw new ECARException("Erro na criação do Relatório: Hierarquia de Itens");
429 }
430 }
431
432
433
434
435
436
437
438
439
440
441
442 public void geraXMLDadosBasicos(XmlBuilder builder, ItemEstruturarevisaoIettrev itemRevisao) throws ECARException{
443 try{
444
445 builder.addNode("dadosBasicos");
446
447
448 String situacao = "";
449 if("A".equals(itemRevisao.getSituacaoIettrev()))
450 situacao = "Alteração";
451 else if ("I".equals(itemRevisao.getSituacaoIettrev()))
452 situacao = "Inclusão";
453 else if ("E".equals(itemRevisao.getSituacaoIettrev()))
454 situacao = "Exclusão";
455 else if ("S".equals(itemRevisao.getSituacaoIettrev()))
456 situacao = "Sem Modificação";
457
458 if (situacao != null && !"".equals(situacao.trim()))
459 builder.addClosedNode(descobreTipo("situacaoIettrev"),
460 "label=\"" + builder.normalize("Situação") + ": \"" +
461 " valor=\"" + builder.normalize(situacao) + "\"");
462
463 List dados = estruturaDao.getAtributosEstruturaRevisao(itemRevisao.getEstruturaEttrev());
464 if(dados.size() > 0){
465 Iterator itDados = dados.iterator();
466 while(itDados.hasNext()){
467 ObjetoEstrutura estruturaAtributo = (ObjetoEstrutura) itDados.next();
468
469 if(estruturaAtributo != null){
470 String nomeAtributo = estruturaAtributo.iGetNome();
471 String valor = Util.normalizaCaracterMarcador(estruturaAtributo.iGetValor(itemRevisao));
472 String tipoAtributo = descobreTipo(nomeAtributo);
473 if(valor != null && !"".equals(valor.trim()))
474 builder.addClosedNode(tipoAtributo, "label=\"" + builder.normalize(estruturaAtributo.iGetLabel()) + ": \"" + " valor=\"" + builder.normalize(valor) + "\"");
475 }
476 }
477 }
478
479 if (itemRevisao.getJustificativaIettrev() != null && !"".equals(itemRevisao.getJustificativaIettrev().trim()))
480 builder.addClosedNode(descobreTipo("justificativaIettrev"),
481 "label=\"" + builder.normalize("Justificativa") + ": \"" +
482 " valor=\"" + builder.normalize(Util.normalizaCaracterMarcador(itemRevisao.getJustificativaIettrev())) + "\"");
483
484 builder.closeNode("dadosBasicos");
485 } catch(Exception e){
486 this.logger.error(e);
487 throw new ECARException("Erro na criação do relatório: Dados Básicos");
488 }
489 }
490
491
492
493
494
495
496
497
498
499
500
501
502
503 public void geraXMLLocalizacao(XmlBuilder builder, ItemEstruturarevisaoIettrev itemRevisao, String label) throws ECARException{
504 try{
505 if(itemRevisao != null && itemRevisao.getItemEstLocalRevIettlrs() != null
506 && itemRevisao.getItemEstLocalRevIettlrs().size() > 0){
507 boolean first = true;
508
509 List locais = new ArrayList(itemRevisao.getItemEstLocalRevIettlrs());
510 Collections.sort(locais,
511 new Comparator() {
512 public int compare(Object o1, Object o2) {
513 return ( (ItemEstLocalRevIettlr)o1 ).getLocalItemLit().getIdentificacaoLit().compareToIgnoreCase( ( (ItemEstLocalRevIettlr)o2 ).getLocalItemLit().getIdentificacaoLit() );
514 }
515 } );
516
517 Iterator it = locais.iterator();
518 while(it.hasNext()){
519 ItemEstLocalRevIettlr local = (ItemEstLocalRevIettlr) it.next();
520
521 if(first){
522 builder.addNode("localizacao", "label=\"" + builder.normalize(label) + "\" abrangencia=\"" + builder.normalize(local.getLocalItemLit().getLocalGrupoLgp().getIdentificacaoLgp()) + "\"");
523 first = false;
524 }
525 builder.addAndCloseNode("local", builder.normalize(Pagina.trocaNull(local.getLocalItemLit().getIdentificacaoLit())));
526 }
527 if(locais != null && locais.size() > 0)
528 builder.closeNode("localizacao");
529 }
530 } catch (Exception e){
531 this.logger.error(e);
532 throw new ECARException("Erro na criação do relatório: " + label);
533 }
534 }
535
536
537
538
539
540
541
542
543
544
545
546
547
548 public void geraXMLIndicadores_Resultado(XmlBuilder builder, ItemEstruturarevisaoIettrev itemRevisao,
549 String label, boolean mostrarQuantidades) throws ECARException{
550 try{
551 List indicadores = new ArrayList(itemRevisao.getIettIndResulRevIettrrs());
552 if(indicadores != null && indicadores.size() > 0){
553 builder.addNode("indicadoresResultado", "label=\"" + label + "\"");
554 Iterator itIndicadores = indicadores.iterator();
555 while(itIndicadores.hasNext()){
556 IettIndResulRevIettrr indicador = (IettIndResulRevIettrr) itIndicadores.next();
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575 String nome = "não informado";
576 String unidade = "";
577 String projecoes = "";
578 String totalizacoes = "";
579 String valorFinal = "";
580 String strTotal = "";
581
582 if(indicador.getItemEstrtIndResulIettr() != null){
583 nome = indicador.getItemEstrtIndResulIettr().getNomeIettir();
584 unidade = indicador.getItemEstrtIndResulIettr().getUnidMedidaIettr();
585
586 if("S".equals(indicador.getItemEstrtIndResulIettr().getIndProjecaoIettr()))
587 projecoes = "Sim";
588 if("N".equals(indicador.getItemEstrtIndResulIettr().getIndProjecaoIettr()))
589 projecoes = "Não";
590
591 if("S".equals(indicador.getItemEstrtIndResulIettr().getIndAcumulavelIettr())){
592 totalizacoes = "Sim";
593 }
594 else {
595 if("M".equals(indicador.getItemEstrtIndResulIettr().getIndValorFinalIettr()))
596 valorFinal = "Maior";
597 else if("U".equals(indicador.getItemEstrtIndResulIettr().getIndValorFinalIettr()))
598 valorFinal = "Último";
599 else if("N".equals(indicador.getItemEstrtIndResulIettr().getIndValorFinalIettr()))
600 valorFinal = "Não se aplica";
601 }
602
603 strTotal = new IettIndResulRevIettrrDAO(null).getSomaQuantidadePrevista(indicador);
604
605 if("N".equals(indicador.getItemEstrtIndResulIettr().getIndAcumulavelIettr())){
606 totalizacoes = "Não";
607 }
608
609
610 }
611 builder.addNode("indicador", "nome=\"" + builder.normalize(nome) + "\"" +
612
613 " unidade=\"" + builder.normalize(unidade) + "\"" +
614 " totalizacoes=\"" + builder.normalize(totalizacoes) + "\"" +
615 " valorFinal=\"" + builder.normalize(valorFinal) + "\"" +
616 " projecoes=\"" + builder.normalize(projecoes) + "\"" +
617 " total = \"" + builder.normalize(strTotal) + "\"" +
618 "");
619
620 if(mostrarQuantidades){
621 List exercicios = new ArrayList(indicador.getItemEstFisicoRevIettfrs());
622
623 Collections.sort(exercicios,
624 new Comparator() {
625 public int compare(Object o1, Object o2) {
626 return ( (ItemEstFisicoRevIettfr)o1 ).getExercicioExe().getDescricaoExe().compareToIgnoreCase( ( (ItemEstFisicoRevIettfr)o2 ).getExercicioExe().getDescricaoExe() );
627 }
628 } );
629
630 Iterator it = exercicios.iterator();
631 while(it.hasNext()){
632 ItemEstFisicoRevIettfr exercicio = (ItemEstFisicoRevIettfr) it.next();
633 builder.addClosedNode("exercicio", "descricao=\"" + builder.normalize(Pagina.trocaNull(exercicio.getExercicioExe().getDescricaoExe())) + "\" quantidade=\"" + Pagina.trocaNullNumeroSemDecimal(exercicio.getQtdPrevistaIettfr().toString()) + "\"");
634 }
635 }
636 builder.closeNode("indicador");
637 }
638 builder.closeNode("indicadoresResultado");
639 }
640 } catch(Exception e){
641 this.logger.error(e);
642 throw new ECARException("Erro na criação do relatório: " + label);
643 }
644 }
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660 public void geraXMLFilhosPorOrgao(XmlBuilder builder, ItemEstruturaIett item, String orgao,
661 List listaCriteriosCom, List listaCriteriosSem, List listaSituacoes) throws ECARException{
662 try{
663 UsuarioUsu usuarioLogado = seguranca.getUsuario();
664 Set gruposUsuario = seguranca.getGruposAcesso();
665
666
667 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(null);
668 List filhos = new ArrayList();
669
670 if(!imprimirEstrutura){
671 filhos.addAll(itemEstruturaDao.getDescendentesComPermissoesOrdenado(item, usuarioLogado, gruposUsuario));
672 }
673 else {
674 filhos.addAll(itemEstruturaDao.getDescendentesComPermissoesOrdenadoByEstrutura(estruturaEscolhida, codIettPai, usuarioLogado, gruposUsuario));
675 }
676
677 List itensTemp = new ArrayList(itemEstruturaDao.filtrarRelatorioItemEstrutura(filhos, orgaoResponsavel.getCodOrg(), listaCriteriosCom, listaCriteriosSem, listaSituacoes, "S", "N"));
678
679 filhos.clear();
680
681 filhos.addAll(itensTemp);
682
683 Iterator it;
684 if(!imprimirEstrutura){
685
686 it = filhos.iterator();
687 while(it.hasNext()) {
688 ItemEstruturaIett iett = (ItemEstruturaIett) it.next();
689
690 if(iett.getNivelIett().intValue() <= item.getNivelIett().intValue()) {
691 it.remove();
692 }
693 }
694 }
695
696
697 itensTemp = new ArrayList(filhos);
698 filhos.clear();
699
700
701 List atributosListagem = new ArrayList(itemEstruturaDao.getItensOrdenados(itensTemp, null));
702 Iterator itAtrList = atributosListagem.iterator();
703 while(itAtrList.hasNext()){
704 AtributoEstruturaListagemItens atList = (AtributoEstruturaListagemItens) itAtrList.next();
705 filhos.add(atList.getItem());
706 }
707
708
709 if(atributosListagem != null && atributosListagem.size() > 0){
710
711 it = atributosListagem.iterator();
712 boolean primeiraPagina = true;
713 while(it.hasNext()){
714
715
716 AtributoEstruturaListagemItens atbList = (AtributoEstruturaListagemItens) it.next();
717 ItemEstruturaIett itemFilho = atbList.getItem();
718
719 if(itemFilho.getNivelIett().intValue() < 3)
720 continue;
721
722 String nomeNivelItem = builder.normalize(itemFilho.getEstruturaEtt().getNomeEtt()) + ": ";
723 String nomeItem = " ";
724 String itemSelecionado = "S";
725 String quebrarPagina = "N";
726
727 String orgaoResponsavel = "";
728
729
730
731
732
733
734 nomeItem = " " + ("".equals(atbList.getDescricao().trim()) ? itemFilho.getNomeIett() : atbList.getDescricao());
735
736 if (!itensMarcados.contains(itemFilho.getCodIett().toString()))
737 itemSelecionado = "N";
738
739 if(!primeiraPagina && itemFilho.getNivelIett().intValue() == 3){
740 quebrarPagina = "S";
741 }
742 primeiraPagina = false;
743
744 if(itemFilho.getNivelIett().intValue() == 3){
745 if(itemFilho.getOrgaoOrgByCodOrgaoResponsavel1Iett() != null)
746 orgaoResponsavel = itemFilho.getOrgaoOrgByCodOrgaoResponsavel1Iett().getSiglaOrg() + " - " + itemFilho.getOrgaoOrgByCodOrgaoResponsavel1Iett().getDescricaoOrg();
747 geraXMLHierarquia(builder, itemFilho, quebrarPagina, orgaoResponsavel);
748 }
749
750 builder.addNode("filho", "nomeNivel=\"" + builder.normalize(nomeNivelItem) + "\" nome=\"" + nomeItem + "\" " +
751 " nivel=\"" + itemFilho.getNivelIett().intValue() + "\"" +
752 " itemSelecionado=\"" + builder.normalize(itemSelecionado) + "\"");
753
754 builder.closeNode("filho");
755
756 this.incrementarTotalizador(itemFilho.getEstruturaEtt().getCodEtt(), nomeNivelItem);
757
758 boolean mostrarDados = false;
759
760 if("".equals(orgao) || orgao == null){
761 mostrarDados = true;
762 }
763
764 else if (orgao != null && itemFilho.getOrgaoOrgByCodOrgaoResponsavel2Iett() != null && orgao.equals(itemFilho.getOrgaoOrgByCodOrgaoResponsavel2Iett().getCodOrg().toString())){
765 mostrarDados = true;
766 }
767
768 if (!itensMarcados.contains(itemFilho.getCodIett().toString())){
769 mostrarDados = false;
770 }
771
772 if(mostrarDados){
773
774 List revisoes = itemEstruturaDao.getItemEstruturaRevisaoIettrevOrderByData(itemFilho.getCodIett());
775
776 if(revisoes != null && revisoes.size() > 0){
777 Iterator itItemRevisao = revisoes.iterator();
778 while(itItemRevisao.hasNext()){
779 ItemEstruturarevisaoIettrev itemRevisao = (ItemEstruturarevisaoIettrev) itItemRevisao.next();
780 geraXMLDadosBasicos(builder, itemRevisao);
781 geraXMLFuncoes(builder, itemRevisao);
782 }
783 }
784 }
785 }
786 }
787 } catch(Exception e){
788 this.logger.error(e);
789 throw new ECARException("Erro na criação do relatório: Listagem de Itens Filho");
790 }
791 }
792
793
794
795
796
797
798
799
800
801
802 public void geraXMLTotalizador(XmlBuilder builder) throws ECARException{
803 try{
804 int total = 0;
805 builder.addNode("totalizadores");
806 Iterator itTotalizadores = totalizadores.iterator();
807 while(itTotalizadores.hasNext()){
808 TotalizadorRelatorios tr = (TotalizadorRelatorios) itTotalizadores.next();
809 String nome = tr.getEstrutura();
810 String valor = "" + tr.getTotal();
811 total += tr.getTotal();
812 builder.addClosedNode("totalizador",
813 "nome=\"" + builder.normalize(nome) + "\"" +
814 " valor=\"" + builder.normalize(valor) + "\"");
815 }
816 builder.addClosedNode("total",
817 "nome=\"Total:\"" +
818 " valor=\"" + builder.normalize(String.valueOf(total)) + "\"");
819 builder.closeNode("totalizadores");
820 } catch(Exception e){
821 this.logger.error(e);
822 throw new ECARException("Erro na criação do relatório: Totalizadores");
823 }
824 }
825
826
827
828
829
830
831
832
833
834
835 private String descobreTipo(String nomeAtb) {
836
837 if("objetivoGeralIett".equals(nomeAtb)
838 || "objetivoEspecificoIett".equals(nomeAtb)
839 || "beneficiosIett".equals(nomeAtb)
840 || "descricaoIett".equals(nomeAtb)
841 || "descricaoR1".equals(nomeAtb)
842 || "descricaoR2".equals(nomeAtb)
843 || "descricaoR3".equals(nomeAtb)
844 || "descricaoR4".equals(nomeAtb)
845 || "descricaoR5".equals(nomeAtb)
846 )
847 return "atributo2";
848 else
849 return "atributo1";
850 }
851
852
853
854
855
856
857
858
859
860 public String getXslFileName() {
861 return "revisaoEstruturaMetasFisicas.xsl";
862 }
863
864
865
866
867
868
869
870
871
872
873
874 public String getErrorPage(HttpServletRequest request, String mensagem){
875 String errorPage = "frm_rel.jsp?codIett=" + Pagina.getParamStr(request, "codIett") + "&msgOperacao=" + mensagem + "&codAba="+Pagina.getParamStr(request, "codAba");
876 return errorPage;
877 }
878
879
880
881
882
883
884
885
886
887
888
889
890 private EstruturaFuncaoEttf buscarFuncaoPai(ItemEstruturarevisaoIettrev item, Long codigo) throws ECARException {
891 EstruturaFuncaoEttfPK chave = new EstruturaFuncaoEttfPK();
892 chave.setCodEtt(item.getEstruturaEttrev().getCodEtt());
893 chave.setCodFun(codigo);
894 EstruturaFuncaoEttf funcaoPai = (EstruturaFuncaoEttf) this.estruturaFuncaoDao.buscar(EstruturaFuncaoEttf.class, chave);
895
896 return funcaoPai;
897 }
898
899
900
901
902
903
904
905
906
907
908
909 private boolean verificarFuncao(String funcao, List funcoes){
910 Iterator itFuncoes = funcoes.iterator();
911 boolean retorno = false;
912 while(itFuncoes.hasNext()){
913 EstruturaFuncaoEttf funcaoParalela = (EstruturaFuncaoEttf) itFuncoes.next();
914 if(funcao.equals(funcaoParalela.getFuncaoFun().getNomeFun())){
915 if("S".equals(funcaoParalela.getIndRevisaoEttf())){
916 retorno = true;
917 break;
918 }
919 }
920 }
921 return retorno;
922 }
923
924
925
926
927
928
929
930
931
932
933 private void incrementarTotalizador(Long idEstrutura, String nomeEstrutura){
934 if(!idsEstrutura.contains(idEstrutura)){
935 TotalizadorRelatorios totalizador = new TotalizadorRelatorios();
936 totalizador.setId(idEstrutura);
937 totalizador.setEstrutura(nomeEstrutura);
938 totalizador.setTotal(1);
939
940 idsEstrutura.add(idEstrutura);
941 totalizadores.add(totalizador);
942 }
943 else {
944 Iterator itTotalizadores = totalizadores.iterator();
945 while(itTotalizadores.hasNext()){
946 TotalizadorRelatorios totalizador = (TotalizadorRelatorios) itTotalizadores.next();
947
948 if(idEstrutura.equals(totalizador.getId())){
949 totalizador.incrementeTotal();
950 break;
951 }
952 }
953 }
954 }
955 }