1
2
3
4 package ecar.dao;
5
6 import java.util.ArrayList;
7 import java.util.Enumeration;
8 import java.util.HashSet;
9 import java.util.Iterator;
10 import java.util.List;
11 import java.util.Set;
12
13 import javax.servlet.http.HttpServletRequest;
14
15 import org.hibernate.HibernateException;
16 import org.hibernate.Transaction;
17
18 import comum.database.Dao;
19 import comum.util.Data;
20 import comum.util.Pagina;
21
22 import ecar.exception.ECARException;
23 import ecar.pojo.EnderecoEnd;
24 import ecar.pojo.EntidadeAtributoEnta;
25 import ecar.pojo.EntidadeEnt;
26 import ecar.pojo.LocalItemLit;
27 import ecar.pojo.PaiFilho;
28 import ecar.pojo.SisAtributoSatb;
29 import ecar.pojo.SisGrupoAtributoSga;
30 import ecar.pojo.TelefoneTel;
31 import ecar.pojo.TipoEnderecoTend;
32 import ecar.pojo.Uf;
33
34
35
36
37 public class EntidadeDao extends Dao {
38
39
40
41
42 public EntidadeDao(HttpServletRequest request) {
43 super();
44 this.request = request;
45 }
46
47
48
49
50
51
52
53 public void setEntidade(HttpServletRequest request, EntidadeEnt entidade, boolean paramStr) throws ECARException {
54 if (paramStr) {
55 entidade.setCpfCnpjEnt(Pagina.getParamStr(request, "cpfCnpjEnt"));
56 entidade.setEmailEnt(Pagina.getParamStr(request, "emailEnt"));
57 entidade.setIndAtivoEnt(Pagina.getParamStr(request, "indAtivoEnt"));
58 entidade.setIndOrgaoEnt(Pagina.getParamStr(request, "indOrgaoEnt"));
59 entidade.setNomeEnt(Pagina.getParamStr(request, "nomeEnt"));
60 entidade.setSiglaEnt(Pagina.getParamStr(request, "siglaEnt"));
61 }
62 else {
63 entidade.setCpfCnpjEnt(Pagina.getParam(request, "cpfCnpjEnt"));
64 entidade.setEmailEnt(Pagina.getParam(request, "emailEnt"));
65 entidade.setIndAtivoEnt(Pagina.getParam(request, "indAtivoEnt"));
66 entidade.setIndOrgaoEnt(Pagina.getParam(request, "indOrgaoEnt"));
67 entidade.setNomeEnt(Pagina.getParam(request, "nomeEnt"));
68 entidade.setSiglaEnt(Pagina.getParam(request, "siglaEnt"));
69 }
70
71 setTelefonesEntidade(request, entidade);
72 setEnderecosEntidade(request, entidade);
73 setLocaisEntidade(request, entidade);
74 setAtributosEntidade(request, entidade);
75 }
76
77
78
79
80
81
82
83 public void setAtributosEntidade(HttpServletRequest request, EntidadeEnt entidade) throws ECARException {
84 entidade.setEntidadeAtributoEntas(null);
85 List lAtributos;
86 lAtributos = new SisGrupoAtributoDao(request).getGruposAtributosCadastro("E");
87 Iterator it = lAtributos.iterator();
88 while (it.hasNext()) {
89 SisGrupoAtributoSga grupoAtributo = (SisGrupoAtributoSga) it.next();
90 if (!"".equals(Pagina.getParamStr(request, "a" + grupoAtributo.getCodSga().toString()))) {
91 EntidadeAtributoEnta entidadeAtributo = new EntidadeAtributoEnta();
92 entidadeAtributo.setEntidadeEnt(entidade);
93
94
95
96
97 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())) {
98 if (grupoAtributo.getSisAtributoSatbs() != null && grupoAtributo.getSisAtributoSatbs().size() > 0) {
99 entidadeAtributo.setInformacao(Pagina.getParamStr(request, "a" + grupoAtributo.getCodSga().toString()));
100 entidadeAtributo.setSisAtributoSatb((SisAtributoSatb) grupoAtributo.getSisAtributoSatbs().iterator().next());
101 entidadeAtributo.setDataInclusao(Data.getDataAtual());
102 if (entidade.getEntidadeAtributoEntas() == null)
103 entidade.setEntidadeAtributoEntas(new HashSet());
104 entidade.getEntidadeAtributoEntas().add(entidadeAtributo);
105 }
106 }
107 else {
108
109 String[] atributos = request.getParameterValues("a" + grupoAtributo.getCodSga().toString());
110 for (int i = 0; i < atributos.length; i++) {
111
112
113
114
115 entidadeAtributo = new EntidadeAtributoEnta();
116 entidadeAtributo.setEntidadeEnt(entidade);
117 entidadeAtributo.setSisAtributoSatb((SisAtributoSatb) super.buscar(SisAtributoSatb.class, Long.valueOf(atributos[i])));
118 entidadeAtributo.setDataInclusao(Data.getDataAtual());
119 if (entidade.getEntidadeAtributoEntas() == null)
120 entidade.setEntidadeAtributoEntas(new HashSet());
121 entidade.getEntidadeAtributoEntas().add(entidadeAtributo);
122 }
123 }
124 }
125
126
127
128
129
130
131
132 else {
133 if (SisTipoExibicGrupoDao.MULTITEXTO.equals(grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString())) {
134 Enumeration lAtrib = request.getParameterNames();
135 while (lAtrib.hasMoreElements()) {
136 String atrib = (String) lAtrib.nextElement();
137 if (atrib.lastIndexOf('-') > 0) {
138 String nomeAtrib = atrib.substring(0, atrib.lastIndexOf('-'));
139 String nomeCampo = atrib.substring(atrib.lastIndexOf('-') + 1);
140 if (nomeAtrib.equals("a" + grupoAtributo.getCodSga().toString()) && !"".equals(Pagina.getParamStr(request, atrib))) {
141 EntidadeAtributoEnta entidadeAtributo = new EntidadeAtributoEnta();
142 entidadeAtributo.setEntidadeEnt(entidade);
143 entidadeAtributo.setInformacao(Pagina.getParamStr(request, atrib));
144 entidadeAtributo.setSisAtributoSatb((SisAtributoSatb) super.buscar(SisAtributoSatb.class, Long.valueOf(nomeCampo)));
145 entidadeAtributo.setDataInclusao(Data.getDataAtual());
146 if (entidade.getEntidadeAtributoEntas() == null)
147 entidade.setEntidadeAtributoEntas(new HashSet());
148 entidade.getEntidadeAtributoEntas().add(entidadeAtributo);
149 }
150 }
151 }
152 }
153 }
154 }
155 }
156
157
158
159
160
161
162
163 public void setLocaisEntidade(HttpServletRequest request, EntidadeEnt entidade) throws ECARException {
164 int numLocais = Integer.parseInt(request.getParameter("contLocal"));
165 for (int i = 1; i <= numLocais; i++) {
166 if ("S".equals(Pagina.getParamStr(request, "adicionaLocal" + i))) {
167 LocalItemLit local = new LocalItemLit();
168 local = (LocalItemLit) super.buscar(LocalItemLit.class, Long.valueOf(Pagina.getParamStr(request, "codLit" + i)));
169 if (entidade.getLocalEntidadeLents() == null)
170 entidade.setLocalEntidadeLents(new HashSet());
171 (entidade.getLocalEntidadeLents()).add(local);
172 }
173 }
174 }
175
176
177
178
179
180
181
182 public void setTelefonesEntidade(HttpServletRequest request, EntidadeEnt entidade) throws ECARException {
183 int numTelefones = Integer.parseInt(request.getParameter("contTelefones"));
184 for (int i = 1; i <= numTelefones; i++) {
185 if ("S".equals(Pagina.getParamStr(request, "adicionaTelefone" + i))) {
186 TelefoneTel telefone = new TelefoneTel();
187 telefone.setEntidadeEnt(entidade);
188 telefone.setDddTel(Pagina.getParamStr(request, "dddTel" + i));
189 telefone.setTelefoneTel(Pagina.getParamStr(request, "telefoneTel" + i));
190 telefone.setIdTel(Pagina.getParamStr(request, "idTel" + i));
191 if (entidade.getTelefoneTels() == null)
192 entidade.setTelefoneTels(new HashSet());
193 (entidade.getTelefoneTels()).add(telefone);
194 }
195 }
196 }
197
198
199
200
201
202
203
204 public void setEnderecosEntidade(HttpServletRequest request, EntidadeEnt entidade) throws ECARException {
205 int numEnderecos = Integer.parseInt(request.getParameter("contEnderecos"));
206 EnderecoEnd endereco;
207 for (int i = 1; i <= numEnderecos; i++) {
208 if ("S".equals(Pagina.getParamStr(request, "adicionaEndereco" + i))) {
209 endereco = new EnderecoEnd();
210 endereco.setEntidadeEnt(entidade);
211 endereco.setBairroEnd(Pagina.getParamStr(request, "bairroEnd" + i));
212 endereco.setCepEnd(Integer.valueOf(Pagina.getParamInt(request, "cepEnd" + i)));
213 endereco.setCidadeEnd(Pagina.getParamStr(request, "cidadeEnd" + i));
214 endereco.setComplementoEnd(Pagina.getParamStr(request, "complementoEnd" + i));
215 endereco.setEnderecoEnd(Pagina.getParamStr(request, "enderecoEnd" + i));
216 endereco.setIdEnd(Pagina.getParamStr(request, "idEnd" + i));
217
218 if (!"".equals(Pagina.getParamStr(request, "tipoEnderecoTpend" + i)))
219 endereco.setTipoEnderecoTend((TipoEnderecoTend) super.buscar(TipoEnderecoTend.class, Long.valueOf(Pagina.getParamStr(request, "tipoEnderecoTpend" + i))));
220 if (!"".equals(Pagina.getParamStr(request, "uf" + i)))
221 endereco.setUf((Uf) super.buscar(Uf.class, Pagina.getParamStr(request, "uf" + i)));
222 if (entidade.getEnderecoEnds() == null)
223 entidade.setEnderecoEnds(new HashSet());
224 entidade.getEnderecoEnds().add(endereco);
225 }
226 }
227
228 }
229
230
231
232
233
234
235 public void excluir(EntidadeEnt entidade) throws ECARException {
236 try {
237 boolean excluir = true;
238 if (contar(entidade.getHierarquiaEntidadeHentsByCodEnt()) > 0) {
239 excluir = false;
240 throw new ECARException("entidade.exclusao.erro.hierarquiaEntidadeHentsByCodEnt");
241 }
242 if (contar(entidade.getHierarquiaEntidadeHentsByCodEntPai()) > 0) {
243 excluir = false;
244 throw new ECARException("entidade.exclusao.erro.hierarquiaEntidadeHentsByCodEntPai");
245 }
246 if (contar(entidade.getRegDemandaRegds()) > 0) {
247 excluir = false;
248 throw new ECARException("entidade.exclusao.erro.regDemandaRegds");
249 }
250 if (excluir) {
251
252 List objs = new ArrayList();
253 if (entidade.getEntidadeAtributoEntas() != null) {
254 Iterator itAtb = entidade.getEntidadeAtributoEntas().iterator();
255 while (itAtb.hasNext()) {
256 EntidadeAtributoEnta entAtrib = (EntidadeAtributoEnta) itAtb.next();
257 objs.add(entAtrib);
258 }
259 }
260 entidade.setEntidadeAtributoEntas(null);
261 objs.add(entidade);
262 super.excluir(objs);
263 }
264 } catch (ECARException e) {
265 this.logger.error(e);
266 throw e;
267 }
268 }
269
270
271
272
273
274
275
276 public List getIdFilhos(EntidadeEnt entidade) {
277 List filhos = new ArrayList();
278 if (entidade.getHierarquiaEntidadeHentsByCodEntPai() != null) {
279 Iterator it = entidade.getHierarquiaEntidadeHentsByCodEntPai().iterator();
280 while (it.hasNext()) {
281 EntidadeEnt filhoEnt = (EntidadeEnt) it.next();
282 filhos.add(filhoEnt.getCodEnt());
283 }
284 }
285 return filhos;
286 }
287
288
289
290
291
292
293
294 public List getIdPais(EntidadeEnt entidade) {
295 List pais = new ArrayList();
296 if (entidade.getHierarquiaEntidadeHentsByCodEnt() != null) {
297 Iterator it = entidade.getHierarquiaEntidadeHentsByCodEnt().iterator();
298 while (it.hasNext()) {
299 EntidadeEnt paiEnt = (EntidadeEnt) it.next();
300 pais.add(paiEnt.getCodEnt());
301 }
302 }
303 return pais;
304 }
305
306
307
308
309
310
311
312 public void alterar(EntidadeEnt entidade, HttpServletRequest request) throws ECARException {
313
314 Transaction tx = null;
315
316 try {
317 List objetos = new ArrayList();
318 super.inicializarLogBean();
319 tx = session.beginTransaction();
320
321 if (entidade.getTelefoneTels() != null) {
322 Iterator itTel = entidade.getTelefoneTels().iterator();
323 while (itTel.hasNext()) {
324 TelefoneTel telefone = (TelefoneTel) itTel.next();
325 session.delete(telefone);
326 objetos.add(telefone);
327 }
328 }
329 entidade.setTelefoneTels(null);
330
331 if (entidade.getEnderecoEnds() != null) {
332 Iterator itEnd = entidade.getEnderecoEnds().iterator();
333 while (itEnd.hasNext()) {
334 EnderecoEnd endereco = (EnderecoEnd) itEnd.next();
335 session.delete(endereco);
336 objetos.add(endereco);
337 }
338 }
339 entidade.setEnderecoEnds(null);
340
341 if (entidade.getEntidadeAtributoEntas() != null) {
342 Iterator itAtt = entidade.getEntidadeAtributoEntas().iterator();
343 while (itAtt.hasNext()) {
344 EntidadeAtributoEnta entidadeAtributo = (EntidadeAtributoEnta) itAtt.next();
345 session.delete(entidadeAtributo);
346 objetos.add(entidadeAtributo);
347 }
348 }
349 entidade.setEntidadeAtributoEntas(null);
350
351 entidade.setLocalEntidadeLents(null);
352
353 this.setEntidade(request, entidade, true);
354 List filhos = new ArrayList();
355 if (entidade.getEntidadeAtributoEntas() != null)
356 filhos.addAll(entidade.getEntidadeAtributoEntas());
357
358 session.update(entidade);
359 objetos.add(entidade);
360
361 Iterator it = filhos.iterator();
362
363 while (it.hasNext()) {
364 PaiFilho object = (PaiFilho) it.next();
365 object.atribuirPKPai();
366
367 session.save(object);
368 objetos.add(object);
369 }
370
371 tx.commit();
372
373 if (super.logBean != null) {
374 super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
375 super.logBean.setOperacao("INC_ALT_EXC");
376 Iterator itObj = objetos.iterator();
377
378 while (itObj.hasNext()) {
379 super.logBean.setObj(itObj.next());
380 super.loggerAuditoria.info(logBean.toString());
381 }
382 }
383
384 } catch (HibernateException e) {
385 if (tx != null)
386 try {
387 tx.rollback();
388 } catch (HibernateException r) {
389 this.logger.error(r);
390 throw new ECARException("erro.hibernateException");
391 }
392 this.logger.error(e);
393 throw new ECARException("erro.hibernateException");
394 } catch (ECARException e) {
395 if (tx != null)
396 try {
397 tx.rollback();
398 } catch (HibernateException r) {
399 this.logger.error(r);
400 throw new ECARException("erro.hibernateException");
401 }
402 this.logger.error(e);
403 throw e;
404 }
405 }
406
407
408
409
410
411
412
413
414 public List getEntidadeAtributoByGrupo(EntidadeEnt entidade, SisGrupoAtributoSga grupo) throws ECARException {
415 List retorno = new ArrayList();
416 Set result = entidade.getEntidadeAtributoEntas();
417 if (result != null) {
418 if (result.size() > 0) {
419 Iterator it = result.iterator();
420 while (it.hasNext()) {
421 EntidadeAtributoEnta entidadeAtributo = (EntidadeAtributoEnta) it.next();
422 if (entidadeAtributo.getSisAtributoSatb().getSisGrupoAtributoSga().equals(grupo))
423 retorno.add(entidadeAtributo);
424 }
425
426 }
427 }
428 return retorno;
429 }
430
431
432
433
434
435
436 public void salvar(EntidadeEnt entidade) throws ECARException {
437 entidade.setDataInclusaoEnt(Data.getDataAtual());
438 List filhos = new ArrayList();
439 if (entidade.getEntidadeAtributoEntas() != null)
440 filhos.addAll(entidade.getEntidadeAtributoEntas());
441 super.salvar(entidade, filhos);
442 }
443
444
445
446
447
448
449
450
451 public List pesquisar(EntidadeEnt entidade) throws ECARException {
452
453
454 List listFiltro = new ArrayList();
455 if (entidade.getEntidadeAtributoEntas() != null && entidade.getEntidadeAtributoEntas().size() > 0) {
456 Iterator itAtr = entidade.getEntidadeAtributoEntas().iterator();
457 EntidadeAtributoEnta entAtr;
458 while (itAtr.hasNext()) {
459 entAtr = (EntidadeAtributoEnta) itAtr.next();
460 listFiltro.add(entAtr);
461 }
462 }
463
464 List pesquisa = super.pesquisar(entidade, new String[] { "nomeEnt", "asc" });
465 Iterator it = pesquisa.iterator();
466
467 while (it.hasNext()) {
468 EntidadeEnt ent = (EntidadeEnt) it.next();
469 boolean ignorar = false;
470 List listVerificacoes = new ArrayList();
471 if (listFiltro.size() > 0) {
472 if (ent.getEntidadeAtributoEntas() != null && ent.getEntidadeAtributoEntas().size() > 0) {
473
474 Iterator itAtr = ent.getEntidadeAtributoEntas().iterator();
475 EntidadeAtributoEnta entAtr;
476 while (itAtr.hasNext()) {
477 entAtr = (EntidadeAtributoEnta) itAtr.next();
478 listVerificacoes.add(entAtr);
479 }
480
481 Iterator itClassesTela = listFiltro.iterator();
482 List listIgnorar = new ArrayList();
483 String ignorarItem = "";
484 EntidadeAtributoEnta entidadesTela;
485
486 while (itClassesTela.hasNext()) {
487 entidadesTela = (EntidadeAtributoEnta) itClassesTela.next();
488 Iterator itVerificacoes = listVerificacoes.iterator();
489 ignorarItem = "SIM";
490 EntidadeAtributoEnta atributosEntidade;
491 while (itVerificacoes.hasNext()) {
492 atributosEntidade = (EntidadeAtributoEnta) itVerificacoes.next();
493 SisGrupoAtributoSga tipo = (SisGrupoAtributoSga) entidadesTela.getSisAtributoSatb().getSisGrupoAtributoSga();
494 if (SisTipoExibicGrupoDao.TEXT.equals(tipo.getSisTipoExibicGrupoSteg().getCodSteg().toString())) {
495 if (atributosEntidade.getInformacao() != null && atributosEntidade.getInformacao().length() > 0) {
496 if (atributosEntidade.getInformacao().indexOf(atributosEntidade.getInformacao()) > -1) {
497 ignorarItem = "NAO";
498 break;
499 }
500 }
501 }
502 else {
503 if (atributosEntidade.getSisAtributoSatb().getCodSatb().longValue() == entidadesTela.getSisAtributoSatb().getCodSatb().longValue()) {
504 ignorarItem = "NAO";
505 break;
506 }
507 }
508 }
509
510 listIgnorar.add(ignorarItem);
511 }
512
513 if (listIgnorar.contains("SIM")) {
514 ignorar = true;
515 }
516 else {
517 ignorar = false;
518 }
519 }
520 else {
521 ignorar = true;
522 }
523 }
524 if (ignorar) {
525 it.remove();
526 }
527 }
528
529
530
531
532
533
534 return pesquisa;
535 }
536
537 }