1
2
3
4 package ecar.dao;
5
6 import java.util.ArrayList;
7 import java.util.HashSet;
8 import java.util.Iterator;
9 import java.util.List;
10 import java.util.Set;
11
12 import javax.servlet.http.HttpServletRequest;
13
14 import org.hibernate.HibernateException;
15 import org.hibernate.Query;
16 import org.hibernate.Transaction;
17
18 import comum.database.Dao;
19 import comum.util.Pagina;
20 import comum.util.Util;
21
22 import ecar.bean.AtributoEstruturaBean;
23 import ecar.exception.ECARException;
24 import ecar.pojo.AtributosAtb;
25 import ecar.pojo.EstAtribTipoAcompEata;
26 import ecar.pojo.EstruturaAtributoEttat;
27 import ecar.pojo.EstruturaEtt;
28 import ecar.pojo.ItemEstruturaIett;
29 import ecar.pojo.ItemEstruturaSisAtributoIettSatb;
30 import ecar.pojo.TipoAcompanhamentoTa;
31 import ecar.pojo.TipoFuncAcompTpfa;
32 import ecar.taglib.util.Input;
33
34
35
36
37 public class EstruturaAtributoDao extends Dao {
38
39
40
41
42
43
44
45
46 public EstruturaAtributoDao(HttpServletRequest request) {
47 super();
48 this.request = request;
49
50
51
52
53 }
54
55
56
57
58
59
60
61
62
63 public void controlaListas(HttpServletRequest request, List listaEstrutura, List listaAtributo) throws ECARException {
64
65 if (Pagina.getParam(request, "estruturaEtt") != null) {
66 listaAtributo.addAll(this.getAtributos((EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(Pagina.getParam(request, "estruturaEtt")))));
67 }
68 else {
69 listaAtributo.addAll(new AtributoDao(request).listar(AtributosAtb.class, new String[] { "nomeAtb", "asc" }));
70 }
71
72 if (Pagina.getParam(request, "atributosAtb") != null) {
73 listaEstrutura.addAll(this.getEstruturas((AtributosAtb) new AtributoDao(request).buscar(AtributosAtb.class, Long.valueOf(Pagina.getParam(request, "atributosAtb")))));
74 }
75 else {
76 listaEstrutura.addAll(new EstruturaDao(request).listar(EstruturaEtt.class, new String[] { "nomeEtt", "asc" }));
77 }
78
79 }
80
81
82
83
84
85
86
87
88 public void alterar(HttpServletRequest request, EstruturaAtributoEttat estruturaAtributo) throws ECARException, HibernateException {
89 EstAtribTipoAcompEataDao eataDao = new EstAtribTipoAcompEataDao(null);
90 TipoAcompanhamentoDao taDao = new TipoAcompanhamentoDao(null);
91 Transaction tx = null;
92 try {
93 tx = this.session.beginTransaction();
94
95
96
97
98 this.setEstruturaAtributo(request, estruturaAtributo, true);
99 session.update(estruturaAtributo);
100
101
102
103
104
105 String codTas = Pagina.getParamStr(request, "codTas");
106 ArrayList<Long> tas = new ArrayList<Long>();
107
108 String codTemp = "";
109 for (int i = 0; i < codTas.length(); i++) {
110 if (!codTas.substring(i, i + 1).equals("|")) {
111 codTemp = codTemp + codTas.substring(i, i + 1);
112 }
113 else {
114 if (!codTemp.trim().equals("")) {
115 tas.add(Long.valueOf(codTemp));
116 codTemp = "";
117 }
118 }
119 }
120 Iterator it = tas.iterator();
121 while (it.hasNext()) {
122 Long codigoTas = (Long) it.next();
123
124
125
126
127 TipoAcompanhamentoTa ta = (TipoAcompanhamentoTa) taDao.buscar(TipoAcompanhamentoTa.class, Long.valueOf(codigoTas));
128 if (ta != null) {
129
130
131
132
133 EstAtribTipoAcompEata eata = eataDao.getEstAtribTipoAcompEata(estruturaAtributo, ta);
134
135 if (eata == null) {
136 eata = new EstAtribTipoAcompEata();
137 eata.setEstruturaAtributoEttat(estruturaAtributo);
138 eata.setTipoAcompanhamentoTa(ta);
139 }
140
141 eata.setExibirEata(Pagina.getParamStr(request, "exibirEata" + ta.getCodTa().toString()));
142 if (!"".equals(Pagina.getParamStr(request, "sequenciaEata" + ta.getCodTa().toString()))) {
143 eata.setSequenciaEata(Long.valueOf(Pagina.getParamStr(request, "sequenciaEata" + ta.getCodTa().toString())));
144 }
145 else {
146 eata.setSequenciaEata(null);
147 }
148
149 eata.setFiltroEata(Pagina.getParamStr(request, "filtroEata" + ta.getCodTa().toString()));
150 if (eata.getCodEata() == null) {
151 session.save(eata);
152 }
153 else {
154 session.update(eata);
155 }
156 }
157 }
158
159 tx.commit();
160 } catch (Exception e) {
161 if (tx != null) {
162 tx.rollback();
163 }
164 this.logger.error(e);
165 throw new ECARException("erro.hibernateException");
166 }
167 }
168
169
170
171
172
173
174
175
176 public void setEstruturaAtributo(HttpServletRequest request, EstruturaAtributoEttat estruturaAtributo, boolean usarGetParamStr) throws ECARException {
177 if (Pagina.getParam(request, "estruturaEtt") != null)
178 estruturaAtributo.setEstruturaEtt((EstruturaEtt) (new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(Pagina.getParam(request, "estruturaEtt")))));
179 if (Pagina.getParam(request, "atributosAtb") != null)
180 estruturaAtributo.setAtributosAtb((AtributosAtb) new AtributoDao(request).buscar(AtributosAtb.class, Long.valueOf(Pagina.getParam(request, "atributosAtb"))));
181
182
183 if (Pagina.getParam(request, "labelTamanhoConteudo") != null)
184 estruturaAtributo.setTamanhoConteudoAtribEttat(Integer.valueOf(Pagina.getParamStr(request, "labelTamanhoConteudo")));
185 else
186 estruturaAtributo.setTamanhoConteudoAtribEttat(null);
187
188 if (usarGetParamStr) {
189 estruturaAtributo.setLabelEstruturaEttat(Pagina.getParamStr(request, "labelEstruturaEttat").trim());
190 estruturaAtributo.setIndObrigatorioEttat(Pagina.getParamOrDefault(request, "indObrigatorioEttat", Pagina.NAO));
191 estruturaAtributo.setIndPodeBloquearEttat(Pagina.getParamOrDefault(request, "indPodeBloquearEttat", Pagina.NAO));
192 estruturaAtributo.setIndFiltroEttat(Pagina.getParamOrDefault(request, "indFiltroEttat", Pagina.NAO));
193 estruturaAtributo.setIndListagemTelaEttat(Pagina.getParamOrDefault(request, "indListagemTelaEttat", Pagina.NAO));
194 estruturaAtributo.setIndRevisaoEttat(Pagina.getParamOrDefault(request, "indRevisaoEttat", Pagina.NAO));
195 estruturaAtributo.setIndListagemImpressCompEtta(Pagina.getParamOrDefault(request, "indListagemImpressCompEtta", Pagina.NAO));
196 estruturaAtributo.setIndListagemImpressaResEtta(Pagina.getParamOrDefault(request, "indListagemImpressaResEtta", Pagina.NAO));
197 estruturaAtributo.setIndRelacaoImpressaEttat(Pagina.getParamOrDefault(request, "indRelacaoImpressaEttat", Pagina.NAO));
198 }
199 else {
200 estruturaAtributo.setLabelEstruturaEttat(Pagina.getParam(request, "labelEstruturaEttat"));
201 estruturaAtributo.setIndObrigatorioEttat(Pagina.getParam(request, "indObrigatorioEttat"));
202 estruturaAtributo.setIndPodeBloquearEttat(Pagina.getParam(request, "indPodeBloquearEttat"));
203 estruturaAtributo.setIndFiltroEttat(Pagina.getParam(request, "indFiltroEttat"));
204 estruturaAtributo.setIndListagemTelaEttat(Pagina.getParam(request, "indListagemTelaEttat"));
205 estruturaAtributo.setIndRevisaoEttat(Pagina.getParam(request, "indRevisaoEttat"));
206 estruturaAtributo.setIndListagemImpressCompEtta(Pagina.getParam(request, "indListagemImpressCompEtta"));
207 estruturaAtributo.setIndListagemImpressaResEtta(Pagina.getParam(request, "indListagemImpressaResEtta"));
208 estruturaAtributo.setIndRelacaoImpressaEttat(Pagina.getParam(request, "indRelacaoImpressaEttat"));
209 }
210
211 if (Pagina.getParam(request, "seqApresentTelaCampoEttat") != null)
212 estruturaAtributo.setSeqApresentTelaCampoEttat(Integer.valueOf(Pagina.getParam(request, "seqApresentTelaCampoEttat")));
213
214
215 if (Pagina.getParam(request, "larguraListagemTelaEttat") != null)
216 estruturaAtributo.setLarguraListagemTelaEttat(Integer.valueOf(Pagina.getParam(request, "larguraListagemTelaEttat")));
217 else
218 estruturaAtributo.setLarguraListagemTelaEttat(null);
219 if (Pagina.getParam(request, "seqApresListagemTelaEttat") != null)
220 estruturaAtributo.setSeqApresListagemTelaEttat(Integer.valueOf(Pagina.getParam(request, "seqApresListagemTelaEttat")));
221 else
222 estruturaAtributo.setSeqApresListagemTelaEttat(null);
223 if (Pagina.getParam(request, "dicaEttat") != null)
224 estruturaAtributo.setDicaEttat(Pagina.getParam(request, "dicaEttat"));
225 else
226 estruturaAtributo.setDicaEttat(null);
227 if (Pagina.getParam(request, "documentacaoEttat") != null)
228 estruturaAtributo.setDocumentacaoEttat(Pagina.getParam(request, "documentacaoEttat"));
229 else
230 estruturaAtributo.setDocumentacaoEttat(null);
231 }
232
233
234
235
236
237
238
239
240
241 public Set setLimbTipoFuncAcompTpfa() {
242
243 Set<TipoFuncAcompTpfa> set = new HashSet<TipoFuncAcompTpfa>();
244
245 if (request.getParameterValues("limbTipoFuncAcompTpfa") != null) {
246 String strLibTipoFuncAcomp[] = request.getParameterValues("limbTipoFuncAcompTpfa");
247 Long codTpfa = null;
248
249 try {
250 for (int i = 0; i < strLibTipoFuncAcomp.length; i++) {
251 codTpfa = Long.parseLong(strLibTipoFuncAcomp[i]);
252 TipoFuncAcompTpfa tipoFuncAcomp = (TipoFuncAcompTpfa) this.buscar(TipoFuncAcompTpfa.class, codTpfa);
253
254 set.add(tipoFuncAcomp);
255 }
256 } catch (ECARException e) {
257
258 }
259
260 }
261
262 return set;
263 }
264
265
266
267
268
269
270
271
272 public String getLabelAtributoEstrutura(String nomeAtributo, EstruturaEtt estrutura) throws ECARException {
273 AtributosAtb atributo = new AtributosAtb();
274 atributo.setNomeAtb(nomeAtributo);
275 List atb = super.pesquisar(atributo, null);
276 if (atb.size() > 0) {
277 atributo = (AtributosAtb) atb.get(0);
278 EstruturaAtributoEttat estruturaAtributo = new EstruturaAtributoEttat();
279 estruturaAtributo.setAtributosAtb(atributo);
280 estruturaAtributo.setEstruturaEtt(estrutura);
281 List estAtb = super.pesquisar(estruturaAtributo, null);
282 if (estAtb.size() > 0)
283 return ((EstruturaAtributoEttat) estAtb.get(0)).getLabelEstruturaEttat();
284 else
285 return "";
286 }
287 return "";
288
289 }
290
291
292
293
294
295
296 public List getAtributos(EstruturaEtt estrutura) {
297 List retorno = new ArrayList();
298 if (estrutura.getEstruturaAtributoEttats() != null) {
299 Iterator it = estrutura.getEstruturaAtributoEttats().iterator();
300 while (it.hasNext()) {
301 EstruturaAtributoEttat estruturaAtributo = (EstruturaAtributoEttat) it.next();
302 retorno.add(estruturaAtributo.getAtributosAtb());
303 }
304 }
305 return retorno;
306 }
307
308
309
310
311
312
313 public List getEstruturas(AtributosAtb atributo) {
314 List retorno = new ArrayList();
315 if (atributo.getEstruturaAtributoEttats() != null) {
316 Iterator it = atributo.getEstruturaAtributoEttats().iterator();
317 while (it.hasNext()) {
318 EstruturaAtributoEttat estruturaAtributo = (EstruturaAtributoEttat) it.next();
319 retorno.add(estruturaAtributo.getEstruturaEtt());
320 }
321 }
322 return retorno;
323 }
324
325
326
327
328
329
330
331 public List getAtributosValidoEstruturas(TipoAcompanhamentoTa tipoAcomp) throws ECARException {
332 List retorno = new ArrayList();
333
334 List atributos = null;
335 if (tipoAcomp == null) {
336 atributos = this.getEstruturaAtributoEttatByEstruturaEtt(null);
337 }
338 else {
339 atributos = this.getEstruturaAtributoEttatByTipoAcompanhamentoTa(tipoAcomp);
340 }
341
342 if (atributos != null && !atributos.isEmpty()) {
343 Iterator itAtributos = atributos.iterator();
344 while (itAtributos.hasNext()) {
345 EstruturaAtributoEttat atributo = (EstruturaAtributoEttat) itAtributos.next();
346 AtributoEstruturaBean aeBean = new AtributoEstruturaBean();
347 aeBean.setAtributo(atributo);
348 aeBean.setEstrutura(atributo.getEstruturaEtt());
349 retorno.add(aeBean);
350 }
351 }
352
353 return retorno;
354 }
355
356
357
358
359
360
361
362
363
364 public String getDescricaoItemByAtributo(ItemEstruturaIett item, TipoAcompanhamentoTa tipoAcomp) throws ECARException {
365 ItemEstruturaDao itemDao = new ItemEstruturaDao(null);
366 String retorno = "";
367
368 List ettats = null;
369 if (tipoAcomp == null) {
370 ettats = this.getEstruturaAtributoEttatByEstruturaEtt(item.getEstruturaEtt());
371 }
372 else {
373 ettats = this.getEstruturaAtributoEttatByTipoAcompanhamentoTa(tipoAcomp);
374 }
375
376 if (ettats != null && !ettats.isEmpty()) {
377 Iterator it = ettats.iterator();
378 while (it.hasNext()) {
379 EstruturaAtributoEttat atributo = (EstruturaAtributoEttat) it.next();
380
381 if (tipoAcomp != null && !item.getEstruturaEtt().equals(atributo.getEstruturaEtt())) {
382 continue;
383 }
384 if (atributo.iGetGrupoAtributosLivres() != null) {
385 Iterator itIettSatbs = item.getItemEstruturaSisAtributoIettSatbs().iterator();
386 String informacaoIettSatb = "";
387 while (itIettSatbs.hasNext()) {
388 ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itIettSatbs.next();
389
390 if (itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getSisGrupoAtributoSga().equals(atributo.iGetGrupoAtributosLivres())) {
391 if (atributo.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.TEXT)) || atributo.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.TEXTAREA)) || atributo.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.MULTITEXTO)) || atributo.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.VALIDACAO))) {
392
393 informacaoIettSatb = informacaoIettSatb + itemEstruturaSisAtributoIettSatb.getInformacaoIettSatb() + "; ";
394
395 }
396 else if (!atributo.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.IMAGEM))) {
397
398 informacaoIettSatb = informacaoIettSatb + itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getDescricaoSatb() + "; ";
399 }
400 }
401 }
402 if (informacaoIettSatb.length() > 0) {
403 informacaoIettSatb = informacaoIettSatb.substring(0, informacaoIettSatb.length() - 2);
404 }
405 retorno += informacaoIettSatb + " - ";
406 }
407 else {
408 retorno += itemDao.getValorAtributoItemEstrutura(item, atributo.getAtributosAtb().getNomeAtb(), atributo.getAtributosAtb().getNomeFkAtb()) + " - ";
409 }
410 }
411 }
412
413 if (retorno.length() > 0)
414 retorno = retorno.substring(0, retorno.lastIndexOf(" - "));
415
416 return retorno;
417 }
418
419
420
421
422
423
424 public List getEstruturaAtributoEttatByEstruturaEtt(EstruturaEtt estrutura) throws ECARException {
425 try {
426 String select = "select ettat from EstruturaAtributoEttat ettat " + "where ettat.indListagemTelaEttat = 'S'";
427
428 if (estrutura != null)
429 select += " and ettat.estruturaEtt.codEtt = :codEtt";
430
431 select += " order by ettat.seqApresListagemTelaEttat asc";
432
433 Query q = this.session.createQuery(select);
434
435 if (estrutura != null)
436 q.setLong("codEtt", estrutura.getCodEtt().longValue());
437
438 return q.list();
439
440 } catch (HibernateException e) {
441 this.logger.error(e);
442 throw new ECARException("erro.hibernateException");
443 }
444 }
445
446
447
448
449
450
451 public List getEstruturaAtributoEttatByTipoAcompanhamentoTa(TipoAcompanhamentoTa tipoAcomp) throws ECARException {
452 List retorno = new ArrayList();
453 try {
454 StringBuilder select = new StringBuilder("select eata from EstAtribTipoAcompEata eata ").append(" where eata.tipoAcompanhamentoTa.codTa = :codTa ").append(" and eata.exibirEata = 'S' ").append(" order by eata.sequenciaEata asc");
455
456 Query q = this.session.createQuery(select.toString());
457
458 q.setLong("codTa", tipoAcomp.getCodTa().longValue());
459
460 List eatas = q.list();
461 if (eatas != null && !eatas.isEmpty()) {
462 Iterator it = eatas.iterator();
463 while (it.hasNext()) {
464 EstAtribTipoAcompEata eata = (EstAtribTipoAcompEata) it.next();
465 retorno.add(eata.getEstruturaAtributoEttat());
466 }
467 }
468
469 } catch (HibernateException e) {
470 this.logger.error(e);
471 throw new ECARException("erro.hibernateException");
472 }
473
474 return retorno;
475 }
476
477
478
479
480
481
482
483
484
485
486
487 public List getEstruturaAtributoEttatByEata(TipoAcompanhamentoTa tipoAcomp, String exibirEata, Long sequenciaEata, String filtroEata) throws ECARException {
488 List retorno = new ArrayList();
489 try {
490 String select = "select eata from EstAtribTipoAcompEata eata ";
491 String where = "";
492
493 if (tipoAcomp != null) {
494 where += "where eata.tipoAcompanhamentoTa.codTa = :tipoAcomp";
495 }
496
497 if (!"".equals(exibirEata)) {
498 if ("".equals(where)) {
499 where += " where ";
500 }
501 else {
502 where += " and ";
503 }
504 where += " eata.exibirEata = :exibirEata";
505 }
506
507 if (sequenciaEata != null) {
508 if ("".equals(where)) {
509 where += " where ";
510 }
511 else {
512 where += " and ";
513 }
514 where += " eata.sequenciaEata = :sequenciaEata";
515 }
516
517 if (!"".equals(filtroEata)) {
518 if ("".equals(where)) {
519 where += " where ";
520 }
521 else {
522 where += " and ";
523 }
524 where += " eata.filtroEata = :filtroEata";
525 }
526
527 Query q = this.session.createQuery(select + where);
528
529 if (tipoAcomp != null)
530 q.setLong("tipoAcomp", tipoAcomp.getCodTa().longValue());
531
532 if (!"".equals(exibirEata))
533 q.setString("exibirEata", exibirEata);
534
535 if (sequenciaEata != null)
536 q.setLong("sequenciaEata", sequenciaEata.longValue());
537
538 if (!"".equals(filtroEata)) {
539 q.setString("filtroEata", filtroEata);
540 }
541
542 List eatas = q.list();
543 if (eatas != null && !eatas.isEmpty()) {
544 Iterator it = eatas.iterator();
545 while (it.hasNext()) {
546 EstAtribTipoAcompEata eata = (EstAtribTipoAcompEata) it.next();
547 retorno.add(eata.getEstruturaAtributoEttat());
548 }
549 }
550
551 } catch (HibernateException e) {
552 this.logger.error(e);
553 throw new ECARException("erro.hibernateException");
554 }
555
556 return retorno;
557 }
558
559
560
561
562
563
564
565
566
567 public List filtrarEstruturaAtributoByEata(List estruturaAtributos, List estAtribTipoAcomp) throws ECARException {
568 boolean possuiTiposAcomps = (estAtribTipoAcomp != null && estAtribTipoAcomp.size() > 0) ? true : false;
569 boolean possuiEttats = (estruturaAtributos != null && estruturaAtributos.size() > 0) ? true : false;
570
571 if (possuiTiposAcomps && possuiEttats) {
572 List estruturaAtributosFiltrados = new ArrayList();
573 Iterator it = estAtribTipoAcomp.iterator();
574 while (it.hasNext()) {
575 EstAtribTipoAcompEata eata = (EstAtribTipoAcompEata) it.next();
576
577 List ettats = this.getEstruturaAtributoEttatByEata(eata.getTipoAcompanhamentoTa(), eata.getExibirEata(), eata.getSequenciaEata(), eata.getFiltroEata());
578 Iterator itEt = ettats.iterator();
579 while (itEt.hasNext()) {
580 EstruturaAtributoEttat ettat = (EstruturaAtributoEttat) itEt.next();
581 if (!estruturaAtributosFiltrados.contains(ettat))
582 estruturaAtributosFiltrados.add(ettat);
583 }
584 }
585
586 return new ArrayList(Util.intersecao(estruturaAtributos, estruturaAtributosFiltrados));
587 }
588 else {
589 return estruturaAtributos;
590 }
591 }
592 }