1
2
3
4 package ecar.dao;
5
6 import java.io.File;
7 import java.util.ArrayList;
8 import java.util.Collection;
9 import java.util.HashSet;
10 import java.util.Iterator;
11 import java.util.List;
12
13 import javax.servlet.http.HttpServletRequest;
14
15 import org.apache.commons.fileupload.FileItem;
16 import org.hibernate.HibernateException;
17 import org.hibernate.Query;
18 import org.hibernate.Transaction;
19
20 import comum.database.Dao;
21 import comum.util.Data;
22 import comum.util.FileUpload;
23 import comum.util.Pagina;
24
25 import ecar.exception.ECARException;
26 import ecar.pojo.SegmentoCategoriaSgtc;
27 import ecar.pojo.SegmentoSgt;
28 import ecar.pojo.SisAtributoSatb;
29 import ecar.pojo.UsuarioUsu;
30
31
32
33
34 public class SegmentoCategoriaDao extends Dao {
35
36
37
38
39 public SegmentoCategoriaDao(HttpServletRequest request) {
40 super();
41 this.request = request;
42 }
43
44
45
46
47
48
49
50
51
52
53
54 public void salvar(SegmentoCategoriaSgtc segmentoCategoria, List campos, String pathRaiz, String pathRelativo) throws ECARException {
55 Transaction tx = null;
56
57 try {
58 ArrayList objetos = new ArrayList();
59
60 super.inicializarLogBean();
61
62 tx = session.beginTransaction();
63
64 setSegmentoCategoriaUpload(segmentoCategoria, campos);
65
66 criarCollectionTipoAcesso(segmentoCategoria, campos, null, true);
67
68 session.save(segmentoCategoria);
69 objetos.add(segmentoCategoria);
70
71
72
73 uploadImagem(segmentoCategoria, campos, pathRaiz, pathRelativo);
74 session.update(segmentoCategoria);
75 objetos.add(segmentoCategoria);
76
77 tx.commit();
78
79 if (super.logBean != null) {
80 super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
81 super.logBean.setOperacao("INC_ALT");
82 Iterator itObj = objetos.iterator();
83
84 while (itObj.hasNext()) {
85 super.logBean.setObj(itObj.next());
86 super.loggerAuditoria.info(logBean.toString());
87 }
88 }
89 } catch (HibernateException e) {
90 if (tx != null)
91 try {
92 tx.rollback();
93 } catch (HibernateException r) {
94 this.logger.error(r);
95 throw new ECARException("erro.hibernateException");
96 }
97 this.logger.error(e);
98 throw new ECARException("erro.hibernateException");
99 }
100 }
101
102
103
104
105
106
107
108
109 public void excluir(SegmentoCategoriaSgtc segmentoCategoria, String pathRaiz) throws ECARException {
110 try {
111 boolean excluir = true;
112 if (contar(segmentoCategoria.getSegmentoItemSgtis()) > 0) {
113 excluir = false;
114 throw new ECARException("segmentoCategoria.exclusao.erro.segmentoItem");
115 }
116 if (excluir) {
117 if (segmentoCategoria.getImagemSgtc() != null) {
118 if (FileUpload.apagarArquivo(FileUpload.getPathFisico(pathRaiz, segmentoCategoria.getImagemSgtc(), ""))) {
119 super.excluir(segmentoCategoria);
120 }
121 else {
122 throw new ECARException("erro.excluirArquivo");
123 }
124 }
125 else
126 super.excluir(segmentoCategoria);
127 }
128 } catch (Exception e) {
129 this.logger.error(e);
130 throw new ECARException("erro.exception");
131 }
132 }
133
134
135
136
137
138
139
140
141
142
143
144
145
146 public void alterar(SegmentoCategoriaSgtc segmentoCategoria, List campos, String pathRaiz, String pathRelativo) throws ECARException {
147
148 String flagImagem = "";
149
150 Transaction tx = null;
151
152 try {
153 ArrayList objetos = new ArrayList();
154
155 super.inicializarLogBean();
156
157 tx = session.beginTransaction();
158
159 if (("".equals(FileUpload.verificaValorCampo(campos, "imagemSgtc"))) && (!"".equals(FileUpload.verificaValorCampo(campos, "imagem")))) {
160 if (segmentoCategoria.getImagemSgtc() != null) {
161
162 if (!FileUpload.apagarArquivo(FileUpload.getPathFisico(pathRaiz, segmentoCategoria.getImagemSgtc(), ""))) {
163 throw new ECARException("erro.excluirArquivo");
164
165 }
166 }
167
168 flagImagem = "excluidaImagem";
169
170 }
171
172 setSegmentoCategoriaUpload(segmentoCategoria, campos);
173
174 if ("excluidaImagem".equalsIgnoreCase(flagImagem)) {
175 segmentoCategoria.setImagemSgtc("");
176 session.save(segmentoCategoria);
177 objetos.add(segmentoCategoria);
178 }
179
180 if ("".equals(FileUpload.verificaValorCampo(campos, "legImagemSgtc"))) {
181 segmentoCategoria.setLegImagemSgtc("");
182 session.save(segmentoCategoria);
183 objetos.add(segmentoCategoria);
184 }
185
186 criarCollectionTipoAcesso(segmentoCategoria, campos, null, true);
187 uploadImagem(segmentoCategoria, campos, pathRaiz, pathRelativo);
188
189 session.update(segmentoCategoria);
190 objetos.add(segmentoCategoria);
191
192 tx.commit();
193
194 if (super.logBean != null) {
195 super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
196 super.logBean.setOperacao("INC_ALT");
197 Iterator itObj = objetos.iterator();
198
199 while (itObj.hasNext()) {
200 super.logBean.setObj(itObj.next());
201 super.loggerAuditoria.info(logBean.toString());
202 }
203 }
204 } catch (Exception e) {
205 if (tx != null)
206 try {
207 tx.rollback();
208 } catch (HibernateException r) {
209 this.logger.error(r);
210 throw new ECARException("erro.hibernateException");
211 }
212 this.logger.error(e);
213 throw new ECARException("erro.hibernateException");
214 }
215 }
216
217
218
219
220
221
222
223
224
225
226
227 public void uploadImagem(SegmentoCategoriaSgtc segmentoCategoria, List campos, String pathRaiz, String pathRelativo) throws ECARException {
228 try {
229 Iterator it = campos.iterator();
230 while (it.hasNext()) {
231 FileItem fileItem = (FileItem) it.next();
232 if (!fileItem.isFormField() && !"".equals(fileItem.getName())) {
233
234 if (segmentoCategoria.getImagemSgtc() != null)
235 FileUpload.apagarArquivo(FileUpload.getPathFisico(pathRaiz, segmentoCategoria.getImagemSgtc(), ""));
236
237 File arquivoGravado = FileUpload.salvarNoDisco(fileItem, FileUpload.getPathFisico(pathRaiz, pathRelativo, "segCat" + segmentoCategoria.getCodSgtc() + FileUpload.getNomeArquivo(fileItem)));
238 segmentoCategoria.setImagemSgtc(FileUpload.getPathFisico("", pathRelativo, "segCat" + segmentoCategoria.getCodSgtc() + FileUpload.getNomeArquivo(fileItem)));
239 }
240 }
241 } catch (Exception e) {
242 this.logger.error(e);
243 throw new ECARException(e);
244 }
245
246 }
247
248
249
250
251
252
253
254
255
256
257 public void setSegmentoCategoria(SegmentoCategoriaSgtc segmentoCategoria, HttpServletRequest campos, boolean recuperarParametrosComoString) throws ECARException {
258
259 try {
260
261 if (!"".equals(Pagina.getParamStr(campos, "segmentoSgt"))) {
262 SegmentoSgt segmento = (SegmentoSgt) super.buscar(SegmentoSgt.class, Long.valueOf(Pagina.getParamStr(campos, "segmentoSgt")));
263 segmentoCategoria.setSegmentoSgt(segmento);
264 }
265 else {
266 segmentoCategoria.setSegmentoSgt(null);
267 }
268
269 if (recuperarParametrosComoString) {
270 segmentoCategoria.setTituloSgtc(Pagina.getParamStr(campos, "tituloSgtc"));
271 segmentoCategoria.setDescricaoSgtc(Pagina.getParamStr(campos, "descricaoSgtc"));
272 segmentoCategoria.setLegImagemSgtc(Pagina.getParamStr(campos, "legImagemSgtc"));
273 segmentoCategoria.setIndAtivoSgtc(Pagina.getParamStr(campos, "indAtivoSgtc"));
274 segmentoCategoria.setIndUtilizTpAcessoSgtc(Pagina.getParamStr(campos, "indUtilizTpAcessoSgtc"));
275 }
276 else {
277 segmentoCategoria.setTituloSgtc(Pagina.getParam(campos, "tituloSgtc"));
278 segmentoCategoria.setDescricaoSgtc(Pagina.getParam(campos, "descricaoSgtc"));
279 segmentoCategoria.setLegImagemSgtc(Pagina.getParam(campos, "legImagemSgtc"));
280 segmentoCategoria.setIndAtivoSgtc(Pagina.getParam(campos, "indAtivoSgtc"));
281 segmentoCategoria.setIndUtilizTpAcessoSgtc(Pagina.getParam(campos, "indUtilizTpAcessoSgtc"));
282 }
283 criarCollectionTipoAcesso(segmentoCategoria, null, campos, false);
284 } catch (Exception e) {
285 this.logger.error(e);
286 throw new ECARException(e);
287 }
288
289 }
290
291
292
293
294
295
296
297
298 public void setSegmentoCategoriaUpload(SegmentoCategoriaSgtc segmentoCategoria, List campos) throws ECARException {
299
300 try {
301
302 if (!"".equals(FileUpload.verificaValorCampo(campos, "segmentoSgt"))) {
303 SegmentoSgt segmento = (SegmentoSgt) super.buscar(SegmentoSgt.class, Long.valueOf(FileUpload.verificaValorCampo(campos, "segmentoSgt")));
304 segmentoCategoria.setSegmentoSgt(segmento);
305 }
306
307 segmentoCategoria.setTituloSgtc(FileUpload.verificaValorCampo(campos, "tituloSgtc"));
308 segmentoCategoria.setDescricaoSgtc(FileUpload.verificaValorCampo(campos, "descricaoSgtc"));
309 segmentoCategoria.setLegImagemSgtc(FileUpload.verificaValorCampo(campos, "legImagemSgtc"));
310 segmentoCategoria.setIndAtivoSgtc(FileUpload.verificaValorCampo(campos, "indAtivoSgtc"));
311 segmentoCategoria.setIndUtilizTpAcessoSgtc(FileUpload.verificaValorCampo(campos, "indUtilizTpAcessoSgtc"));
312
313 } catch (Exception e) {
314 this.logger.error(e);
315 throw new ECARException(e);
316 }
317
318 }
319
320
321
322
323
324
325 private void criarCollectionTipoAcesso(SegmentoCategoriaSgtc segmentoCategoria, List campos, HttpServletRequest request, boolean usarFileUpload) throws ECARException {
326 try {
327 Object[] codigosTpAcesso;
328 if (usarFileUpload)
329 codigosTpAcesso = FileUpload.verificaValorCampoArray(campos, "sisAtributoSatb");
330 else
331 codigosTpAcesso = request.getParameterValues("sisAtributoSatb");
332
333 if (codigosTpAcesso != null) {
334
335 for (int i = 0; i < codigosTpAcesso.length; i++) {
336 SisAtributoSatb atributo = (SisAtributoSatb) super.buscar(SisAtributoSatb.class, Long.valueOf(codigosTpAcesso[i].toString()));
337 if (segmentoCategoria.getSegmentoCategTpAcessSgts() != null && !segmentoCategoria.getSegmentoCategTpAcessSgts().contains(atributo))
338 segmentoCategoria.getSegmentoCategTpAcessSgts().add(atributo);
339 else {
340 segmentoCategoria.setSegmentoCategTpAcessSgts(new HashSet());
341 if (!segmentoCategoria.getSegmentoCategTpAcessSgts().contains(atributo)) {
342 segmentoCategoria.getSegmentoCategTpAcessSgts().add(atributo);
343 }
344
345 }
346 }
347 }
348
349 } catch (Exception e) {
350 this.logger.error(e);
351 throw new ECARException(e);
352 }
353 }
354
355
356
357
358
359
360
361 public List getTipoAcessoSegmentoCategoriaById(SegmentoCategoriaSgtc segmentoCategoria) {
362 List retorno = new ArrayList();
363 if (segmentoCategoria.getSegmentoCategTpAcessSgts() != null && segmentoCategoria.getSegmentoCategTpAcessSgts().size() > 0) {
364 Iterator it = segmentoCategoria.getSegmentoCategTpAcessSgts().iterator();
365 while (it.hasNext()) {
366 SisAtributoSatb segmentoTpAcesso = (SisAtributoSatb) it.next();
367 retorno.add(segmentoTpAcesso.getCodSatb());
368 }
369 }
370 return retorno;
371 }
372
373
374
375
376
377
378 public Collection getAtivosBySegmento(SegmentoSgt segmento) throws ECARException {
379 try {
380 Query query = this.getSession().createQuery("select sgtc from SegmentoCategoriaSgtc sgtc" + " where sgtc.segmentoSgt.codSgt = :codSgt" + " and sgtc.indAtivoSgtc = 'S'");
381 query.setLong("codSgt", segmento.getCodSgt().longValue());
382 return query.list();
383 } catch (HibernateException e) {
384 this.logger.error(e);
385 throw new ECARException(e);
386 }
387 }
388
389
390
391
392
393
394
395
396 public List pesquisar(SegmentoCategoriaSgtc segmentoCategoria) throws ECARException {
397
398 List pesquisa = super.pesquisar(segmentoCategoria, new String[] { "tituloSgtc", "asc" });
399
400 if (segmentoCategoria.getSegmentoCategTpAcessSgts() != null) {
401
402
403
404
405
406 List atributosPesquisa = new ArrayList();
407 atributosPesquisa.addAll(segmentoCategoria.getSegmentoCategTpAcessSgts());
408
409 Iterator it = pesquisa.iterator();
410 while (it.hasNext()) {
411 List atributosResultado = new ArrayList();
412 Iterator itAtribResultado = ((SegmentoCategoriaSgtc) it.next()).getSegmentoCategTpAcessSgts().iterator();
413
414 while (itAtribResultado.hasNext())
415 atributosResultado.add((SisAtributoSatb) itAtribResultado.next());
416
417 if (!atributosResultado.containsAll(atributosPesquisa))
418 it.remove();
419 }
420 }
421
422 if (pesquisa.size() > 0) {
423 Iterator it = pesquisa.iterator();
424 while (it.hasNext()) {
425 SegmentoCategoriaSgtc sgtc = (SegmentoCategoriaSgtc) it.next();
426 sgtc.getSegmentoCategTpAcessSgts().size();
427 }
428 }
429 return pesquisa;
430 }
431
432
433
434
435
436
437
438
439
440 public List pesquisarSegmentosCategoriaItensLivres(SegmentoCategoriaSgtc segmentoCategoria) throws ECARException {
441
442 List pesquisa = super.pesquisar(segmentoCategoria, new String[] { "tituloSgtc", "asc" });
443 if (pesquisa.size() > 0) {
444 Iterator it = pesquisa.iterator();
445 while (it.hasNext()) {
446 SegmentoCategoriaSgtc sgtc = (SegmentoCategoriaSgtc) it.next();
447 if (sgtc.getSegmentoSgt() != null && sgtc.getSegmentoSgt().getCodSgt().longValue() > 4)
448 sgtc.getSegmentoCategTpAcessSgts().size();
449 else
450 it.remove();
451 }
452 }
453 return pesquisa;
454 }
455
456
457
458
459
460
461 public List getSegmentoCategoriasVinculadasAoUsuario(UsuarioUsu usuario) throws ECARException {
462 List lista = null;
463 List lista2 = null;
464 Query query2 = null;
465
466 try {
467
468 StringBuilder select = new StringBuilder("select i from SegmentoCategoriaSgtc i where i.indAtivoSgtc = 'S' ").append("and i.segmentoSgt.codSgt = 3 ").append("and ((i.indUtilizTpAcessoSgtc = 'N') or ").append("(i.indUtilizTpAcessoSgtc = 'S' and i.codSgtc in (").append("select b.comp_id.codSgtc from SegmentoCategoriaTpAcesSgt b ").append("where b.comp_id.codSatb in (").append("select a.comp_id.codSatb from UsuarioAtributoUsua a ").append("where a.comp_id.codUsu = :codUsu))))").append(" order by i.dataInclusaoSgtc asc");
469
470 Query query = this.getSession().createQuery(select.toString());
471 query.setLong("codUsu", usuario.getCodUsu().longValue());
472 lista = query.list();
473
474 Iterator it = lista.iterator();
475
476 while (it.hasNext()) {
477
478 StringBuilder select2 = new StringBuilder("select i from SegmentoItemSgti i where i.indAtivoSgti = 'S' ").append("and i.segmentoCategoriaSgtc.codSgtc = :codSgtc").append(" and i.segmentoSgt.codSgt = 3 ").append("and ((i.indUtilizTpAcessoSgti = 'N') or ").append("(i.indUtilizTpAcessoSgti = 'S' and i.codSgti in (").append("select b.comp_id.codSgti from SegmentoItemTpAcesSgtITA b ").append("where b.comp_id.codSatb in (").append("select a.comp_id.codSatb from UsuarioAtributoUsua a ").append("where a.comp_id.codUsu = :codUsu))))").append(" order by i.dataItemSgti asc");
479
480 query2 = this.getSession().createQuery(select2.toString());
481 query2.setLong("codUsu", usuario.getCodUsu().longValue());
482 query2.setLong("codSgtc", ((SegmentoCategoriaSgtc) it.next()).getCodSgtc().longValue());
483 lista2 = query2.list();
484
485 if (lista2.size() < 1)
486 it.remove();
487 }
488
489 } catch (HibernateException e) {
490 this.logger.error(e);
491 throw new ECARException("erro.hibernateException");
492 }
493
494 return lista;
495 }
496
497
498
499
500
501
502 public List getSegmentoCategoriasAcessoPublico() throws ECARException {
503 List lista = null;
504 List lista2 = null;
505 Query query2 = null;
506
507 try {
508
509 StringBuilder select = new StringBuilder("select i from SegmentoCategoriaSgtc i where i.indAtivoSgtc = 'S' ").append("and i.segmentoSgt.codSgt = 3 ").append("and ((i.indUtilizTpAcessoSgtc = 'N') or ").append("(i.indUtilizTpAcessoSgtc = 'S' and i.codSgtc in (").append("select b.comp_id.codSgtc from SegmentoCategoriaTpAcesSgt b ").append("where b.sisAtributoSatb.codSatb in (").append("select cfg.sisAtributoSatbByCodSaAcesso.codSatb from ConfiguracaoCfg cfg ").append("))))").append(" order by i.dataInclusaoSgtc asc");
510
511 Query query = this.getSession().createQuery(select.toString());
512 lista = query.list();
513
514 Iterator it = lista.iterator();
515
516 while (it.hasNext()) {
517
518 StringBuilder select2 = new StringBuilder("select i from SegmentoItemSgti i where i.indAtivoSgti = 'S' ").append("and i.segmentoCategoriaSgtc.codSgtc = :codSgtc").append(" and i.segmentoSgt.codSgt = 3 ").append("and ((i.indUtilizTpAcessoSgti = 'N') or ").append("(i.indUtilizTpAcessoSgti = 'S' and i.codSgti in (").append("select b.comp_id.codSgti from SegmentoItemTpAcesSgtITA b ").append("where b.sisAtributoSatb.codSatb in (").append("select cfg.sisAtributoSatbByCodSaAcesso.codSatb from ConfiguracaoCfg cfg ").append("))))").append(" order by i.dataItemSgti asc");
519
520 query2 = this.getSession().createQuery(select2.toString());
521 query2.setLong("codSgtc", ((SegmentoCategoriaSgtc) it.next()).getCodSgtc().longValue());
522 lista2 = query2.list();
523
524 if (lista2.size() < 1)
525 it.remove();
526 }
527
528 } catch (HibernateException e) {
529 this.logger.error(e);
530 throw new ECARException("erro.hibernateException");
531 }
532
533 return lista;
534 }
535
536
537
538
539
540
541 public List getSegmentoCategoriasGlossarioVinculadasAoUsuario(UsuarioUsu usuario) throws ECARException {
542 List lista = null;
543
544 try {
545
546 StringBuilder select = new StringBuilder("select i from SegmentoCategoriaSgtc i where i.indAtivoSgtc = 'S' ").append("and i.segmentoSgt.codSgt = 4 ");
547
548 if (usuario != null && usuario.getCodUsu() != null) {
549 select.append("and ((i.indUtilizTpAcessoSgtc = 'N') or ").append("(i.indUtilizTpAcessoSgtc = 'S' and i.codSgtc in (").append("select b.comp_id.codSgtc from SegmentoCategoriaTpAcesSgt b ").append("where b.comp_id.codSatb in (").append("select a.comp_id.codSatb from UsuarioAtributoUsua a ").append("where a.comp_id.codUsu = :codUsu))))");
550 }
551 else {
552 select.append("and i.indUtilizTpAcessoSgtc = 'N'");
553 }
554 select.append(" order by i.dataInclusaoSgtc asc");
555
556 Query query = this.getSession().createQuery(select.toString());
557 if (usuario != null && usuario.getCodUsu() != null) {
558 query.setLong("codUsu", usuario.getCodUsu().longValue());
559 }
560 lista = query.list();
561
562 } catch (HibernateException e) {
563 this.logger.error(e);
564 throw new ECARException("erro.hibernateException");
565 }
566
567 return lista;
568 }
569
570 }