1
2
3
4
5 package ecar.servlet.relatorio;
6
7 import java.util.ArrayList;
8 import java.util.Date;
9 import java.util.Iterator;
10 import java.util.List;
11
12 import javax.servlet.http.HttpServletRequest;
13
14 import comum.database.Dao;
15 import comum.util.Data;
16 import comum.util.Pagina;
17 import comum.util.Util;
18 import comum.util.XmlBuilder;
19
20 import ecar.bean.AtributoEstruturaListagemItens;
21 import ecar.bean.TotalizadorRelatorios;
22 import ecar.dao.ConfiguracaoDao;
23 import ecar.dao.EstruturaDao;
24 import ecar.dao.FuncaoDao;
25 import ecar.dao.ItemEstruturaCriterioDao;
26 import ecar.dao.ItemEstruturaDao;
27 import ecar.dao.SituacaoDao;
28 import ecar.exception.ECARException;
29 import ecar.pojo.AtributoLivre;
30 import ecar.pojo.ConfiguracaoCfg;
31 import ecar.pojo.CriterioCri;
32 import ecar.pojo.FuncaoFun;
33 import ecar.pojo.ItemEstruturaIett;
34 import ecar.pojo.ItemEstruturaSisAtributoIettSatb;
35 import ecar.pojo.ObjetoEstrutura;
36 import ecar.pojo.OrgaoOrg;
37 import ecar.pojo.SisAtributoSatb;
38 import ecar.pojo.SituacaoSit;
39
40
41
42
43
44 public class RelacaoItemEstrutura extends AbstractServletReportXmlXsl {
45
46 private static final long serialVersionUID = 2395457474744685932L;
47 private List idsEstrutura;
48 private List totalizadores;
49 private ItemEstruturaCriterioDao itemCriterioDao;
50 private SituacaoDao situacaoDao;
51 private FuncaoDao funcaoDao;
52 private List itensSelecionados;
53 private boolean imprimirEstrutura;
54
55
56
57
58 private static final int COMBOBOX = 1;
59 private static final int CHECKBOX = 2;
60 private static final int LISTBOX = 3;
61 private static final int RADIO_BUTTON = 4;
62 private static final int TEXT = 5;
63 private static final int IMAGEM = 6;
64 private static final int MULTITEXTO = 7;
65 private static final int VALIDACAO = 8;
66 private static final int MULTIPLO = 9;
67 private static final int TEXTAREA = 10;
68
69
70
71
72
73
74
75
76
77
78
79 public StringBuffer getXml(HttpServletRequest request) throws ECARException{
80
81 Dao dao = new Dao();
82 idsEstrutura = new ArrayList();
83 totalizadores = new ArrayList();
84 itemCriterioDao = new ItemEstruturaCriterioDao(request);
85 funcaoDao = new FuncaoDao(request);
86 situacaoDao = new SituacaoDao(request);
87 itensSelecionados = new ArrayList();
88
89
90 XmlBuilder builder = new XmlBuilder();
91
92 imprimirEstrutura = ("S".equals(Pagina.getParamStr(request, "imprimirEstrutura"))) ? true : false;
93
94 String datahora = Data.parseDateHour(new Date()).substring(0,16);
95 String orgao = request.getParameter("codOrgaoSelecionado");
96
97 ConfiguracaoCfg config = new ConfiguracaoDao(null).getConfiguracao();
98 String titulo = config.getTituloSistema();
99 String tituloItens = "";
100 String cabecalho = "Relação dos Itens da Estrutura do " + titulo;
101 String indTipoRelatorio = Pagina.getParamStr(request, "indTipoRelatorio");
102
103
104 String criteriosCom = Pagina.getParamStr(request, "criteriosIncluidosCom");
105 String criteriosSem = Pagina.getParamStr(request, "criteriosIncluidosSem");
106 String[] criteriosParaFiltrarCom = (!"".equals(criteriosCom.trim())) ? criteriosCom.split("\\|") : new String[] {};
107 String[] criteriosParaFiltrarSem = (!"".equals(criteriosSem.trim())) ? criteriosSem.split("\\|") : new String[] {};
108
109 List listaCriteriosCom = new ArrayList();
110 List listaCriteriosSem = new ArrayList();
111
112 for(int i = 0; i < criteriosParaFiltrarCom.length; i++){
113 listaCriteriosCom.add(criteriosParaFiltrarCom[i]);
114 }
115
116 for(int i = 0; i < criteriosParaFiltrarSem.length; i++){
117 listaCriteriosSem.add(criteriosParaFiltrarSem[i]);
118 }
119
120
121 String situacoes = Pagina.getParamStr(request, "situacoesIncluidas");
122 String[] situacoesParaFiltrar = (!"".equals(situacoes.trim())) ? situacoes.split("\\|") : new String[] {};
123
124 List listaSituacoes = new ArrayList();
125
126 for(int i = 0; i < situacoesParaFiltrar.length; i++){
127 listaSituacoes.add(situacoesParaFiltrar[i]);
128 }
129
130
131 OrgaoOrg orgaoResponsavel = new OrgaoOrg();
132 if(!"".equals(orgao) && orgao != null){
133 orgaoResponsavel = (OrgaoOrg) dao.buscar(OrgaoOrg.class, Long.valueOf(orgao));
134 }
135
136 String orgaoEscolhido = (orgaoResponsavel.getCodOrg() != null) ? orgaoResponsavel.getSiglaOrg() : "Todos os Órgãos";
137
138 if("T".equals(Pagina.getParamStr(request, "todosCheck"))){
139 tituloItens = "Todos";
140 }
141 else if("M".equals(Pagina.getParamStr(request, "todosCheck"))){
142 tituloItens = "Monitorados";
143 }
144 else if("N".equals(Pagina.getParamStr(request, "todosCheck"))){
145 tituloItens = "Não Monitorados";
146 }
147 else {
148 tituloItens = "Conforme Relação Informada Pelo Usuário";
149 }
150
151 ItemEstruturaDao itemEstruturaDao = new ItemEstruturaDao(request);
152 ItemEstruturaIett item = new ItemEstruturaIett();
153
154 if(!imprimirEstrutura){
155 item = (ItemEstruturaIett) itemEstruturaDao.buscar(ItemEstruturaIett.class, Long.valueOf(Pagina.getParamStr(request, "codIett")));
156 }
157
158 builder.addNode("relatorio",
159 "titulo=\"" + builder.normalize(cabecalho) + "\"" +
160 " datahora=\"" + datahora + "\"");
161
162 geraXMLCapa(builder, titulo, tituloItens, orgaoEscolhido, listaCriteriosCom, listaCriteriosSem, listaSituacoes);
163
164 builder.addNode("item");
165 String[] filhos = request.getParameterValues("itemFilho");
166 if(filhos != null){
167 for(int i=0; i < filhos.length;i++){
168 itensSelecionados.add((ItemEstruturaIett) itemEstruturaDao.buscar(ItemEstruturaIett.class, Long.valueOf(filhos[i])));
169 }
170 }
171
172 List listaFilhos = new ArrayList();
173
174 if(!imprimirEstrutura){
175
176 listaFilhos.addAll(itensSelecionados);
177 }
178 else {
179
180
181
182
183
184
185 listaFilhos.addAll(itensSelecionados);
186 }
187
188 List listaFilhosOrdenada = new ArrayList(itemEstruturaDao.getItensOrdenados(listaFilhos, null));
189
190
191 Iterator itFilhos = listaFilhosOrdenada.iterator();
192 while(itFilhos.hasNext()){
193 AtributoEstruturaListagemItens atbList = (AtributoEstruturaListagemItens) itFilhos.next();
194
195 ItemEstruturaIett filho = atbList.getItem();
196 String nomeDinamico = "".equals(atbList.getDescricao().trim()) ? filho.getNomeIett() : atbList.getDescricao();
197 geraXMLEstrutura(builder, atbList.getItem(), nomeDinamico, indTipoRelatorio, orgao);
198 }
199
200 builder.closeNode("item");
201
202 this.geraXMLTotalizador(builder);
203
204 builder.closeNode("relatorio");
205 return builder.toStringBuffer();
206 }
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223 public void geraXMLCapa(XmlBuilder builder, String titulo, String tituloItens, String orgao,
224 List listaCriteriosCom, List listaCriteriosSem, List listaSituacoes) throws ECARException{
225 builder.addNode("capa",
226 "titulo=\"" + builder.normalize(titulo) + "\"" +
227 " tituloItens=\"" + builder.normalize(tituloItens) + "\"" +
228 " orgao=\"" + builder.normalize(orgao) + "\"");
229
230 FuncaoFun criterioFun = funcaoDao.getFuncao(Long.valueOf("6"));
231
232 if(criterioFun != null &&
233 (listaCriteriosCom != null && listaCriteriosCom.size() > 0
234 || listaCriteriosSem != null && listaCriteriosSem.size() > 0)){
235 builder.addNode("filtros", "tipo=\"" + builder.normalize(criterioFun.getLabelPadraoFun()) + "\"" +
236 " estilo=\"CS\"");
237
238 if(listaCriteriosCom != null && listaCriteriosCom.size() > 0){
239 Iterator itCriterios = listaCriteriosCom.iterator();
240 while(itCriterios.hasNext()){
241 String id = (String) itCriterios.next();
242 CriterioCri criterio = (CriterioCri) itemCriterioDao.buscar(CriterioCri.class, Long.valueOf(id));
243
244 if(criterio != null){
245 builder.addClosedNode("filtro", " valor=\"" + builder.normalize(criterio.getDescricaoCri()) + "\" tipo=\"C\"");
246 }
247 }
248 }
249
250 if(listaCriteriosSem != null && listaCriteriosSem.size() > 0){
251 Iterator itCriterios = listaCriteriosSem.iterator();
252 while(itCriterios.hasNext()){
253 String id = (String) itCriterios.next();
254 CriterioCri criterio = (CriterioCri) itemCriterioDao.buscar(CriterioCri.class, Long.valueOf(id));
255
256 if(criterio != null){
257 builder.addClosedNode("filtro", " valor=\"" + builder.normalize(criterio.getDescricaoCri()) + "\" tipo=\"S\"");
258 }
259 }
260 }
261
262 builder.closeNode("filtros");
263 }
264
265 if(listaSituacoes != null && listaSituacoes.size() > 0){
266 builder.addNode("filtros", "tipo=\"" + builder.normalize("Situações") + "\"" +
267 " estilo=\"SI\"");
268
269 Iterator itSituacoes = listaSituacoes.iterator();
270 while(itSituacoes.hasNext()){
271 String id = (String) itSituacoes.next();
272 SituacaoSit situacao = (SituacaoSit) situacaoDao.buscar(SituacaoSit.class, Long.valueOf(id));
273 if(situacao != null){
274 builder.addClosedNode("filtro", " valor=\"" + builder.normalize(situacao.getDescricaoSit()) + "\" tipo=\"N\"");
275 }
276 }
277 builder.closeNode("filtros");
278 }
279
280 builder.closeNode("capa");
281 }
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296 public void geraXMLEstrutura(XmlBuilder builder, ItemEstruturaIett item, String nomeDinamico,
297 String tipoRelatorio, String orgao) throws ECARException{
298
299 String itemSelecionado = "S";
300
301 if(!itensSelecionados.contains(item)){
302 itemSelecionado = "N";
303 }
304
305 builder.addNode("estrutura", "nome=\"" + builder.normalize(item.getEstruturaEtt().getNomeEtt()) + "\" " +
306
307 " descricao=\"" + builder.normalize(Util.normalizaCaracterMarcador(nomeDinamico)) + "\" " +
308 " nivel=\"" + builder.normalize(item.getNivelIett().toString()) + "\"" +
309 " itemSelecionado=\"" + builder.normalize(itemSelecionado) + "\"");
310
311 this.incrementarTotalizador(item.getEstruturaEtt().getCodEtt(), item.getEstruturaEtt().getNomeEtt());
312
313 boolean mostrarDados = false;
314
315 if("".equals(orgao) || orgao == null){
316 mostrarDados = true;
317 }
318 else if (orgao != null && item.getOrgaoOrgByCodOrgaoResponsavel1Iett() != null && orgao.equals(item.getOrgaoOrgByCodOrgaoResponsavel1Iett().getCodOrg())){
319 mostrarDados = true;
320 }
321
322 if (!itensSelecionados.contains(item)){
323 mostrarDados = false;
324 }
325
326 if(mostrarDados){
327 List dados = new EstruturaDao(null).getAtributosEstruturaRelatorio(item.getEstruturaEtt(), tipoRelatorio);
328 if(dados.size() > 0){
329 builder.addNode("campos");
330 Iterator itDados = dados.iterator();
331 while(itDados.hasNext()){
332 ObjetoEstrutura estruturaAtributo = (ObjetoEstrutura) itDados.next();
333
334
335 String valor = "";
336
337 if(estruturaAtributo.iGetGrupoAtributosLivres() != null){
338
339 if(item.getItemEstruturaSisAtributoIettSatbs() != null){
340 int tam = item.getItemEstruturaSisAtributoIettSatbs().size();
341 int pos = 1;
342 Iterator itAtribLivres = item.getItemEstruturaSisAtributoIettSatbs().iterator();
343 while(itAtribLivres.hasNext()){
344 ItemEstruturaSisAtributoIettSatb atributo = (ItemEstruturaSisAtributoIettSatb) itAtribLivres.next();
345 AtributoLivre atributoLivre = new AtributoLivre();
346 atributoLivre.setSisAtributoSatb(atributo.getSisAtributoSatb());
347 atributoLivre.setInformacao(atributo.getInformacaoIettSatb());
348
349 if(!atributoLivre.getSisAtributoSatb().getSisGrupoAtributoSga().equals(estruturaAtributo.iGetGrupoAtributosLivres()))
350 continue;
351
352 if((atributoLivre.getSisAtributoSatb()
353 .getSisGrupoAtributoSga()
354 .getSisTipoExibicGrupoSteg()
355 .getCodSteg().intValue() != TEXT) &&
356 (atributoLivre.getSisAtributoSatb()
357 .getSisGrupoAtributoSga()
358 .getSisTipoExibicGrupoSteg()
359 .getCodSteg().intValue() != TEXTAREA)) {
360
361 String separador = "";
362 if(tam > 1 && pos < tam){
363 separador = ", ";
364 }
365
366 if(atributoLivre.getSisAtributoSatb() != null)
367 valor += atributoLivre.getSisAtributoSatb().getDescricaoSatb() + separador;
368 else
369 valor += atributoLivre.getInformacao() + separador;
370
371 pos++;
372
373 } else {
374 valor = atributoLivre.getInformacao();
375 }
376 }
377 }
378
379 valor = valor.trim();
380 }
381 else {
382 if("nivelPlanejamento".equals(estruturaAtributo.iGetNome())){
383 if(item.getItemEstruturaNivelIettns() != null){
384 int tam = item.getItemEstruturaNivelIettns().size();
385 int pos = 1;
386 Iterator niveis = item.getItemEstruturaNivelIettns().iterator();
387 while(niveis.hasNext()){
388 SisAtributoSatb nivel = (SisAtributoSatb) niveis.next();
389
390 String separador = "";
391 if(tam > 1 && pos < tam){
392 separador = ", ";
393 }
394
395 valor += nivel.getDescricaoSatb() + separador;
396
397 pos++;
398 }
399 }
400
401 valor = valor.trim();
402
403 }
404 else {
405 valor = estruturaAtributo.iGetValor(item);
406 }
407 }
408
409 valor = Util.normalizaCaracterMarcador(valor);
410
411 builder.addClosedNode("campo", "label=\"" + builder.normalize(estruturaAtributo.iGetLabel()) + ": \"" + " valor=\"" + builder.normalize(valor) + "\"");
412 }
413 builder.closeNode("campos");
414 }
415 }
416 builder.closeNode("estrutura");
417 }
418
419
420
421
422
423
424
425
426
427
428 public void geraXMLTotalizador(XmlBuilder builder) throws ECARException{
429 try{
430 int total = 0;
431 builder.addNode("totalizadores");
432 Iterator itTotalizadores = totalizadores.iterator();
433 while(itTotalizadores.hasNext()){
434 TotalizadorRelatorios tr = (TotalizadorRelatorios) itTotalizadores.next();
435 String nome = tr.getEstrutura();
436 String valor = "" + tr.getTotal();
437 total += tr.getTotal();
438 builder.addClosedNode("totalizador",
439 "nome=\"" + builder.normalize(nome) + ":\"" +
440 " valor=\"" + builder.normalize(valor) + "\"");
441 }
442 builder.addClosedNode("total",
443 "nome=\"Total:\"" +
444 " valor=\"" + builder.normalize(String.valueOf(total)) + "\"");
445 builder.closeNode("totalizadores");
446 } catch(Exception e){
447 this.logger.error(e);
448 throw new ECARException("Erro na criação do relatório: Totalizadores");
449 }
450 }
451
452
453
454
455
456
457
458
459
460
461 private void incrementarTotalizador(Long idEstrutura, String nomeEstrutura){
462 if(!idsEstrutura.contains(idEstrutura)){
463 TotalizadorRelatorios totalizador = new TotalizadorRelatorios();
464 totalizador.setId(idEstrutura);
465 totalizador.setEstrutura(nomeEstrutura);
466 totalizador.setTotal(1);
467
468 idsEstrutura.add(idEstrutura);
469 totalizadores.add(totalizador);
470 }
471 else {
472 Iterator itTotalizadores = totalizadores.iterator();
473 while(itTotalizadores.hasNext()){
474 TotalizadorRelatorios totalizador = (TotalizadorRelatorios) itTotalizadores.next();
475
476 if(idEstrutura.equals(totalizador.getId())){
477 totalizador.incrementeTotal();
478 break;
479 }
480 }
481 }
482 }
483
484
485
486
487
488
489
490
491
492
493 public String getXslFileName() {
494 return "relacaoEstrutura.xsl";
495 }
496
497
498
499
500
501
502
503
504
505
506
507 public String getErrorPage(HttpServletRequest request, String mensagem){
508 String errorPage = "frm_rel.jsp?codIett=" + Pagina.getParamStr(request, "codIett") + "&msgOperacao=" + mensagem + "&codAba="+Pagina.getParamStr(request, "codAba");
509 return errorPage;
510 }
511
512 }