1 package ecar.dao;
2
3 import java.math.BigDecimal;
4
5 import java.util.ArrayList;
6 import java.util.Collections;
7 import java.util.Comparator;
8 import java.util.Date;
9 import java.util.Enumeration;
10 import java.util.HashMap;
11 import java.util.HashSet;
12 import java.util.Iterator;
13 import java.util.List;
14 import java.util.Map;
15 import java.util.Set;
16
17 import javax.servlet.http.HttpServletRequest;
18 import javax.servlet.http.HttpSession;
19
20 import org.hibernate.HibernateException;
21 import org.hibernate.Query;
22 import org.hibernate.Transaction;
23
24 import comum.database.Dao;
25 import comum.util.Data;
26 import comum.util.Mensagem;
27 import comum.util.Pagina;
28 import comum.util.Util;
29
30 import ecar.exception.ECARException;
31 import ecar.login.SegurancaECAR;
32 import ecar.pojo.DemAtributoDema;
33 import ecar.pojo.DemandasGrpAcesso;
34 import ecar.pojo.EntidadeAtributoEnta;
35 import ecar.pojo.EntidadeEnt;
36 import ecar.pojo.LocalItemLit;
37 import ecar.pojo.ObjetoDemanda;
38 import ecar.pojo.OrgaoOrg;
39 import ecar.pojo.PaiFilho;
40 import ecar.pojo.RegApontamentoRegda;
41 import ecar.pojo.RegDemandaRegd;
42 import ecar.pojo.SisAtributoSatb;
43 import ecar.pojo.SisGrupoAtributoSga;
44 import ecar.pojo.UsuarioAtributoUsua;
45 import ecar.pojo.UsuarioUsu;
46 import ecar.util.Dominios;
47
48
49
50
51
52
53
54 public class RegDemandaDao extends Dao {
55
56
57
58 public RegDemandaDao(HttpServletRequest request) {
59 super();
60 this.request = request;
61 }
62
63
64
65
66
67
68
69
70 public void setRegDemanda(RegDemandaRegd regDemanda, HttpServletRequest request) throws NumberFormatException, ECARException {
71
72 if (Pagina.getParam(request, "regDemandaRegd") != null)
73 regDemanda.setRegDemandaRegd((RegDemandaRegd) buscar(RegDemandaRegd.class, Long.valueOf(Pagina.getParam(request, "regDemandaRegd"))));
74 else
75 regDemanda.setRegDemandaRegd(null);
76
77 regDemanda.setDescricaoRegd(Util.normalizaQuebraDeLinha(Pagina.getParamStr(request, "descricaoRegd").trim()));
78 regDemanda.setDataLimiteRegd(Pagina.getParamDataBanco(request, "dataLimiteRegd"));
79 regDemanda.setObservacaoRegd(Util.normalizaQuebraDeLinha(Pagina.getParamStr(request, "observacaoRegd").trim()));
80
81 if (Pagina.getParam(request, "numeroDocOrigemRegd") != null)
82 regDemanda.setNumeroDocOrigemRegd(Integer.valueOf(Pagina.getParamInt(request, "numeroDocOrigemRegd")));
83 else
84 regDemanda.setNumeroDocOrigemRegd(null);
85
86
87
88
89
90
91
92 regDemanda.setDataSolicitacaoRegd(Pagina.getParamDataBanco(request, "dataSolicitacaoRegd"));
93 regDemanda.setNomeSolicitanteRegd(Pagina.getParamStr(request, "nomeSolicitanteRegd").trim());
94 regDemanda.setIndAtivoRegd(Pagina.getParamStr(request, "indAtivoRegd"));
95
96 setLocais(regDemanda, request);
97 setEntidadeOrgaos(regDemanda, request);
98 setEntidades(regDemanda, request);
99 setAtributosDemanda(request, regDemanda);
100 }
101
102
103
104
105
106
107
108 public void setAtributosDemanda(HttpServletRequest request, RegDemandaRegd regDemanda) throws ECARException {
109 regDemanda.setDemAtributoDemas(null);
110 List lAtributos;
111 lAtributos = new SisGrupoAtributoDao(request).getGruposAtributosCadastro("D");
112 Iterator it = lAtributos.iterator();
113 while (it.hasNext()) {
114 SisGrupoAtributoSga grupoAtributo = (SisGrupoAtributoSga) it.next();
115 if (!"".equals(Pagina.getParamStr(request, "a" + grupoAtributo.getCodSga().toString()))) {
116 DemAtributoDema demandaAtributo = new DemAtributoDema();
117 demandaAtributo.setRegDemandaRegd(regDemanda);
118
119
120
121
122 if (SisTipoExibicGrupoDao.TEXT.equals(grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString()) || SisTipoExibicGrupoDao.VALIDACAO.equals(grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString()) || SisTipoExibicGrupoDao.TEXTAREA.equals(grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString()) || SisTipoExibicGrupoDao.IMAGEM.equals(grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString())) {
123 if (grupoAtributo.getSisAtributoSatbs() != null && grupoAtributo.getSisAtributoSatbs().size() > 0) {
124 demandaAtributo.setInformacao(Pagina.getParamStr(request, "a" + grupoAtributo.getCodSga().toString()));
125 demandaAtributo.setSisAtributoSatb((SisAtributoSatb) grupoAtributo.getSisAtributoSatbs().iterator().next());
126 demandaAtributo.setDataInclusao(Data.getDataAtual());
127 if (regDemanda.getDemAtributoDemas() == null)
128 regDemanda.setDemAtributoDemas(new HashSet());
129 regDemanda.getDemAtributoDemas().add(demandaAtributo);
130 }
131 }
132 else {
133
134 String[] atributos = request.getParameterValues("a" + grupoAtributo.getCodSga().toString());
135 for (int i = 0; i < atributos.length; i++) {
136
137
138
139
140 demandaAtributo = new DemAtributoDema();
141 demandaAtributo.setRegDemandaRegd(regDemanda);
142 demandaAtributo.setSisAtributoSatb((SisAtributoSatb) super.buscar(SisAtributoSatb.class, Long.valueOf(atributos[i])));
143 demandaAtributo.setDataInclusao(Data.getDataAtual());
144 if (regDemanda.getDemAtributoDemas() == null)
145 regDemanda.setDemAtributoDemas(new HashSet());
146 regDemanda.getDemAtributoDemas().add(demandaAtributo);
147 }
148 }
149 }
150
151
152
153
154
155
156
157 else {
158 if (SisTipoExibicGrupoDao.MULTITEXTO.equals(grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString())) {
159 Enumeration lAtrib = request.getParameterNames();
160 while (lAtrib.hasMoreElements()) {
161 String atrib = (String) lAtrib.nextElement();
162 if (atrib.lastIndexOf('_') > 0) {
163 String nomeAtrib = atrib.substring(0, atrib.lastIndexOf('_'));
164 String nomeCampo = atrib.substring(atrib.lastIndexOf('_') + 1);
165 if (nomeAtrib.equals("a" + grupoAtributo.getCodSga().toString()) && !"".equals(Pagina.getParamStr(request, atrib))) {
166 DemAtributoDema demandaAtributo = new DemAtributoDema();
167 demandaAtributo.setRegDemandaRegd(regDemanda);
168 demandaAtributo.setInformacao(Pagina.getParamStr(request, atrib));
169 demandaAtributo.setSisAtributoSatb((SisAtributoSatb) super.buscar(SisAtributoSatb.class, Long.valueOf(nomeCampo)));
170 demandaAtributo.setDataInclusao(Data.getDataAtual());
171 if (regDemanda.getDemAtributoDemas() == null)
172 regDemanda.setDemAtributoDemas(new HashSet());
173 regDemanda.getDemAtributoDemas().add(demandaAtributo);
174 }
175 }
176 }
177 }
178 }
179 }
180 }
181
182
183
184
185
186
187
188 public void setLocais(RegDemandaRegd regDemanda, HttpServletRequest request) throws ECARException {
189 int numLocais = 0;
190 if (request.getParameter("contLocal") != null) {
191 numLocais = Integer.parseInt(request.getParameter("contLocal"));
192 }
193 for (int i = 1; i <= numLocais; i++) {
194 if ("S".equals(Pagina.getParamStr(request, "adicionaLocal" + i))) {
195 LocalItemLit local = new LocalItemLit();
196 local = (LocalItemLit) super.buscar(LocalItemLit.class, Long.valueOf(Pagina.getParamStr(request, "codLit" + i)));
197 if (regDemanda.getLocalDemandaLdems() == null)
198 regDemanda.setLocalDemandaLdems(new HashSet());
199 regDemanda.getLocalDemandaLdems().add(local);
200 }
201 }
202 }
203
204
205
206
207
208
209
210 public void setEntidades(RegDemandaRegd regDemanda, HttpServletRequest request) throws ECARException {
211 int numEntidades = 0;
212 if (request.getParameter("contEntidade") != null) {
213 numEntidades = Integer.parseInt(request.getParameter("contEntidade"));
214 }
215 for (int i = 1; i <= numEntidades; i++) {
216 if ("S".equals(Pagina.getParamStr(request, "adicionaEntidade" + i))) {
217 EntidadeEnt entidade = new EntidadeEnt();
218 entidade = (EntidadeEnt) super.buscar(EntidadeEnt.class, Long.valueOf(Pagina.getParamStr(request, "codEnt" + i)));
219 if (regDemanda.getEntidadeDemandaEntds() == null)
220 regDemanda.setEntidadeDemandaEntds(new HashSet());
221 regDemanda.getEntidadeDemandaEntds().add(entidade);
222 }
223 }
224 }
225
226
227
228
229
230
231
232 public void setEntidadeOrgaos(RegDemandaRegd regDemanda, HttpServletRequest request) throws ECARException {
233 int numEntidadeOrgaos = 0;
234 if (request.getParameter("contEntidadeOrgao") != null) {
235 numEntidadeOrgaos = Integer.parseInt(request.getParameter("contEntidadeOrgao"));
236 }
237 for (int i = 1; i <= numEntidadeOrgaos; i++) {
238 if ("S".equals(Pagina.getParamStr(request, "adicionaEntidadeOrgao" + i))) {
239 EntidadeEnt entidadeOrgao = new EntidadeEnt();
240 entidadeOrgao = (EntidadeEnt) super.buscar(EntidadeEnt.class, Long.valueOf(Pagina.getParamStr(request, "codEntOrg" + i)));
241 if (regDemanda.getEntidadeOrgaoDemandaEntorgds() == null)
242 regDemanda.setEntidadeOrgaoDemandaEntorgds(new HashSet());
243 regDemanda.getEntidadeOrgaoDemandaEntorgds().add(entidadeOrgao);
244 }
245 }
246 }
247
248
249
250
251
252
253
254
255 public boolean validaUsuarioAltExc(RegDemandaRegd regDemanda, HttpServletRequest request) {
256 HttpSession session = request.getSession();
257 boolean retorno = false;
258
259 try {
260 DemandasGrpAcessoDao demandasGrpAcessoDao = new DemandasGrpAcessoDao();
261 DemandasGrpAcesso demandasGrpAcesso = null;
262 SegurancaECAR seguranca = ((ecar.login.SegurancaECAR) session.getAttribute("seguranca"));
263
264 if (seguranca != null) {
265 Iterator gruposAcessoIt = seguranca.getGruposAcesso().iterator();
266 while (gruposAcessoIt.hasNext()) {
267 SisAtributoSatb grpAcesso = (SisAtributoSatb) gruposAcessoIt.next();
268 demandasGrpAcesso = (DemandasGrpAcesso) demandasGrpAcessoDao.getDemandasGrpAcesso(grpAcesso);
269 if (demandasGrpAcesso != null && demandasGrpAcesso.getAcessoDemanda().equals(Dominios.SIM)) {
270 break;
271 }
272 else {
273 demandasGrpAcesso = null;
274 }
275 }
276
277 if (demandasGrpAcesso != null) {
278 retorno = true;
279 }
280
281
282
283 else {
284 Set gruposAcessoUsuarioLogado = seguranca.getGruposAcesso();
285 Iterator gruposAcessoUsuarioInclusaoIt;
286 gruposAcessoUsuarioInclusaoIt = regDemanda.getUsuarioUsuByCodUsuInclusaoRegd().getUsuarioAtributoUsuas().iterator();
287 while (gruposAcessoUsuarioInclusaoIt.hasNext()) {
288 SisAtributoSatb grpAcesso = ((UsuarioAtributoUsua) gruposAcessoUsuarioInclusaoIt.next()).getSisAtributoSatb();
289 if (gruposAcessoUsuarioLogado.contains(grpAcesso)) {
290 retorno = true;
291 break;
292 }
293 }
294 }
295 }
296
297 } catch (Exception e) {
298
299 }
300
301 return retorno;
302 }
303
304
305
306
307
308
309 public void salvar(RegDemandaRegd regDemanda) throws ECARException {
310 regDemanda.setDataInclusaoRegd(Data.getDataAtual());
311
312 List filhos = new ArrayList();
313 if (regDemanda.getDemAtributoDemas() != null)
314 filhos.addAll(regDemanda.getDemAtributoDemas());
315
316 super.salvar(regDemanda, filhos);
317 }
318
319
320
321
322
323
324
325 public void alterar(RegDemandaRegd regDemanda, HttpServletRequest request) throws ECARException {
326 Transaction tx = null;
327
328 try {
329 List objetos = new ArrayList();
330 super.inicializarLogBean();
331 tx = session.beginTransaction();
332
333
334 regDemanda.setLocalDemandaLdems(null);
335
336
337 regDemanda.setEntidadeDemandaEntds(null);
338
339
340 regDemanda.setEntidadeOrgaoDemandaEntorgds(null);
341
342
343 if (regDemanda.getDemAtributoDemas() != null) {
344 Iterator itAtt = regDemanda.getDemAtributoDemas().iterator();
345 while (itAtt.hasNext()) {
346 DemAtributoDema demandaAtributo = (DemAtributoDema) itAtt.next();
347 session.delete(demandaAtributo);
348 objetos.add(demandaAtributo);
349 }
350 }
351
352
353 this.setRegDemanda(regDemanda, request);
354
355
356 List filhos = new ArrayList();
357 if (regDemanda.getDemAtributoDemas() != null)
358 filhos.addAll(regDemanda.getDemAtributoDemas());
359
360
361 session.update(regDemanda);
362 objetos.add(regDemanda);
363
364
365 Iterator it = filhos.iterator();
366 while (it.hasNext()) {
367 PaiFilho object = (PaiFilho) it.next();
368 object.atribuirPKPai();
369
370 session.save(object);
371 objetos.add(object);
372 }
373
374 tx.commit();
375
376 if (super.logBean != null) {
377 super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
378 super.logBean.setOperacao("INC_ALT_EXC");
379 Iterator itObj = objetos.iterator();
380
381 while (itObj.hasNext()) {
382 super.logBean.setObj(itObj.next());
383 super.loggerAuditoria.info(logBean.toString());
384 }
385 }
386
387 } catch (HibernateException e) {
388 if (tx != null)
389 try {
390 tx.rollback();
391 } catch (HibernateException r) {
392 this.logger.error(r);
393 throw new ECARException("erro.hibernateException");
394 }
395 this.logger.error(e);
396 throw new ECARException("erro.hibernateException");
397 } catch (ECARException e) {
398 this.logger.error(e);
399 if (tx != null)
400 try {
401 tx.rollback();
402 } catch (HibernateException r) {
403 this.logger.error(r);
404 throw new ECARException("erro.hibernateException");
405 }
406 throw e;
407 }
408 }
409
410
411
412
413
414
415
416
417
418 public void classificarOrdenacao(String clCampo, String clOrdem, List lista) {
419
420 if ("descricaoRegd".equals(clCampo)) {
421 if ("asc".equals(clOrdem)) {
422 Collections.sort(lista, new Comparator() {
423 public int compare(Object o1, Object o2) {
424 return ((RegDemandaRegd) o1).getDescricaoRegd().compareToIgnoreCase(((RegDemandaRegd) o2).getDescricaoRegd());
425 }
426 });
427 }
428 else {
429 Collections.sort(lista, new Comparator() {
430 public int compare(Object o1, Object o2) {
431 return -((RegDemandaRegd) o1).getDescricaoRegd().compareToIgnoreCase(((RegDemandaRegd) o2).getDescricaoRegd());
432 }
433 });
434 }
435 }
436 if ("codRegd".equals(clCampo)) {
437 if ("asc".equals(clOrdem)) {
438 Collections.sort(lista, new Comparator() {
439 public int compare(Object o1, Object o2) {
440 return ((RegDemandaRegd) o1).getCodRegd().intValue() - ((RegDemandaRegd) o2).getCodRegd().intValue();
441 }
442 });
443 }
444 else {
445 Collections.sort(lista, new Comparator() {
446 public int compare(Object o1, Object o2) {
447 return -(((RegDemandaRegd) o1).getCodRegd().intValue() - ((RegDemandaRegd) o2).getCodRegd().intValue());
448 }
449 });
450 }
451 }
452 if ("dataSolicitacaoRegd".equals(clCampo)) {
453 if ("asc".equals(clOrdem)) {
454 Collections.sort(lista, new Comparator() {
455 public int compare(Object o1, Object o2) {
456 RegDemandaRegd regD1 = (RegDemandaRegd) o1;
457 RegDemandaRegd regD2 = (RegDemandaRegd) o2;
458
459
460 if (regD1.getDataSolicitacaoRegd() != null) {
461 if (regD2.getDataSolicitacaoRegd() != null) {
462 return regD1.getDataSolicitacaoRegd().compareTo(regD2.getDataSolicitacaoRegd());
463 }
464 else {
465 return "a".compareTo("");
466 }
467 }
468 else {
469 if (regD2.getDataSolicitacaoRegd() != null) {
470 return "".compareTo("a");
471 }
472 else {
473 return "".compareTo("");
474 }
475 }
476 }
477 });
478 }
479 else {
480 Collections.sort(lista, new Comparator() {
481 public int compare(Object o1, Object o2) {
482 RegDemandaRegd regD1 = (RegDemandaRegd) o1;
483 RegDemandaRegd regD2 = (RegDemandaRegd) o2;
484
485
486 if (regD1.getDataSolicitacaoRegd() != null) {
487 if (regD2.getDataSolicitacaoRegd() != null) {
488 return -(regD1.getDataSolicitacaoRegd().compareTo(regD2.getDataSolicitacaoRegd()));
489 }
490 else {
491 return -("a".compareTo(""));
492 }
493 }
494 else {
495 if (regD2.getDataSolicitacaoRegd() != null) {
496 return -("".compareTo("a"));
497 }
498 else {
499 return -("".compareTo(""));
500 }
501 }
502 }
503 });
504 }
505 }
506 if ("entidadeEnt".equals(clCampo)) {
507
508
509
510
511
512
513
514
515
516
517
518
519 }
520 if ("sitDemandaSitd".equals(clCampo)) {
521 if ("asc".equals(clOrdem)) {
522 Collections.sort(lista, new Comparator() {
523 public int compare(Object o1, Object o2) {
524 return ((RegDemandaRegd) o1).getSitDemandaSitd().getDescricaoSitd().compareToIgnoreCase(((RegDemandaRegd) o2).getSitDemandaSitd().getDescricaoSitd());
525 }
526 });
527 }
528 else {
529 Collections.sort(lista, new Comparator() {
530 public int compare(Object o1, Object o2) {
531 return -((RegDemandaRegd) o1).getSitDemandaSitd().getDescricaoSitd().compareToIgnoreCase(((RegDemandaRegd) o2).getSitDemandaSitd().getDescricaoSitd());
532 }
533 });
534 }
535 }
536
537
538 Iterator itRes = lista.iterator();
539 while (itRes.hasNext()) {
540 RegDemandaRegd regDemandaResul = (RegDemandaRegd) itRes.next();
541 regDemandaResul.getEntidadeDemandaEntds().size();
542 }
543 }
544
545
546
547
548
549
550 public void excluir(String[] codigosParaExcluir) throws ECARException, Exception {
551 try {
552 List exclusao = new ArrayList();
553
554 for (int i = 0; i < codigosParaExcluir.length; i++) {
555 RegDemandaRegd regDemanda = (RegDemandaRegd) buscar(RegDemandaRegd.class, Long.valueOf(codigosParaExcluir[i]));
556
557 if (regDemanda.getRegDemandaRegds() == null || regDemanda.getRegDemandaRegds().size() == 0) {
558
559 if (regDemanda.getRegApontamentoRegdas() != null && regDemanda.getRegApontamentoRegdas().size() > 0) {
560 Iterator it = regDemanda.getRegApontamentoRegdas().iterator();
561 while (it.hasNext()) {
562 RegApontamentoRegda regAp = (RegApontamentoRegda) it.next();
563 exclusao.add(regAp);
564 }
565 }
566
567 if (regDemanda.getDemAtributoDemas() != null) {
568 Iterator itAtb = regDemanda.getDemAtributoDemas().iterator();
569 while (itAtb.hasNext()) {
570 DemAtributoDema demAtrib = (DemAtributoDema) itAtb.next();
571 exclusao.add(demAtrib);
572 }
573 }
574
575 exclusao.add(regDemanda);
576 }
577 else {
578
579 throw new ECARException("registroDemanda.exclusao.erroDemandaRelacionada");
580 }
581 }
582
583 if (exclusao.size() > 0)
584 super.excluir(exclusao);
585
586 } catch (ECARException e) {
587 this.logger.error(e);
588 throw e;
589
590 } catch (Exception e) {
591 this.logger.error(e);
592 throw e;
593 }
594 }
595
596
597
598
599
600
601
602
603
604
605
606 public List pesquisar(long num_registro, String descricao, String observacao, int num_doc_origem, String usu_sol, String nome_sigla, Date limiteInicial, Date limiteFinal, Date solicitacaoInicial, Date solicitacaoFinal, String codLocais, long codPrior, long codSitd, long codOrg, EntidadeEnt entidade, String formasContato, HttpServletRequest request) throws Exception {
607
608 String join = "";
609 String where = "";
610
611 List atributosEntidade = new ArrayList();
612
613 if ((limiteInicial != null && limiteFinal != null) || (solicitacaoInicial != null && solicitacaoFinal != null)) {
614 where += " where ";
615
616 if (limiteInicial != null && limiteFinal != null)
617 where += " (i.dataLimiteRegd >= :limiteInicial and i.dataLimiteRegd <= :limiteFinal)";
618
619 if (solicitacaoInicial != null && solicitacaoFinal != null) {
620 if (!" where ".equals(where))
621 where += " or ";
622
623 where += " (i.dataSolicitacaoRegd >= :solicitacaoInicial and i.dataSolicitacaoRegd <= :solicitacaoInicial)";
624 }
625 }
626
627 if ((num_registro > 0) || (!"".equals(descricao)) || (!"".equals(observacao)) || (num_doc_origem > 0) || (!"".equals(usu_sol)) || (!"".equals(nome_sigla)) || (codPrior > 0) || (codSitd > 0) || (codOrg > 0) || (entidade.getEntidadeAtributoEntas() != null && entidade.getEntidadeAtributoEntas().size() > 0)) {
628
629 if ("".equals(where))
630 where += " where ";
631
632 if (num_registro > 0)
633 if (" where ".equals(where))
634 where += " i.codRegd = :num_registro ";
635 else
636 where += " and i.codRegd = :num_registro ";
637 if (!"".equals(descricao))
638 if ("where".equals(where))
639 where += " upper( i.descricaoRegd ) like :descricao ";
640 else
641 where += " and upper( i.descricaoRegd ) like :descricao ";
642 if (!"".equals(observacao))
643 if ("where".equals(where))
644 where += " upper( i.observacaoRegd ) like :observacao ";
645 else
646 where += " and upper( i.observacaoRegd ) like :observacao ";
647 if (num_doc_origem > 0)
648 if ("where".equals(where))
649 where += " i.numeroDocOrigemRegd = :num_doc_origem ";
650 else
651 where += " and i.numeroDocOrigemRegd = :num_doc_origem ";
652 if (!"".equals(usu_sol))
653 if ("where".equals(where))
654 where += " upper( i.nomeSolicitanteRegd ) like :usu_sol ";
655 else
656 where += " and upper( i.nomeSolicitanteRegd ) like :usu_sol ";
657 if (!"".equals(nome_sigla)) {
658 join += " join i.entidadeDemandaEntds as entidade ";
659 if ("where".equals(where))
660 where += " ( upper( entidade.nomeEnt ) like :nome_sigla or upper( entidade.siglaEnt ) like :nome_sigla )";
661 else
662 where += " and ( upper( entidade.nomeEnt ) like :nome_sigla or upper( entidade.siglaEnt ) like :nome_sigla )";
663 }
664 if (codPrior > 0)
665 if ("where".equals(where))
666 where += " i.prioridadePrior.codPrior = :codPrior ";
667 else
668 where += " and i.prioridadePrior.codPrior = :codPrior ";
669 if (codSitd > 0)
670 if ("where".equals(where))
671 where += " i.sitDemandaSitd.codSitd = :codSitd ";
672 else
673 where += " and i.sitDemandaSitd.codSitd = :codSitd ";
674 if (codOrg > 0)
675 if (where.equals(" where "))
676 where += " i.orgaoOrg.codOrg = :codOrg ";
677 else
678 where += " and i.orgaoOrg.codOrg = :codOrg ";
679 if (entidade.getEntidadeAtributoEntas() != null && entidade.getEntidadeAtributoEntas().size() > 0) {
680 if ("".equals(nome_sigla)) {
681 join += " join i.entidadeDemandaEntds as entidade ";
682 }
683 join += " join entidade.entidadeAtributoEntas as entAtributo ";
684
685 Iterator it = entidade.getEntidadeAtributoEntas().iterator();
686 while (it.hasNext()) {
687 EntidadeAtributoEnta entAtributo = (EntidadeAtributoEnta) it.next();
688 atributosEntidade.add(entAtributo.getSisAtributoSatb().getCodSatb());
689 }
690
691 if ("where".equals(where))
692 where += " entAtributo.comp_id.codSatb in (:entAtributo) ";
693 else
694 where += " and entAtributo.comp_id.codSatb in (:entAtributo) ";
695 }
696 }
697
698 Query query = this.getSession().createQuery("select i from RegDemandaRegd i" + join + where);
699
700 if (limiteInicial != null)
701 query.setDate("limiteInicial", limiteInicial);
702 if (limiteFinal != null)
703 query.setDate("limiteFinal", limiteFinal);
704 if (solicitacaoInicial != null)
705 query.setDate("solicitacaoInicial", solicitacaoInicial);
706 if (solicitacaoFinal != null)
707 query.setDate("solicitacaoFinal", solicitacaoFinal);
708
709 if (num_registro > 0)
710 query.setLong("num_registro", num_registro);
711 if (!"".equals(descricao))
712 query.setString("descricao", "%" + descricao.toUpperCase() + "%");
713 if (!"".equals(observacao))
714 query.setString("observacao", "%" + observacao.toUpperCase() + "%");
715 if (num_doc_origem > 0)
716 query.setInteger("num_doc_origem", num_doc_origem);
717 if (!"".equals(usu_sol))
718 query.setString("usu_sol", "%" + usu_sol.toUpperCase() + "%");
719 if (!"".equals(nome_sigla))
720 query.setString("nome_sigla", "%" + nome_sigla.toUpperCase() + "%");
721 if (codPrior > 0)
722 query.setLong("codPrior", codPrior);
723 if (codSitd > 0)
724 query.setLong("codSitd", codSitd);
725 if (codOrg > 0)
726 query.setLong("codOrg", codOrg);
727
728 if (entidade.getEntidadeAtributoEntas() != null && entidade.getEntidadeAtributoEntas().size() > 0) {
729 query.setParameterList("entAtributo", atributosEntidade);
730 }
731
732 List ret = query.list();
733
734 List locais = new ArrayList();
735 if (!"".equals(codLocais))
736 locais = new LocalItemDao(request).pesquisarCodLocais(codLocais);
737
738 request.getSession().setAttribute("listLocais", locais);
739 if ((ret != null) && (ret.size() > 0) && (!"".equals(codLocais))) {
740
741 List atributosPesquisa = new ArrayList();
742 Iterator itAtbPesquisa = locais.iterator();
743 while (itAtbPesquisa.hasNext())
744 atributosPesquisa.add(((LocalItemLit) itAtbPesquisa.next()));
745
746 Iterator it = ret.iterator();
747 while (it.hasNext()) {
748 List atributosResultado = new ArrayList();
749 Iterator itAtribResultado = ((RegDemandaRegd) it.next()).getLocalDemandaLdems().iterator();
750
751 while (itAtribResultado.hasNext())
752 atributosResultado.add((LocalItemLit) itAtribResultado.next());
753
754 if (!atributosResultado.containsAll(atributosPesquisa))
755 it.remove();
756 }
757 }
758 return ret;
759 }
760
761
762
763
764
765
766
767 public List pesquisarPopUpRegDemanda(RegDemandaRegd regDemanda, Set gruposAcesso) throws ECARException {
768 try {
769 StringBuilder select = new StringBuilder();
770 StringBuilder where = new StringBuilder();
771 StringBuilder order = new StringBuilder();
772
773 boolean bolWhere = false;
774
775 DemandasGrpAcessoDao demandasGrpAcessoDao = new DemandasGrpAcessoDao();
776 DemandasGrpAcesso demandasGrpAcesso = null;
777
778 if (gruposAcesso != null) {
779 Iterator gruposAcessoIt = gruposAcesso.iterator();
780 while (gruposAcessoIt.hasNext()) {
781 SisAtributoSatb grpAcesso = (SisAtributoSatb) gruposAcessoIt.next();
782 demandasGrpAcesso = (DemandasGrpAcesso) demandasGrpAcessoDao.getDemandasGrpAcesso(grpAcesso);
783 if (demandasGrpAcesso != null && demandasGrpAcesso.getAcessoDemanda().equals(Dominios.SIM)) {
784 break;
785 }
786 else {
787 demandasGrpAcesso = null;
788 }
789 }
790 }
791
792 boolean administradorDemandas = demandasGrpAcesso != null ? true : false;
793
794 if (administradorDemandas) {
795 select.append("select regDemanda from RegDemandaRegd as regDemanda");
796 }
797 else {
798 select.append("select distinct regDemanda from RegDemandaRegd as regDemanda").append(" join regDemanda.usuarioUsuByCodUsuInclusaoRegd as usuario ").append(" join usuario.usuarioAtributoUsuas as usuarioAtributo ");
799 }
800
801 if (regDemanda.getDescricaoRegd() != null && !"".equals(regDemanda.getDescricaoRegd())) {
802
803 bolWhere = true;
804 where.append(" where");
805
806 where.append(" upper(regDemanda.descricaoRegd) like :descricao");
807 }
808 if (regDemanda.getEntidadeDemandaEntds() != null && regDemanda.getEntidadeDemandaEntds().size() > 0) {
809 select.append(" join regDemanda.entidadeDemandaEntds as entidade");
810
811 EntidadeEnt entidade = (EntidadeEnt) regDemanda.getEntidadeDemandaEntds().iterator().next();
812
813 if (entidade.getSiglaEnt() != null && !"".equals(entidade.getSiglaEnt())) {
814 if (bolWhere) {
815 where.append(" and");
816 }
817 else {
818 bolWhere = true;
819 where.append(" where");
820 }
821 where.append(" upper(entidade.siglaEnt) like :siglaEnt");
822 }
823
824 if (entidade.getNomeEnt() != null && !"".equals(entidade.getNomeEnt())) {
825 if (bolWhere) {
826 where.append(" and");
827 }
828 else {
829 bolWhere = true;
830 where.append(" where");
831 }
832 where.append(" upper(entidade.nomeEnt) like :nomeEnt");
833 }
834 }
835 if (regDemanda.getNomeSolicitanteRegd() != null && !"".equals(regDemanda.getNomeSolicitanteRegd())) {
836 if (bolWhere) {
837 where.append(" and");
838 }
839 else {
840 bolWhere = true;
841 where.append(" where");
842 }
843 where.append(" upper(regDemanda.nomeSolicitanteRegd) like :usuario");
844 }
845
846 if (!administradorDemandas && gruposAcesso != null) {
847
848 if (bolWhere) {
849 where.append(" and");
850 }
851 else {
852 bolWhere = true;
853 where.append(" where");
854 }
855
856 where.append(" (usuarioAtributo.usuarioUsu.codUsu = usuario.codUsu ").append(" and usuarioAtributo.comp_id.codSatb in (:gruposAcesso))");
857 }
858
859 order.append(" order by regDemanda.descricaoRegd asc");
860
861 Query query = this.getSession().createQuery(select.toString() + where.toString() + order.toString());
862
863 if (!administradorDemandas) {
864
865 List<Long> listCodGruposAcesso = new ArrayList<Long>();
866 if (gruposAcesso != null) {
867 for (Iterator iter = gruposAcesso.iterator(); iter.hasNext();) {
868 SisAtributoSatb grupoAcesso = (SisAtributoSatb) iter.next();
869 listCodGruposAcesso.add(grupoAcesso.getCodSatb());
870 }
871 }
872
873 if (listCodGruposAcesso != null && listCodGruposAcesso.size() > 0) {
874 query.setParameterList("gruposAcesso", listCodGruposAcesso);
875 }
876 }
877
878 if (regDemanda.getDescricaoRegd() != null && !"".equals(regDemanda.getDescricaoRegd())) {
879 query.setString("descricao", "%" + regDemanda.getDescricaoRegd().toUpperCase() + "%");
880 }
881 if (regDemanda.getEntidadeDemandaEntds() != null && regDemanda.getEntidadeDemandaEntds().size() > 0) {
882 EntidadeEnt entidade = (EntidadeEnt) regDemanda.getEntidadeDemandaEntds().iterator().next();
883 if (entidade.getSiglaEnt() != null && !"".equals(entidade.getSiglaEnt())) {
884 query.setString("siglaEnt", "%" + entidade.getSiglaEnt().toUpperCase() + "%");
885 }
886 if (entidade.getNomeEnt() != null && !"".equals(entidade.getNomeEnt())) {
887 query.setString("nomeEnt", "%" + entidade.getNomeEnt().toUpperCase() + "%");
888 }
889 }
890 if (regDemanda.getNomeSolicitanteRegd() != null && !"".equals(regDemanda.getNomeSolicitanteRegd())) {
891 query.setString("usuario", "%" + regDemanda.getNomeSolicitanteRegd().toUpperCase() + "%");
892 }
893
894 return query.list();
895 } catch (HibernateException e) {
896 this.logger.error(e);
897 throw new ECARException(e);
898 }
899 }
900
901
902
903
904
905
906
907 public List getDemandaAtributoByGrupo(RegDemandaRegd regDemanda, SisGrupoAtributoSga grupo) throws ECARException {
908 List retorno = new ArrayList();
909 Set result = regDemanda.getDemAtributoDemas();
910 if (result != null) {
911 if (result.size() > 0) {
912 Iterator it = result.iterator();
913 while (it.hasNext()) {
914 DemAtributoDema demandaAtributo = (DemAtributoDema) it.next();
915 if (demandaAtributo.getSisAtributoSatb().getSisGrupoAtributoSga().equals(grupo))
916 retorno.add(demandaAtributo);
917 }
918
919 }
920 }
921 return retorno;
922 }
923
924
925
926
927
928
929
930
931
932 public String getValorAtributoDemanda(RegDemandaRegd regDemanda, String nomeAtbdem, String FkAtbdem) throws ECARException {
933 try {
934 Object retorno = Util.invocaGet(regDemanda, nomeAtbdem);
935 if (retorno != null) {
936 if (FkAtbdem != null && !"".equals(FkAtbdem)) {
937 retorno = Util.invocaGet(retorno, FkAtbdem);
938 if (retorno != null)
939 return retorno.toString();
940 else
941 return "";
942 }
943 else {
944 if (retorno.getClass().equals(Date.class) || retorno.getClass().equals(java.sql.Date.class))
945 retorno = Data.parseDate((Date) retorno);
946
947 return retorno.toString();
948 }
949 }
950 } catch (Exception e) {
951 this.logger.error(e);
952 throw new ECARException(e);
953 }
954 return "";
955 }
956
957
958
959
960
961
962
963
964
965 public List getRegDemandasClassificacaoComPermissaoGrupoUsuario(RegDemandaRegd regDemanda, Set gruposAcesso, boolean ehFiltro, UsuarioUsu usuario) throws HibernateException, ECARException {
966
967 List retorno = null;
968 try {
969 StringBuilder query = new StringBuilder(" select distinct regDemanda from RegDemandaRegd as regDemanda ").append(" join regDemanda.sitDemandaSitd as situacaoDemanda ")
970
971
972 .append(" where ")
973
974
975
976 .append(" situacaoDemanda.indPrimeiraSituacaoSitd = 'S' ").append(" order by regDemanda.codRegd asc ");
977
978 Query q = this.getSession().createQuery(query.toString());
979
980
981
982
983
984
985
986
987
988
989
990 retorno = q.list();
991
992 aplicarRestricoesRegDemanda(retorno, usuario, gruposAcesso, true);
993
994 if (ehFiltro)
995 retorno = aplicarFiltrosDinamicosRegDemanda(retorno);
996
997 } catch (HibernateException e) {
998 this.logger.error(e);
999 throw new ECARException(e);
1000 }
1001
1002 return retorno;
1003 }
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014 public List getRegDemandasComPermissaoGrupoUsuario(RegDemandaRegd regDemanda, Set gruposAcesso, boolean ehFiltro, UsuarioUsu usuario) throws HibernateException, ECARException {
1015
1016 List retorno = null;
1017 try {
1018 StringBuilder query = new StringBuilder(" select distinct regDemanda from RegDemandaRegd as regDemanda ")
1019
1020
1021
1022
1023
1024
1025 .append(" order by regDemanda.codRegd asc ");
1026
1027 Query q = this.getSession().createQuery(query.toString());
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039 retorno = q.list();
1040
1041 aplicarRestricoesRegDemanda(retorno, usuario, gruposAcesso, false);
1042
1043 if (ehFiltro)
1044 retorno = aplicarFiltrosDinamicosRegDemanda(retorno);
1045
1046 } catch (HibernateException e) {
1047 this.logger.error(e);
1048 throw new ECARException(e);
1049 }
1050
1051 return retorno;
1052 }
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064 public String getValorLocaisDemanda(RegDemandaRegd regDemanda, String FkAtbdem) throws ECARException {
1065
1066 LocalItemLit localItem = new LocalItemLit();
1067 Set locais = regDemanda.getLocalDemandaLdems();
1068
1069 Iterator it = locais.iterator();
1070 StringBuilder colunaLocais = new StringBuilder();
1071 Object colunaLocal;
1072
1073 while (it.hasNext()) {
1074 localItem = (LocalItemLit) it.next();
1075 if (FkAtbdem != null && !"".equals(FkAtbdem)) {
1076 colunaLocal = Util.invocaGet(localItem, FkAtbdem);
1077
1078 if (colunaLocal.getClass().equals(Date.class) || colunaLocal.getClass().equals(java.sql.Date.class)) {
1079 colunaLocal = Data.parseDate((Date) colunaLocal);
1080 }
1081 colunaLocais.append(colunaLocal.toString());
1082 colunaLocais.append(", ");
1083 }
1084 }
1085 if (colunaLocais.length() > 0) {
1086 colunaLocais.delete(colunaLocais.length() - 2, colunaLocais.length());
1087 }
1088
1089 return colunaLocais.toString();
1090
1091 }
1092
1093 public String getHierarquiaLocaisDemanda(RegDemandaRegd regDemanda) throws ECARException {
1094
1095 LocalItemLit localItem = new LocalItemLit();
1096 Set locais = regDemanda.getLocalDemandaLdems();
1097
1098 Iterator it = locais.iterator();
1099 StringBuilder hierarquiaLocaisStr = new StringBuilder();
1100 Set hierarquiaLocais;
1101 String hierarquiaLocal;
1102
1103 while (it.hasNext()) {
1104 localItem = (LocalItemLit) it.next();
1105
1106 hierarquiaLocais = (Set) Util.invocaGet(localItem, "localItemHierarquiaLithsByCodLit");
1107
1108 Iterator itHierarquia = hierarquiaLocais.iterator();
1109
1110 if (itHierarquia.hasNext()) {
1111 while (itHierarquia.hasNext()) {
1112
1113 hierarquiaLocaisStr.append(localItem.getIdentificacaoLit() + " - " + ((LocalItemLit) itHierarquia.next()).getIdentificacaoLit());
1114 }
1115 }
1116 else {
1117 hierarquiaLocaisStr.append(localItem.getIdentificacaoLit());
1118 }
1119
1120 hierarquiaLocaisStr.append(", ");
1121 }
1122 if (hierarquiaLocaisStr.length() > 0) {
1123 hierarquiaLocaisStr.delete(hierarquiaLocaisStr.length() - 2, hierarquiaLocaisStr.length());
1124 }
1125
1126 return hierarquiaLocaisStr.toString();
1127
1128 }
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140 public String getValorEntidadesDemanda(RegDemandaRegd regDemanda, String FkAtbdem) throws ECARException {
1141
1142 EntidadeEnt entidade = new EntidadeEnt();
1143 Set entidades = regDemanda.getEntidadeDemandaEntds();
1144
1145 Iterator it = entidades.iterator();
1146 StringBuilder colunaEntidades = new StringBuilder();
1147 Object colunaEntidade;
1148
1149 while (it.hasNext()) {
1150 entidade = (EntidadeEnt) it.next();
1151 if (FkAtbdem != null && !"".equals(FkAtbdem)) {
1152 colunaEntidade = Util.invocaGet(entidade, FkAtbdem);
1153
1154 if (colunaEntidade.getClass().equals(Date.class) || colunaEntidade.getClass().equals(java.sql.Date.class)) {
1155 colunaEntidade = Data.parseDate((Date) colunaEntidade);
1156 }
1157 colunaEntidades.append(colunaEntidade.toString());
1158 colunaEntidades.append(", ");
1159 }
1160 }
1161 if (colunaEntidades.length() > 0) {
1162 colunaEntidades.delete(colunaEntidades.length() - 2, colunaEntidades.length());
1163 }
1164
1165 return colunaEntidades.toString();
1166
1167 }
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179 public String getValorEntidadesOrgaosDemanda(RegDemandaRegd regDemanda, String FkAtbdem) throws ECARException {
1180
1181 EntidadeEnt entidade = new EntidadeEnt();
1182 Set entidadesOrgaos = regDemanda.getEntidadeOrgaoDemandaEntorgds();
1183
1184 Iterator it = entidadesOrgaos.iterator();
1185 StringBuilder colunaOrgaos = new StringBuilder();
1186 Object colunaOrgao;
1187
1188 while (it.hasNext()) {
1189 entidade = (EntidadeEnt) it.next();
1190 if (FkAtbdem != null && !"".equals(FkAtbdem)) {
1191 colunaOrgao = Util.invocaGet(entidade, FkAtbdem);
1192
1193 if (colunaOrgao.getClass().equals(Date.class) || colunaOrgao.getClass().equals(java.sql.Date.class)) {
1194 colunaOrgao = Data.parseDate((Date) colunaOrgao);
1195 }
1196 colunaOrgaos.append(colunaOrgao.toString());
1197 colunaOrgaos.append(", ");
1198 }
1199 }
1200 if (colunaOrgaos.length() > 0) {
1201 colunaOrgaos.delete(colunaOrgaos.length() - 2, colunaOrgaos.length());
1202 }
1203
1204 return colunaOrgaos.toString();
1205
1206 }
1207
1208
1209
1210
1211
1212
1213
1214 public List aplicarRestricoesRegDemanda(List regDemandas, UsuarioUsu usuario, Set gruposAcesso, boolean classificacao) throws ECARException {
1215
1216 Iterator itRegDemandas = regDemandas.iterator();
1217
1218 while (itRegDemandas.hasNext()) {
1219
1220 RegDemandaRegd regDemandaRegd = (RegDemandaRegd) itRegDemandas.next();
1221 List atributosLivres = getAtributosLivresDemandaEhRestritivo();
1222
1223 if (classificacao) {
1224 if ((!usuario.getCodUsu().equals(regDemandaRegd.getUsuarioUsuByCodUsuInclusaoRegd().getCodUsu())) && aplicarRestricaoAtributosLivresRestritivos(regDemandaRegd, atributosLivres, usuario) && aplicarRestricaoUsuarioEntidadeOrgaoDemanda(regDemandaRegd, usuario)) {
1225
1226 itRegDemandas.remove();
1227 }
1228 }
1229 else {
1230
1231
1232
1233 if ((!usuario.getCodUsu().equals(regDemandaRegd.getUsuarioUsuByCodUsuInclusaoRegd().getCodUsu())) && aplicarRestricaoAtributosLivresRestritivos(regDemandaRegd, atributosLivres, usuario) && aplicarRestricaoUsuarioEntidadeOrgaoDemanda(regDemandaRegd, usuario)) {
1234
1235 itRegDemandas.remove();
1236 }
1237 }
1238
1239 }
1240
1241 return regDemandas;
1242 }
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481 public List aplicarFiltrosDinamicosRegDemanda(List regDemandas) throws ECARException {
1482
1483 Iterator itRegDemandas = regDemandas.iterator();
1484 Map parametrosFiltroDemanda = new HashMap();
1485
1486
1487 if (request.getSession().getAttribute("parametrosFiltroDemanda") != null) {
1488 parametrosFiltroDemanda = (Map) request.getSession().getAttribute("parametrosFiltroDemanda");
1489
1490 while (itRegDemandas.hasNext()) {
1491 RegDemandaRegd regDemandaRegd = (RegDemandaRegd) itRegDemandas.next();
1492
1493 List atributosLivres = getAtributosLivresDemandaEhFiltro();
1494 String valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("descricaoRegd"));
1495
1496 if (!"".equals(valorCampo)) {
1497 if (regDemandaRegd.getDescricaoRegd() == null || !regDemandaRegd.getDescricaoRegd().toUpperCase().contains((valorCampo.toUpperCase()))) {
1498 itRegDemandas.remove();
1499 continue;
1500 }
1501 }
1502
1503 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("numeroDocOrigemRegd"));
1504 if (!"".equals(valorCampo)) {
1505 if (regDemandaRegd.getNumeroDocOrigemRegd() == null || !regDemandaRegd.getNumeroDocOrigemRegd().toString().equals((valorCampo))) {
1506 itRegDemandas.remove();
1507 continue;
1508 }
1509 }
1510
1511 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("codRegd"));
1512 if (!"".equals(valorCampo)) {
1513 if (regDemandaRegd.getCodRegd() == null || !regDemandaRegd.getCodRegd().toString().equals(valorCampo)) {
1514 itRegDemandas.remove();
1515 continue;
1516 }
1517 }
1518
1519 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("observacaoRegd"));
1520 if (!"".equals(valorCampo)) {
1521 if (regDemandaRegd.getObservacaoRegd() == null || !regDemandaRegd.getObservacaoRegd().toUpperCase().contains((valorCampo.toUpperCase()))) {
1522 itRegDemandas.remove();
1523 continue;
1524 }
1525 }
1526
1527 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("sitDemandaSitd"));
1528 if (!"".equals(valorCampo)) {
1529 if (regDemandaRegd.getSitDemandaSitd() == null || !regDemandaRegd.getSitDemandaSitd().getCodSitd().equals(Long.valueOf(valorCampo))) {
1530 itRegDemandas.remove();
1531 continue;
1532 }
1533 }
1534
1535 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("usuarioUsuByCodUsuInclusaoRegd"));
1536 if (!"".equals(valorCampo)) {
1537 if (regDemandaRegd.getUsuarioUsuByCodUsuInclusaoRegd() == null || !regDemandaRegd.getUsuarioUsuByCodUsuInclusaoRegd().getNomeUsu().toUpperCase().contains((valorCampo.toUpperCase()))) {
1538 itRegDemandas.remove();
1539 continue;
1540 }
1541 }
1542
1543 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("prioridadePrior"));
1544 if (!"".equals(valorCampo)) {
1545 if (regDemandaRegd.getPrioridadePrior() == null || !regDemandaRegd.getPrioridadePrior().getCodPrior().equals(Long.valueOf(valorCampo))) {
1546 itRegDemandas.remove();
1547 continue;
1548 }
1549 }
1550
1551 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("regDemandaRegd"));
1552 if (!"".equals(valorCampo)) {
1553 if (regDemandaRegd.getRegDemandaRegd() == null || !regDemandaRegd.getRegDemandaRegd().getCodRegd().equals(Long.valueOf(valorCampo))) {
1554 itRegDemandas.remove();
1555 continue;
1556 }
1557 }
1558
1559 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("indAtivoRegd"));
1560 if (!"".equals(valorCampo)) {
1561 if (regDemandaRegd.getIndAtivoRegd() == null || !regDemandaRegd.getIndAtivoRegd().toUpperCase().contains((valorCampo.toUpperCase()))) {
1562 itRegDemandas.remove();
1563 continue;
1564 }
1565 }
1566
1567 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("nomeSolicitanteRegd"));
1568 if (!"".equals(valorCampo)) {
1569 if (regDemandaRegd.getNomeSolicitanteRegd() == null || !regDemandaRegd.getNomeSolicitanteRegd().toUpperCase().contains((valorCampo.toUpperCase()))) {
1570 itRegDemandas.remove();
1571 continue;
1572 }
1573 }
1574
1575 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("dataLimiteRegd_Inicio"));
1576 if (valorCampo != null && !"".equals(valorCampo)) {
1577
1578 String dataLimiteRegdInicioStr = valorCampo;
1579
1580
1581
1582 dataLimiteRegdInicioStr = dataLimiteRegdInicioStr.substring(3, dataLimiteRegdInicioStr.lastIndexOf("/") + 1) + dataLimiteRegdInicioStr.substring(0, dataLimiteRegdInicioStr.indexOf("/") + 1) + dataLimiteRegdInicioStr.substring(dataLimiteRegdInicioStr.lastIndexOf("/") + 1);
1583
1584 Date dataLimiteRegdInicio = new Date(dataLimiteRegdInicioStr);
1585
1586 if (regDemandaRegd.getDataLimiteRegd() == null ||
1587
1588
1589 regDemandaRegd.getDataLimiteRegd().compareTo(dataLimiteRegdInicio) < 0) {
1590 itRegDemandas.remove();
1591 continue;
1592 }
1593 }
1594
1595 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("dataLimiteRegd_Fim"));
1596 if (valorCampo != null && !"".equals(valorCampo)) {
1597
1598 String dataLimiteRegdFimStr = valorCampo;
1599
1600
1601
1602 dataLimiteRegdFimStr = dataLimiteRegdFimStr.substring(3, dataLimiteRegdFimStr.lastIndexOf("/") + 1) + dataLimiteRegdFimStr.substring(0, dataLimiteRegdFimStr.indexOf("/") + 1) + dataLimiteRegdFimStr.substring(dataLimiteRegdFimStr.lastIndexOf("/") + 1);
1603
1604 Date dataLimiteRegdFim = new Date(dataLimiteRegdFimStr);
1605
1606 if (regDemandaRegd.getDataLimiteRegd() == null ||
1607
1608
1609 regDemandaRegd.getDataLimiteRegd().compareTo(dataLimiteRegdFim) > 0) {
1610 itRegDemandas.remove();
1611 continue;
1612 }
1613 }
1614
1615 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("dataSolicitacaoRegd_Inicio"));
1616 if (valorCampo != null && !"".equals(valorCampo)) {
1617
1618 String dataSolicitacaoRegdInicioStr = valorCampo;
1619
1620
1621
1622 dataSolicitacaoRegdInicioStr = dataSolicitacaoRegdInicioStr.substring(3, dataSolicitacaoRegdInicioStr.lastIndexOf("/") + 1) + dataSolicitacaoRegdInicioStr.substring(0, dataSolicitacaoRegdInicioStr.indexOf("/") + 1) + dataSolicitacaoRegdInicioStr.substring(dataSolicitacaoRegdInicioStr.lastIndexOf("/") + 1);
1623
1624 Date dataSolicitacaoRegdInicio = new Date(dataSolicitacaoRegdInicioStr);
1625
1626 if (regDemandaRegd.getDataSolicitacaoRegd() == null ||
1627
1628
1629 regDemandaRegd.getDataSolicitacaoRegd().compareTo(dataSolicitacaoRegdInicio) < 0) {
1630 itRegDemandas.remove();
1631 continue;
1632 }
1633 }
1634
1635 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("dataSolicitacaoRegd_Fim"));
1636 if (valorCampo != null && !"".equals(valorCampo)) {
1637
1638 String dataSolicitacaoRegdFimStr = valorCampo;
1639
1640
1641
1642 dataSolicitacaoRegdFimStr = dataSolicitacaoRegdFimStr.substring(3, dataSolicitacaoRegdFimStr.lastIndexOf("/") + 1) + dataSolicitacaoRegdFimStr.substring(0, dataSolicitacaoRegdFimStr.indexOf("/") + 1) + dataSolicitacaoRegdFimStr.substring(dataSolicitacaoRegdFimStr.lastIndexOf("/") + 1);
1643
1644 Date dataSolicitacaoRegdFim = new Date(dataSolicitacaoRegdFimStr);
1645
1646 if (regDemandaRegd.getDataSolicitacaoRegd() == null ||
1647
1648
1649 regDemandaRegd.getDataSolicitacaoRegd().compareTo(dataSolicitacaoRegdFim) > 0) {
1650 itRegDemandas.remove();
1651 continue;
1652 }
1653 }
1654
1655 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("dataInclusaoRegd_Inicio"));
1656 if (valorCampo != null && !"".equals(valorCampo)) {
1657
1658 String dataInclusaoRegdInicioStr = valorCampo;
1659
1660
1661
1662 dataInclusaoRegdInicioStr = dataInclusaoRegdInicioStr.substring(3, dataInclusaoRegdInicioStr.lastIndexOf("/") + 1) + dataInclusaoRegdInicioStr.substring(0, dataInclusaoRegdInicioStr.indexOf("/") + 1) + dataInclusaoRegdInicioStr.substring(dataInclusaoRegdInicioStr.lastIndexOf("/") + 1);
1663
1664 Date dataInclusaoRegdInicio = new Date(dataInclusaoRegdInicioStr);
1665
1666 if (regDemandaRegd.getDataInclusaoRegd() == null ||
1667
1668
1669 regDemandaRegd.getDataInclusaoRegd().compareTo(dataInclusaoRegdInicio) < 0) {
1670 itRegDemandas.remove();
1671 continue;
1672 }
1673 }
1674
1675 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("dataInclusaoRegd_Fim"));
1676 if (valorCampo != null && !"".equals(valorCampo)) {
1677
1678 String dataInclusaoRegdFimStr = valorCampo;
1679
1680
1681
1682 dataInclusaoRegdFimStr = dataInclusaoRegdFimStr.substring(3, dataInclusaoRegdFimStr.lastIndexOf("/") + 1) + dataInclusaoRegdFimStr.substring(0, dataInclusaoRegdFimStr.indexOf("/") + 1) + dataInclusaoRegdFimStr.substring(dataInclusaoRegdFimStr.lastIndexOf("/") + 1);
1683
1684 Date dataInclusaoRegdFim = new Date(dataInclusaoRegdFimStr);
1685
1686 if (regDemandaRegd.getDataInclusaoRegd() == null ||
1687
1688
1689 regDemandaRegd.getDataInclusaoRegd().compareTo(dataInclusaoRegdFim) > 0) {
1690 itRegDemandas.remove();
1691 continue;
1692 }
1693 }
1694
1695 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("dataSituacaoRegd_Inicio"));
1696 if (valorCampo != null && !"".equals(valorCampo)) {
1697
1698 String dataSituacaoRegdInicioStr = valorCampo;
1699
1700
1701
1702 dataSituacaoRegdInicioStr = dataSituacaoRegdInicioStr.substring(3, dataSituacaoRegdInicioStr.lastIndexOf("/") + 1) + dataSituacaoRegdInicioStr.substring(0, dataSituacaoRegdInicioStr.indexOf("/") + 1) + dataSituacaoRegdInicioStr.substring(dataSituacaoRegdInicioStr.lastIndexOf("/") + 1);
1703
1704 Date dataSituacaoRegdInicio = new Date(dataSituacaoRegdInicioStr);
1705
1706 if (regDemandaRegd.getDataSituacaoRegd() == null ||
1707
1708
1709 regDemandaRegd.getDataSituacaoRegd().compareTo(dataSituacaoRegdInicio) < 0) {
1710 itRegDemandas.remove();
1711 continue;
1712 }
1713 }
1714
1715 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("dataSituacaoRegd_Fim"));
1716 if (valorCampo != null && !"".equals(valorCampo)) {
1717
1718 String dataSituacaoRegdFimStr = valorCampo;
1719
1720
1721
1722 dataSituacaoRegdFimStr = dataSituacaoRegdFimStr.substring(3, dataSituacaoRegdFimStr.lastIndexOf("/") + 1) + dataSituacaoRegdFimStr.substring(0, dataSituacaoRegdFimStr.indexOf("/") + 1) + dataSituacaoRegdFimStr.substring(dataSituacaoRegdFimStr.lastIndexOf("/") + 1);
1723
1724 Date dataSituacaoRegdFim = new Date(dataSituacaoRegdFimStr);
1725
1726 if (regDemandaRegd.getDataSituacaoRegd() == null ||
1727
1728
1729 regDemandaRegd.getDataSituacaoRegd().compareTo(dataSituacaoRegdFim) > 0) {
1730 itRegDemandas.remove();
1731 continue;
1732 }
1733 }
1734
1735 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("contLocal"));
1736 boolean localNaoEncontrado = false;
1737
1738 int numLocais = Integer.parseInt(valorCampo);
1739 for (int i = 1; i <= numLocais; i++) {
1740 if ("S".equals(Pagina.trocaNull(parametrosFiltroDemanda.get("adicionaLocal" + i)))) {
1741 LocalItemLit local = new LocalItemLit();
1742 local = (LocalItemLit) super.buscar(LocalItemLit.class, Long.valueOf(Pagina.trocaNull(parametrosFiltroDemanda.get("codLit" + i))));
1743
1744 if (!regDemandaRegd.getLocalDemandaLdems().contains(local)) {
1745 localNaoEncontrado = true;
1746 itRegDemandas.remove();
1747 break;
1748 }
1749 }
1750 }
1751 if (localNaoEncontrado)
1752 continue;
1753
1754 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("contEntidade"));
1755 boolean entidadeNaoEncontrada = false;
1756
1757 int numEntidades = Integer.parseInt(valorCampo);
1758 for (int i = 1; i <= numEntidades; i++) {
1759 if ("S".equals(Pagina.trocaNull(parametrosFiltroDemanda.get("adicionaEntidade" + i)))) {
1760 EntidadeEnt entidade = new EntidadeEnt();
1761 entidade = (EntidadeEnt) super.buscar(EntidadeEnt.class, Long.valueOf(Pagina.trocaNull(parametrosFiltroDemanda.get("codEnt" + i))));
1762
1763 if (!regDemandaRegd.getEntidadeDemandaEntds().contains(entidade)) {
1764 entidadeNaoEncontrada = true;
1765 itRegDemandas.remove();
1766 break;
1767 }
1768 }
1769 }
1770 if (entidadeNaoEncontrada)
1771 continue;
1772
1773 valorCampo = Pagina.trocaNull(parametrosFiltroDemanda.get("contEntidadeOrgao"));
1774 boolean entidadeOrgaoNaoEncontrada = false;
1775
1776 int numEntidadeOrgaos = Integer.parseInt(valorCampo);
1777 for (int i = 1; i <= numEntidadeOrgaos; i++) {
1778 if ("S".equals(Pagina.trocaNull(parametrosFiltroDemanda.get("adicionaEntidadeOrgao" + i)))) {
1779 EntidadeEnt entidadeOrgao = new EntidadeEnt();
1780 entidadeOrgao = (EntidadeEnt) super.buscar(EntidadeEnt.class, Long.valueOf(Pagina.trocaNull(parametrosFiltroDemanda.get("codEntOrg" + i))));
1781
1782 if (!regDemandaRegd.getEntidadeOrgaoDemandaEntorgds().contains(entidadeOrgao)) {
1783 entidadeOrgaoNaoEncontrada = true;
1784 itRegDemandas.remove();
1785 break;
1786 }
1787 }
1788 }
1789 if (entidadeOrgaoNaoEncontrada)
1790 continue;
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802 if (filtrarAtributosLivres(parametrosFiltroDemanda, regDemandaRegd, itRegDemandas, atributosLivres)) {
1803 continue;
1804 }
1805 }
1806 }
1807
1808 return regDemandas;
1809 }
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822 private boolean filtrarAtributosLivres(Map parametrosFiltroDemanda, RegDemandaRegd regDemandaRegd, Iterator itRegDemandas, List atributosLivres) {
1823 boolean retorno = false;
1824 try {
1825
1826
1827
1828 boolean filtrarAtributoLivre = true;
1829 Iterator itAtributos = atributosLivres.iterator();
1830
1831 while (itAtributos.hasNext() && filtrarAtributoLivre) {
1832 ObjetoDemanda atributoDemanda = (ObjetoDemanda) itAtributos.next();
1833 SisGrupoAtributoSga grupoAtributo = atributoDemanda.iGetGrupoAtributosLivres();
1834
1835 String nomeCampo = "a" + grupoAtributo.getCodSga().toString();
1836 String tipoCampo = grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString();
1837
1838
1839
1840 if (tipoCampo.equals(SisTipoExibicGrupoDao.CHECKBOX) || tipoCampo.equals(SisTipoExibicGrupoDao.LISTBOX)) {
1841
1842 String[] atributos = (String[]) parametrosFiltroDemanda.get(nomeCampo);
1843 int numAtributos = 0;
1844 if (atributos != null) {
1845 numAtributos = atributos.length;
1846 }
1847 for (int i = 0; i < numAtributos && filtrarAtributoLivre; i++) {
1848 if (!getSisAtributosRegDem(regDemandaRegd, grupoAtributo.getCodSga()).contains((SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(atributos[i])))) {
1849
1850 itRegDemandas.remove();
1851 filtrarAtributoLivre = false;
1852 retorno = true;
1853 break;
1854 }
1855 }
1856 }
1857
1858 else if (tipoCampo.equals(SisTipoExibicGrupoDao.RADIO_BUTTON) || tipoCampo.equals(SisTipoExibicGrupoDao.COMBOBOX)) {
1859
1860 if (parametrosFiltroDemanda.get(nomeCampo) != null && !"".equals(Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo)))) {
1861
1862 if (!getSisAtributosRegDem(regDemandaRegd, grupoAtributo.getCodSga()).contains((SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo)))))) {
1863
1864 itRegDemandas.remove();
1865 filtrarAtributoLivre = false;
1866 retorno = true;
1867 break;
1868 }
1869 }
1870 }
1871
1872 else if (tipoCampo.equals(SisTipoExibicGrupoDao.TEXT) || tipoCampo.equals(SisTipoExibicGrupoDao.TEXTAREA)) {
1873
1874 if (parametrosFiltroDemanda.get(nomeCampo) != null && !"".equals(Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo)))) {
1875 List atributosTextTextArea = getRegDemandaSisAtributoRegdSatbsRegd(regDemandaRegd, grupoAtributo.getCodSga());
1876 if (atributosTextTextArea.size() == 0) {
1877
1878 itRegDemandas.remove();
1879 filtrarAtributoLivre = false;
1880 retorno = true;
1881 break;
1882 }
1883
1884 Iterator itAtributosTextTextArea = atributosTextTextArea.iterator();
1885
1886 while (itAtributosTextTextArea.hasNext() && filtrarAtributoLivre) {
1887 DemAtributoDema demAtributoDema = (DemAtributoDema) itAtributosTextTextArea.next();
1888 if (!demAtributoDema.getInformacao().toUpperCase().trim().contains((Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo))).toUpperCase().trim())) {
1889
1890 itRegDemandas.remove();
1891 filtrarAtributoLivre = false;
1892 retorno = true;
1893 break;
1894 }
1895
1896 }
1897 }
1898
1899 }
1900 else if (tipoCampo.equals(SisTipoExibicGrupoDao.MULTITEXTO)) {
1901
1902 List lAtrib = new ArrayList();
1903 if (parametrosFiltroDemanda.get("listaNomesAtributosRequest") != null)
1904 lAtrib = (ArrayList) parametrosFiltroDemanda.get("listaNomesAtributosRequest");
1905 Iterator lAtribIt = lAtrib.iterator();
1906
1907 while (lAtribIt.hasNext() && filtrarAtributoLivre) {
1908 nomeCampo = Pagina.trocaNull(lAtribIt.next());
1909 if (nomeCampo.startsWith("a" + grupoAtributo.getCodSga().toString())) {
1910 if (parametrosFiltroDemanda.get(nomeCampo) != null && !"".equals(Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo)))) {
1911 String codSisAtrib = nomeCampo.substring(nomeCampo.lastIndexOf("_") + 1);
1912 SisAtributoSatb sisAtributoSatb = (SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(codSisAtrib));
1913 List atributosMultiText = getRegDemandaSisAtributoRegdSatbsRegd(regDemandaRegd, grupoAtributo.getCodSga());
1914 if (atributosMultiText.size() == 0 || !getSisAtributosRegDem(regDemandaRegd, grupoAtributo.getCodSga()).contains(sisAtributoSatb)) {
1915
1916 itRegDemandas.remove();
1917 filtrarAtributoLivre = false;
1918 retorno = true;
1919 break;
1920 }
1921 Iterator itAtributosMultiTexto = atributosMultiText.iterator();
1922
1923 while (itAtributosMultiTexto.hasNext() && filtrarAtributoLivre) {
1924 DemAtributoDema demAtributoDema = (DemAtributoDema) itAtributosMultiTexto.next();
1925 if (demAtributoDema.getSisAtributoSatb().getCodSatb().toString().equals(codSisAtrib)) {
1926 if (!demAtributoDema.getInformacao().toUpperCase().trim().contains((Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo))).toUpperCase().trim())) {
1927
1928 itRegDemandas.remove();
1929 filtrarAtributoLivre = false;
1930 retorno = true;
1931 break;
1932 }
1933 }
1934 }
1935 }
1936 }
1937 }
1938
1939 }
1940 else if (tipoCampo.equals(SisTipoExibicGrupoDao.VALIDACAO)) {
1941
1942 nomeCampo = "a" + grupoAtributo.getCodSga() + "_Inicio";
1943 String filtroParametro = Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo));
1944 if (parametrosFiltroDemanda.get(nomeCampo) != null && !"".equals(Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo)))) {
1945
1946 List atributosValidacao = getRegDemandaSisAtributoRegdSatbsRegd(regDemandaRegd, grupoAtributo.getCodSga());
1947
1948 if (atributosValidacao.size() == 0) {
1949
1950 itRegDemandas.remove();
1951 filtrarAtributoLivre = false;
1952 retorno = true;
1953 break;
1954 }
1955
1956 Iterator itAtributosValidacao = atributosValidacao.iterator();
1957
1958 while (itAtributosValidacao.hasNext() && filtrarAtributoLivre) {
1959 DemAtributoDema demAtributoDema = (DemAtributoDema) itAtributosValidacao.next();
1960
1961 if (demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("dataScript")) {
1962
1963
1964
1965 filtroParametro = filtroParametro.substring(3, filtroParametro.lastIndexOf("/") + 1) + filtroParametro.substring(0, filtroParametro.indexOf("/") + 1) + filtroParametro.substring(filtroParametro.lastIndexOf("/") + 1);
1966
1967 Date dataFiltro = new Date(filtroParametro);
1968
1969 String valorAtribLivre = demAtributoDema.getInformacao();
1970
1971
1972
1973 valorAtribLivre = valorAtribLivre.substring(3, valorAtribLivre.lastIndexOf("/") + 1) + valorAtribLivre.substring(0, valorAtribLivre.indexOf("/") + 1) + valorAtribLivre.substring(valorAtribLivre.lastIndexOf("/") + 1);
1974
1975 Date dataAtribLivre = new Date(valorAtribLivre);
1976
1977
1978 if (dataAtribLivre.compareTo(dataFiltro) < 0) {
1979
1980 itRegDemandas.remove();
1981 filtrarAtributoLivre = false;
1982 retorno = true;
1983 break;
1984 }
1985
1986 }
1987 else if (demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroInteiroScript") || demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroRealScript") || demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("valorMonetarioScript")) {
1988
1989 filtroParametro = filtroParametro.replace(".", "");
1990 filtroParametro = filtroParametro.replace(",", ".");
1991
1992 BigDecimal valorFiltro = new BigDecimal(filtroParametro);
1993
1994 BigDecimal valorAtribLivre = new BigDecimal(demAtributoDema.getInformacao().replace(".", "").replace(",", "."));
1995
1996
1997
1998 if (valorAtribLivre.doubleValue() < valorFiltro.doubleValue()) {
1999
2000 itRegDemandas.remove();
2001 filtrarAtributoLivre = false;
2002 retorno = true;
2003 break;
2004 }
2005 }
2006 }
2007 }
2008
2009 nomeCampo = "a" + grupoAtributo.getCodSga().toString() + "_Fim";
2010 filtroParametro = Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo));
2011 if (parametrosFiltroDemanda.get(nomeCampo) != null && !"".equals(Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo)))) {
2012
2013 List atributosValidacao = getRegDemandaSisAtributoRegdSatbsRegd(regDemandaRegd, grupoAtributo.getCodSga());
2014
2015 if (atributosValidacao.size() == 0) {
2016
2017 itRegDemandas.remove();
2018 filtrarAtributoLivre = false;
2019 retorno = true;
2020 break;
2021 }
2022
2023 Iterator itAtributosValidacao = atributosValidacao.iterator();
2024
2025 while (itAtributosValidacao.hasNext() && filtrarAtributoLivre) {
2026 DemAtributoDema demAtributoDema = (DemAtributoDema) itAtributosValidacao.next();
2027
2028 if (demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("dataScript")) {
2029
2030
2031
2032 filtroParametro = filtroParametro.substring(3, filtroParametro.lastIndexOf("/") + 1) + filtroParametro.substring(0, filtroParametro.indexOf("/") + 1) + filtroParametro.substring(filtroParametro.lastIndexOf("/") + 1);
2033
2034 Date dataFiltro = new Date(filtroParametro);
2035
2036 String valorAtribLivre = demAtributoDema.getInformacao();
2037
2038
2039
2040 valorAtribLivre = valorAtribLivre.substring(3, valorAtribLivre.lastIndexOf("/") + 1) + valorAtribLivre.substring(0, valorAtribLivre.indexOf("/") + 1) + valorAtribLivre.substring(valorAtribLivre.lastIndexOf("/") + 1);
2041
2042 Date dataAtribLivre = new Date(valorAtribLivre);
2043
2044
2045 if (dataAtribLivre.compareTo(dataFiltro) > 0) {
2046
2047 itRegDemandas.remove();
2048 filtrarAtributoLivre = false;
2049 retorno = true;
2050 break;
2051 }
2052
2053 }
2054 else if (demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroInteiroScript") || demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroRealScript") || demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("valorMonetarioScript")) {
2055
2056 filtroParametro = filtroParametro.replace(".", "");
2057 filtroParametro = filtroParametro.replace(",", ".");
2058
2059 BigDecimal valorFiltro = new BigDecimal(filtroParametro);
2060
2061 BigDecimal valorAtribLivre = new BigDecimal(demAtributoDema.getInformacao().replace(".", "").replace(",", "."));
2062
2063
2064
2065 if (valorAtribLivre.doubleValue() > valorFiltro.doubleValue()) {
2066
2067 itRegDemandas.remove();
2068 filtrarAtributoLivre = false;
2069 retorno = true;
2070 break;
2071 }
2072 }
2073
2074 }
2075 }
2076
2077 nomeCampo = "a" + grupoAtributo.getCodSga();
2078 filtroParametro = Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo));
2079 if (parametrosFiltroDemanda.get(nomeCampo) != null && !"".equals(Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo)))) {
2080
2081 List atributosValidacao = getRegDemandaSisAtributoRegdSatbsRegd(regDemandaRegd, grupoAtributo.getCodSga());
2082
2083 if (atributosValidacao.size() == 0) {
2084
2085 itRegDemandas.remove();
2086 filtrarAtributoLivre = false;
2087 retorno = true;
2088 break;
2089 }
2090
2091 Iterator itAtributosValidacao = atributosValidacao.iterator();
2092
2093 while (itAtributosValidacao.hasNext() && filtrarAtributoLivre) {
2094 DemAtributoDema demAtributoDema = (DemAtributoDema) itAtributosValidacao.next();
2095
2096 if (!demAtributoDema.getInformacao().toUpperCase().contains(filtroParametro.toUpperCase())) {
2097
2098 itRegDemandas.remove();
2099 filtrarAtributoLivre = false;
2100 retorno = true;
2101 break;
2102 }
2103 }
2104 }
2105 }
2106 }
2107
2108 } catch (Exception e) {
2109
2110 e.printStackTrace();
2111 }
2112
2113 return retorno;
2114 }
2115
2116 private boolean aplicarRestricaoGruposUsuario(RegDemandaRegd regDemandaRegd, UsuarioUsu usuario, Set gruposAcesso) {
2117
2118 boolean restringirPorUSuario = true;
2119
2120 try {
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131 List<Long> listCodGruposAcesso = new ArrayList<Long>();
2132 for (Iterator iter = gruposAcesso.iterator(); iter.hasNext();) {
2133 SisAtributoSatb grupoAcesso = (SisAtributoSatb) iter.next();
2134 listCodGruposAcesso.add(grupoAcesso.getCodSatb());
2135 }
2136
2137 Set usuarioAtributos = regDemandaRegd.getUsuarioUsuByCodUsuInclusaoRegd().getUsuarioAtributoUsuas();
2138
2139 Iterator itUsuarioAtributos = usuarioAtributos.iterator();
2140
2141 while (itUsuarioAtributos.hasNext()) {
2142
2143 UsuarioAtributoUsua usuarioAtributo = (UsuarioAtributoUsua) itUsuarioAtributos.next();
2144
2145 if (listCodGruposAcesso.contains(usuarioAtributo.getComp_id().getCodSatb())) {
2146 restringirPorUSuario = false;
2147 }
2148 }
2149
2150 } catch (Exception e) {
2151
2152 e.printStackTrace();
2153 }
2154
2155 return restringirPorUSuario;
2156 }
2157
2158 private boolean aplicarRestricaoUsuarioEntidadeOrgaoDemanda(RegDemandaRegd regDemandaRegd, UsuarioUsu usuario) {
2159
2160 boolean retorno = false;
2161
2162 try {
2163
2164 Set entidadesUsuario = usuario.getEntidadeEnts();
2165
2166 Iterator itEntidadesOrgaosDemanda = regDemandaRegd.getEntidadeOrgaoDemandaEntorgds().iterator();
2167
2168 boolean usuarioContemAlgumaEntidadeOrgaoDemanda = false;
2169
2170 while (itEntidadesOrgaosDemanda.hasNext()) {
2171
2172 EntidadeEnt entidadeOrgaoDemanda = (EntidadeEnt) itEntidadesOrgaosDemanda.next();
2173
2174 if (entidadesUsuario.contains(entidadeOrgaoDemanda)) {
2175 usuarioContemAlgumaEntidadeOrgaoDemanda = true;
2176 break;
2177 }
2178
2179 }
2180
2181 if (!usuarioContemAlgumaEntidadeOrgaoDemanda) {
2182
2183 return true;
2184
2185 }
2186
2187 } catch (Exception e) {
2188
2189 e.printStackTrace();
2190 }
2191
2192 return retorno;
2193 }
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206 private boolean aplicarRestricaoAtributosLivresRestritivos(RegDemandaRegd regDemandaRegd, List atributosLivres, UsuarioUsu usuario) {
2207
2208 boolean retorno = true;
2209
2210 try {
2211
2212 boolean filtrarAtributoLivre = true;
2213 Iterator itAtributos = atributosLivres.iterator();
2214
2215
2216 Set usuarioAtributos = usuario.getUsuarioAtributoUsuas();
2217 List codAtributosUsuarios = new ArrayList();
2218 Iterator itUsuarioAtributos = usuarioAtributos.iterator();
2219
2220 while (itUsuarioAtributos.hasNext()) {
2221
2222 UsuarioAtributoUsua usuarioAtributo = (UsuarioAtributoUsua) itUsuarioAtributos.next();
2223
2224 codAtributosUsuarios.add(usuarioAtributo.getComp_id().getCodSatb());
2225
2226 }
2227
2228 while (itAtributos.hasNext() && filtrarAtributoLivre) {
2229 retorno = false;
2230 ObjetoDemanda atributoDemanda = (ObjetoDemanda) itAtributos.next();
2231 SisGrupoAtributoSga grupoAtributo = atributoDemanda.iGetGrupoAtributosLivres();
2232
2233 String nomeCampo = "a" + grupoAtributo.getCodSga().toString();
2234 String tipoCampo = grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString();
2235 String tipoCampoCadastroUsuario = "";
2236
2237 if (grupoAtributo.getSisTipoExibicGrupoCadUsuSteg() != null)
2238 tipoCampoCadastroUsuario = grupoAtributo.getSisTipoExibicGrupoCadUsuSteg().getCodSteg().toString();
2239
2240
2241
2242 if ((tipoCampo.equals(SisTipoExibicGrupoDao.CHECKBOX) || tipoCampo.equals(SisTipoExibicGrupoDao.LISTBOX) || tipoCampo.equals(SisTipoExibicGrupoDao.RADIO_BUTTON) || tipoCampo.equals(SisTipoExibicGrupoDao.COMBOBOX)) && (tipoCampoCadastroUsuario.equals(SisTipoExibicGrupoDao.CHECKBOX) || tipoCampoCadastroUsuario.equals(SisTipoExibicGrupoDao.LISTBOX) || tipoCampoCadastroUsuario.equals(SisTipoExibicGrupoDao.RADIO_BUTTON) || tipoCampoCadastroUsuario.equals(SisTipoExibicGrupoDao.COMBOBOX))) {
2243 List atributos = getSisAtributosRegDem(regDemandaRegd, grupoAtributo.getCodSga());
2244
2245 int numAtributos = 0;
2246 if (atributos != null) {
2247 numAtributos = atributos.size();
2248 }
2249 boolean demandaPossuiAlgumAtributoUsuario = false;
2250 for (int i = 0; i < numAtributos && filtrarAtributoLivre; i++) {
2251 if (codAtributosUsuarios.contains(((SisAtributoSatb) atributos.get(i)).getCodSatb())) {
2252 demandaPossuiAlgumAtributoUsuario = true;
2253 break;
2254 }
2255 }
2256 if (!demandaPossuiAlgumAtributoUsuario) {
2257 return true;
2258 }
2259 }
2260
2261 }
2262
2263 } catch (Exception e) {
2264
2265 e.printStackTrace();
2266 }
2267
2268 return retorno;
2269 }
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281 public List getAtributosDemandaEhFiltro() throws ECARException {
2282 List retorno = new ArrayList();
2283
2284 try {
2285 StringBuilder query = new StringBuilder("select atributoDemanda from AtributoDemandaAtbdem as atributoDemanda").append(" where atributoDemanda.indAtivoAtbdem = 'S' and atributoDemanda.indFiltroAtbdem = 'S'").append(" order by atributoDemanda.seqApresTelaCampoAtbdem asc");
2286 Query q = this.getSession().createQuery(query.toString());
2287
2288 retorno = q.list();
2289
2290 } catch (HibernateException e) {
2291 this.logger.error(e);
2292 throw new ECARException("erro.hibernateException");
2293 }
2294 return retorno;
2295 }
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307 public List getAtributosLivresDemandaEhFiltro() throws ECARException {
2308 List retorno = new ArrayList();
2309
2310 try {
2311 StringBuilder query = new StringBuilder("select atributoDemanda from AtributoDemandaAtbdem as atributoDemanda").append(" where atributoDemanda.indAtivoAtbdem = 'S' and atributoDemanda.indFiltroAtbdem = 'S'").append(" and atributoDemanda.sisGrupoAtributoSga is not null").append(" order by atributoDemanda.seqApresTelaCampoAtbdem asc");
2312 Query q = this.getSession().createQuery(query.toString());
2313
2314 retorno = q.list();
2315
2316 } catch (HibernateException e) {
2317 this.logger.error(e);
2318 throw new ECARException("erro.hibernateException");
2319 }
2320 return retorno;
2321 }
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333 public List getAtributosLivresDemandaEhRestritivo() throws ECARException {
2334 List retorno = new ArrayList();
2335
2336 try {
2337 StringBuilder query = new StringBuilder("select atributoDemanda from AtributoDemandaAtbdem as atributoDemanda").append(" where atributoDemanda.indAtivoAtbdem = 'S' and atributoDemanda.indRestritivo = 'S'").append(" and atributoDemanda.sisGrupoAtributoSga is not null").append(" order by atributoDemanda.seqApresTelaCampoAtbdem asc");
2338 Query q = this.getSession().createQuery(query.toString());
2339
2340 retorno = q.list();
2341
2342 } catch (HibernateException e) {
2343 this.logger.error(e);
2344 throw new ECARException("erro.hibernateException");
2345 }
2346 return retorno;
2347 }
2348
2349
2350
2351
2352
2353
2354
2355 public List getSisAtributosRegDem(RegDemandaRegd regDemandaRegd, Long codSisGrupoAtributo) {
2356 List listaRetorno = new ArrayList();
2357 if (regDemandaRegd.getDemAtributoDemas() != null) {
2358 Iterator it = regDemandaRegd.getDemAtributoDemas().iterator();
2359 while (it.hasNext()) {
2360 DemAtributoDema demAtributoDema = (DemAtributoDema) it.next();
2361 if (demAtributoDema.getSisAtributoSatb().getSisGrupoAtributoSga().getCodSga().equals(codSisGrupoAtributo)) {
2362 listaRetorno.add(demAtributoDema.getSisAtributoSatb());
2363 }
2364 }
2365 }
2366
2367 return listaRetorno;
2368
2369 }
2370
2371
2372
2373
2374
2375
2376
2377 public List getRegDemandaSisAtributoRegdSatbsRegd(RegDemandaRegd regDemanda, Long codSisGrupoAtributo) {
2378 List listaRetorno = new ArrayList();
2379 if (regDemanda.getDemAtributoDemas() != null) {
2380 Iterator it = regDemanda.getDemAtributoDemas().iterator();
2381 while (it.hasNext()) {
2382 DemAtributoDema demAtributoDema = (DemAtributoDema) it.next();
2383 if (demAtributoDema.getSisAtributoSatb().getSisGrupoAtributoSga().getCodSga().equals(codSisGrupoAtributo)) {
2384 listaRetorno.add(demAtributoDema);
2385 }
2386 }
2387 }
2388
2389 return listaRetorno;
2390
2391 }
2392
2393 public List getDemandasAClassificar(RegDemandaRegd regDemandaPesq, boolean ehFiltro, UsuarioUsu usuario) throws HibernateException, ECARException {
2394
2395 List retorno = null;
2396 try {
2397 StringBuilder query = new StringBuilder(" select regDemanda from RegDemandaRegd as regDemanda ").append(" join regDemanda.sitDemandaSitd as situacaoDemanda ").append(" where situacaoDemanda.indPrimeiraSituacaoSitd = 'S'").append(" order by regDemanda.codRegd asc ");
2398
2399 Query q = this.getSession().createQuery(query.toString());
2400
2401 retorno = q.list();
2402
2403
2404
2405 if (ehFiltro)
2406 retorno = aplicarFiltrosDinamicosRegDemanda(retorno);
2407
2408 } catch (HibernateException e) {
2409 this.logger.error(e);
2410 throw new ECARException(e);
2411 }
2412
2413 return retorno;
2414 }
2415
2416 }