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 RevisaoItemEstrutura 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 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, List listaCriteriosCom,
293 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
329 geraXMLFilhosPorOrgao(builder, item, orgao, listaCriteriosCom, listaCriteriosSem, listaSituacoes);
330
331 builder.closeNode("item");
332 }
333
334
335
336
337
338
339
340
341
342
343
344 public void geraXMLFuncoes(XmlBuilder builder, ItemEstruturarevisaoIettrev itemRevisao) throws ECARException{
345 String funcaoAtual = "";
346 try {
347 boolean mostrouIndicadorResultado = false;
348 boolean exibirQuantidadesPrevistas = false;
349
350 Set funcoes = itemRevisao.getEstruturaEttrev().getEstruturaFuncaoEttfs();
351 List funcoesParalela = new ArrayList(funcoes);
352
353 Iterator itFuncoes = funcoes.iterator();
354 while(itFuncoes.hasNext()){
355 EstruturaFuncaoEttf estruturaFuncao = (EstruturaFuncaoEttf) itFuncoes.next();
356 funcaoAtual = estruturaFuncao.getLabelEttf();
357
358 boolean mostraDados = false;
359 if("S".equals(estruturaFuncao.getIndRevisaoEttf())){
360 mostraDados = true;
361 }
362
363 if(mostraDados){
364
365 String funcao = Util.primeiraLetraToUpperCase(estruturaFuncao.getFuncaoFun().getNomeFun());
366 if ("Quantidades_Previstas".equals(funcao)){
367 exibirQuantidadesPrevistas = true;
368 if (!mostrouIndicadorResultado){
369 mostrouIndicadorResultado = true;
370 EstruturaFuncaoEttf funcaoPai = this.buscarFuncaoPai(itemRevisao, Long.valueOf("14"));
371 if(funcaoPai != null){
372 this.geraXMLIndicadores_Resultado(builder, itemRevisao, funcaoPai.getLabelEttf(), exibirQuantidadesPrevistas);
373 }
374 }
375 }
376 else if ("Indicadores_Resultado".equals(funcao)){
377 if(!mostrouIndicadorResultado){
378 mostrouIndicadorResultado = true;
379 exibirQuantidadesPrevistas = this.verificarFuncao("Quantidades_Previstas", funcoesParalela);
380 this.geraXMLIndicadores_Resultado(builder, itemRevisao, estruturaFuncao.getLabelEttf(), exibirQuantidadesPrevistas);
381 }
382 else {
383 continue;
384 }
385 }
386 else if ("Localizacao".equals(funcao)){
387 this.geraXMLLocalizacao(builder, itemRevisao, estruturaFuncao.getLabelEttf());
388 }
389 }
390 }
391
392 } catch(Exception e){
393 this.logger.error(e);
394 throw new ECARException("Erro na criação do Relatório: Funções - " + funcaoAtual);
395 }
396 }
397
398
399
400
401
402
403
404
405
406
407
408 public void geraXMLHierarquia(XmlBuilder builder, ItemEstruturaIett item) throws ECARException{
409 try{
410 builder.addNode("hierarquia");
411 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(null);
412 List pais = itemEstruturaDao.getAscendentes(item);
413 Iterator it = pais.iterator();
414 while(it.hasNext()){
415 ItemEstruturaIett pai = (ItemEstruturaIett) it.next();
416 String nomeNivel = pai.getNomeIett();
417 if(pai.getSiglaIett() != null && !"".equals(pai.getSiglaIett()))
418 nomeNivel = pai.getSiglaIett() + " - " + nomeNivel;
419 builder.addClosedNode("nivel", "estrutura=\"" + builder.normalize(pai.getEstruturaEtt().getNomeEtt()) + ":\" nomeNivel=\"" + builder.normalize(nomeNivel) + "\"");
420
421 this.incrementarTotalizador(pai.getEstruturaEtt().getCodEtt(), pai.getEstruturaEtt().getNomeEtt() + ":");
422 }
423 String nomeNivel = item.getNomeIett();
424 if(item.getSiglaIett() != null && !"".equals(item.getSiglaIett()))
425 nomeNivel = item.getSiglaIett() + " - " + nomeNivel;
426 builder.addClosedNode("nivel", "estrutura=\"" + builder.normalize(item.getEstruturaEtt().getNomeEtt()) + ":\" nomeNivel=\"" + builder.normalize(nomeNivel) + "\"");
427
428 this.incrementarTotalizador(item.getEstruturaEtt().getCodEtt(), item.getEstruturaEtt().getNomeEtt() + ":");
429
430 builder.closeNode("hierarquia");
431 } catch(Exception e){
432 this.logger.error(e);
433 throw new ECARException("Erro na criação do Relatório: Hierarquia de Itens");
434 }
435 }
436
437
438
439
440
441
442
443
444
445
446
447 public void geraXMLDadosBasicos(XmlBuilder builder, ItemEstruturarevisaoIettrev itemRevisao) throws ECARException{
448 try{
449
450 builder.addNode("dadosBasicos");
451
452
453 String situacao = "";
454 if("A".equals(itemRevisao.getSituacaoIettrev()))
455 situacao = "Alteração";
456 else if ("I".equals(itemRevisao.getSituacaoIettrev()))
457 situacao = "Inclusão";
458 else if ("E".equals(itemRevisao.getSituacaoIettrev()))
459 situacao = "Exclusão";
460 else if ("S".equals(itemRevisao.getSituacaoIettrev()))
461 situacao = "Sem Modificação";
462
463 if (situacao != null && !"".equals(situacao.trim()))
464 builder.addClosedNode(descobreTipo("situacaoIettrev"),
465 "label=\"" + builder.normalize("Situação") + ": \"" +
466 " valor=\"" + builder.normalize(situacao) + "\"");
467
468 List dados = estruturaDao.getAtributosEstruturaRevisao(itemRevisao.getEstruturaEttrev());
469 if(dados.size() > 0){
470 Iterator itDados = dados.iterator();
471 while(itDados.hasNext()){
472 ObjetoEstrutura estruturaAtributo = (ObjetoEstrutura) itDados.next();
473
474 if(estruturaAtributo != null){
475 String nomeAtributo = estruturaAtributo.iGetNome();
476 String valor = estruturaAtributo.iGetValor(itemRevisao);
477 String tipoAtributo = descobreTipo(nomeAtributo);
478
479 valor = Util.normalizaCaracterMarcador(valor);
480
481 if(valor != null && !"".equals(valor.trim()))
482 builder.addClosedNode(tipoAtributo, "label=\"" + builder.normalize(estruturaAtributo.iGetLabel()) + ": \"" + " valor=\"" + builder.normalize(valor) + "\"");
483 }
484 }
485 }
486
487 if (itemRevisao.getJustificativaIettrev() != null && !"".equals(itemRevisao.getJustificativaIettrev().trim()))
488 builder.addClosedNode(descobreTipo("justificativaIettrev"),
489 "label=\"" + builder.normalize("Justificativa") + ": \"" +
490 " valor=\"" + builder.normalize(Util.normalizaCaracterMarcador(itemRevisao.getJustificativaIettrev())) + "\"");
491
492 builder.closeNode("dadosBasicos");
493 } catch(Exception e){
494 this.logger.error(e);
495 throw new ECARException("Erro na criação do relatório: Dados Básicos");
496 }
497 }
498
499
500
501
502
503
504
505
506
507
508
509
510 public void geraXMLLocalizacao(XmlBuilder builder, ItemEstruturarevisaoIettrev itemRevisao, String label) throws ECARException{
511 try{
512 if(itemRevisao != null && itemRevisao.getItemEstLocalRevIettlrs() != null
513 && itemRevisao.getItemEstLocalRevIettlrs().size() > 0){
514 boolean first = true;
515
516 List locais = new ArrayList(itemRevisao.getItemEstLocalRevIettlrs());
517 Collections.sort(locais,
518 new Comparator() {
519 public int compare(Object o1, Object o2) {
520 return ( (ItemEstLocalRevIettlr)o1 ).getLocalItemLit().getIdentificacaoLit().compareToIgnoreCase( ( (ItemEstLocalRevIettlr)o2 ).getLocalItemLit().getIdentificacaoLit() );
521 }
522 } );
523
524 Iterator it = locais.iterator();
525 while(it.hasNext()){
526 ItemEstLocalRevIettlr local = (ItemEstLocalRevIettlr) it.next();
527
528 if(first){
529 builder.addNode("localizacao", "label=\"" + builder.normalize(label) + "\" abrangencia=\"" + builder.normalize(local.getLocalItemLit().getLocalGrupoLgp().getIdentificacaoLgp()) + "\"");
530 first = false;
531 }
532 builder.addAndCloseNode("local", builder.normalize(Pagina.trocaNull(local.getLocalItemLit().getIdentificacaoLit())));
533 }
534 if(locais != null && locais.size() > 0)
535 builder.closeNode("localizacao");
536 }
537 } catch (Exception e){
538 this.logger.error(e);
539 throw new ECARException("Erro na criação do relatório: " + label);
540 }
541 }
542
543
544
545
546
547
548
549
550
551
552
553
554
555 public void geraXMLIndicadores_Resultado(XmlBuilder builder, ItemEstruturarevisaoIettrev itemRevisao,
556 String label, boolean mostrarQuantidades) throws ECARException{
557 try{
558 List indicadores = new ArrayList(itemRevisao.getIettIndResulRevIettrrs());
559 if(indicadores != null && indicadores.size() > 0){
560 builder.addNode("indicadoresResultado", "label=\"" + label + "\"");
561 Iterator itIndicadores = indicadores.iterator();
562 while(itIndicadores.hasNext()){
563 IettIndResulRevIettrr indicador = (IettIndResulRevIettrr) itIndicadores.next();
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582 String nome = "não informado";
583 String unidade = "";
584 String projecoes = "";
585 String totalizacoes = "";
586 String valorFinal = "";
587 String strTotal = "";
588
589 if(indicador.getItemEstrtIndResulIettr() != null){
590 nome = indicador.getItemEstrtIndResulIettr().getNomeIettir();
591 unidade = indicador.getItemEstrtIndResulIettr().getUnidMedidaIettr();
592
593 if("S".equals(indicador.getItemEstrtIndResulIettr().getIndProjecaoIettr()))
594 projecoes = "Sim";
595 if("N".equals(indicador.getItemEstrtIndResulIettr().getIndProjecaoIettr()))
596 projecoes = "Não";
597
598 if("S".equals(indicador.getItemEstrtIndResulIettr().getIndAcumulavelIettr())){
599 totalizacoes = "Sim";
600 }
601 else {
602 if("M".equals(indicador.getItemEstrtIndResulIettr().getIndValorFinalIettr()))
603 valorFinal = "Maior";
604 else if("U".equals(indicador.getItemEstrtIndResulIettr().getIndValorFinalIettr()))
605 valorFinal = "Último";
606 else if("N".equals(indicador.getItemEstrtIndResulIettr().getIndValorFinalIettr()))
607 valorFinal = "Não se aplica";
608 }
609
610 strTotal = new IettIndResulRevIettrrDAO(null).getSomaQuantidadePrevista(indicador);
611
612 if("N".equals(indicador.getItemEstrtIndResulIettr().getIndAcumulavelIettr())){
613 totalizacoes = "Não";
614 }
615
616
617 }
618 builder.addNode("indicador", "nome=\"" + builder.normalize(nome) + "\"" +
619
620 " unidade=\"" + builder.normalize(unidade) + "\"" +
621 " totalizacoes=\"" + builder.normalize(totalizacoes) + "\"" +
622 " valorFinal=\"" + builder.normalize(valorFinal) + "\"" +
623 " projecoes=\"" + builder.normalize(projecoes) + "\"" +
624 " total = \"" + builder.normalize(strTotal) + "\"" +
625 "");
626
627 if(mostrarQuantidades){
628 List exercicios = new ArrayList(indicador.getItemEstFisicoRevIettfrs());
629
630 Collections.sort(exercicios,
631 new Comparator() {
632 public int compare(Object o1, Object o2) {
633 return ( (ItemEstFisicoRevIettfr)o1 ).getExercicioExe().getDescricaoExe().compareToIgnoreCase( ( (ItemEstFisicoRevIettfr)o2 ).getExercicioExe().getDescricaoExe() );
634 }
635 } );
636
637 Iterator it = exercicios.iterator();
638 while(it.hasNext()){
639 ItemEstFisicoRevIettfr exercicio = (ItemEstFisicoRevIettfr) it.next();
640 builder.addClosedNode("exercicio", "descricao=\"" + builder.normalize(Pagina.trocaNull(exercicio.getExercicioExe().getDescricaoExe())) + "\" quantidade=\"" + Pagina.trocaNullNumeroSemDecimal(exercicio.getQtdPrevistaIettfr().toString()) + "\"");
641 }
642 }
643 builder.closeNode("indicador");
644 }
645 builder.closeNode("indicadoresResultado");
646 }
647 } catch(Exception e){
648 this.logger.error(e);
649 throw new ECARException("Erro na criação do relatório: " + label);
650 }
651 }
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668 public void geraXMLFilhosPorOrgao(XmlBuilder builder, ItemEstruturaIett item, String orgao,
669 List listaCriteriosCom, List listaCriteriosSem, List listaSituacoes) throws ECARException{
670 try{
671 UsuarioUsu usuarioLogado = seguranca.getUsuario();
672 Set gruposUsuario = seguranca.getGruposAcesso();
673
674
675 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(null);
676 List filhos = new ArrayList();
677
678 if(!imprimirEstrutura){
679 filhos.addAll(itemEstruturaDao.getDescendentesComPermissoesOrdenado(item, usuarioLogado, gruposUsuario));
680 }
681 else {
682 filhos.addAll(itemEstruturaDao.getDescendentesComPermissoesOrdenadoByEstrutura(estruturaEscolhida, codIettPai, usuarioLogado, gruposUsuario));
683 }
684
685 List itensTemp = new ArrayList(itemEstruturaDao.filtrarRelatorioItemEstrutura(filhos, orgaoResponsavel.getCodOrg(), listaCriteriosCom, listaCriteriosSem, listaSituacoes, "S", "N"));
686
687 filhos.clear();
688
689 filhos.addAll(itensTemp);
690
691 Iterator it;
692 if(!imprimirEstrutura){
693
694 it = filhos.iterator();
695 while(it.hasNext()) {
696 ItemEstruturaIett iett = (ItemEstruturaIett) it.next();
697
698 if(iett.getNivelIett().intValue() <= item.getNivelIett().intValue()) {
699 it.remove();
700 }
701 }
702 }
703
704
705 itensTemp = new ArrayList(filhos);
706 filhos.clear();
707
708
709 List atributosListagem = new ArrayList(itemEstruturaDao.getItensOrdenados(itensTemp, null));
710 Iterator itAtrList = atributosListagem.iterator();
711 while(itAtrList.hasNext()){
712 AtributoEstruturaListagemItens atList = (AtributoEstruturaListagemItens) itAtrList.next();
713 filhos.add(atList.getItem());
714 }
715
716
717 if(atributosListagem != null && atributosListagem.size() > 0){
718
719 it = atributosListagem.iterator();
720 while(it.hasNext()){
721
722
723 AtributoEstruturaListagemItens atbList = (AtributoEstruturaListagemItens) it.next();
724 ItemEstruturaIett itemFilho = atbList.getItem();
725
726 String nomeNivelItem = builder.normalize(itemFilho.getEstruturaEtt().getNomeEtt()) + ": ";
727 String nomeItem = " ";
728 String itemSelecionado = "S";
729
730
731
732
733
734
735
736 nomeItem = " " + ("".equals(atbList.getDescricao().trim()) ? itemFilho.getNomeIett() : atbList.getDescricao());
737
738 if (!itensMarcados.contains(itemFilho.getCodIett().toString()))
739 itemSelecionado = "N";
740
741 builder.addNode("filho", "nomeNivel=\"" + builder.normalize(nomeNivelItem) + "\" nome=\"" + nomeItem + "\" " +
742 " nivel=\"" + itemFilho.getNivelIett().intValue() + "\"" +
743 " itemSelecionado=\"" + builder.normalize(itemSelecionado) + "\"");
744
745 builder.closeNode("filho");
746
747 this.incrementarTotalizador(itemFilho.getEstruturaEtt().getCodEtt(), nomeNivelItem);
748
749 boolean mostrarDados = false;
750
751 if("".equals(orgao) || orgao == null){
752 mostrarDados = true;
753 }
754
755 else if (orgao != null && itemFilho.getOrgaoOrgByCodOrgaoResponsavel2Iett() != null && orgao.equals(itemFilho.getOrgaoOrgByCodOrgaoResponsavel2Iett().getCodOrg().toString())){
756 mostrarDados = true;
757 }
758
759 if (!itensMarcados.contains(itemFilho.getCodIett().toString())){
760 mostrarDados = false;
761 }
762
763 if(mostrarDados){
764
765 List revisoes = itemEstruturaDao.getItemEstruturaRevisaoIettrevOrderByData(itemFilho.getCodIett());
766
767 if(revisoes != null && revisoes.size() > 0){
768 Iterator itItemRevisao = revisoes.iterator();
769 while(itItemRevisao.hasNext()){
770 ItemEstruturarevisaoIettrev itemRevisao = (ItemEstruturarevisaoIettrev) itItemRevisao.next();
771 geraXMLDadosBasicos(builder, itemRevisao);
772 geraXMLFuncoes(builder, itemRevisao);
773 }
774 }
775 }
776 }
777 }
778 } catch(Exception e){
779 this.logger.error(e);
780 throw new ECARException("Erro na criação do relatório: Listagem de Itens Filho");
781 }
782 }
783
784
785
786
787
788
789
790
791
792
793 public void geraXMLTotalizador(XmlBuilder builder) throws ECARException{
794 try{
795 int total = 0;
796 builder.addNode("totalizadores");
797 Iterator itTotalizadores = totalizadores.iterator();
798 while(itTotalizadores.hasNext()){
799 TotalizadorRelatorios tr = (TotalizadorRelatorios) itTotalizadores.next();
800 String nome = tr.getEstrutura();
801 String valor = "" + tr.getTotal();
802 total += tr.getTotal();
803 builder.addClosedNode("totalizador",
804 "nome=\"" + builder.normalize(nome) + "\"" +
805 " valor=\"" + builder.normalize(valor) + "\"");
806 }
807 builder.addClosedNode("total",
808 "nome=\"Total:\"" +
809 " valor=\"" + builder.normalize(String.valueOf(total)) + "\"");
810 builder.closeNode("totalizadores");
811 } catch(Exception e){
812 this.logger.error(e);
813 throw new ECARException("Erro na criação do relatório: Totalizadores");
814 }
815 }
816
817
818
819
820
821
822
823
824
825
826 private String descobreTipo(String nomeAtb) {
827
828 if("objetivoGeralIett".equals(nomeAtb)
829 || "objetivoEspecificoIett".equals(nomeAtb)
830 || "beneficiosIett".equals(nomeAtb)
831 || "descricaoIett".equals(nomeAtb)
832 || "descricaoR1".equals(nomeAtb)
833 || "descricaoR2".equals(nomeAtb)
834 || "descricaoR3".equals(nomeAtb)
835 || "descricaoR4".equals(nomeAtb)
836 || "descricaoR5".equals(nomeAtb)
837 )
838 return "atributo2";
839 else
840 return "atributo1";
841 }
842
843
844
845
846
847
848
849
850
851 public String getXslFileName() {
852 return "revisaoEstrutura.xsl";
853 }
854
855
856
857
858
859
860
861
862
863
864
865 public String getErrorPage(HttpServletRequest request, String mensagem){
866 String errorPage = "frm_rel.jsp?codIett=" + Pagina.getParamStr(request, "codIett") + "&msgOperacao=" + mensagem + "&codAba="+Pagina.getParamStr(request, "codAba");
867 return errorPage;
868 }
869
870
871
872
873
874
875
876
877
878
879
880
881 private EstruturaFuncaoEttf buscarFuncaoPai(ItemEstruturarevisaoIettrev item, Long codigo) throws ECARException {
882 EstruturaFuncaoEttfPK chave = new EstruturaFuncaoEttfPK();
883 chave.setCodEtt(item.getEstruturaEttrev().getCodEtt());
884 chave.setCodFun(codigo);
885 EstruturaFuncaoEttf funcaoPai = (EstruturaFuncaoEttf) this.estruturaFuncaoDao.buscar(EstruturaFuncaoEttf.class, chave);
886
887 return funcaoPai;
888 }
889
890
891
892
893
894
895
896
897
898
899
900 private boolean verificarFuncao(String funcao, List funcoes){
901 Iterator itFuncoes = funcoes.iterator();
902 boolean retorno = false;
903 while(itFuncoes.hasNext()){
904 EstruturaFuncaoEttf funcaoParalela = (EstruturaFuncaoEttf) itFuncoes.next();
905 if(funcao.equals(funcaoParalela.getFuncaoFun().getNomeFun())){
906 if("S".equals(funcaoParalela.getIndRevisaoEttf())){
907 retorno = true;
908 break;
909 }
910 }
911 }
912 return retorno;
913 }
914
915
916
917
918
919
920
921
922
923
924 private void incrementarTotalizador(Long idEstrutura, String nomeEstrutura){
925 if(!idsEstrutura.contains(idEstrutura)){
926 TotalizadorRelatorios totalizador = new TotalizadorRelatorios();
927 totalizador.setId(idEstrutura);
928 totalizador.setEstrutura(nomeEstrutura);
929 totalizador.setTotal(1);
930
931 idsEstrutura.add(idEstrutura);
932 totalizadores.add(totalizador);
933 }
934 else {
935 Iterator itTotalizadores = totalizadores.iterator();
936 while(itTotalizadores.hasNext()){
937 TotalizadorRelatorios totalizador = (TotalizadorRelatorios) itTotalizadores.next();
938
939 if(idEstrutura.equals(totalizador.getId())){
940 totalizador.incrementeTotal();
941 break;
942 }
943 }
944 }
945 }
946 }