View Javadoc

1   /*
2    * Criado em 03/05/2005
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   * @author felipev
33   */
34  public class SegmentoCategoriaDao extends Dao {
35  
36    /**
37     * Construtor. Chama o Session factory do Hibernate
38     */
39    public SegmentoCategoriaDao(HttpServletRequest request) {
40      super();
41      this.request = request;
42    }
43  
44    /**
45     * Salva um registro de categoria de segmento a partir de parâmetros recebidos
46     * por request por um formulário de Upload. Salva a coleção de tipos de acesso
47     * da categoria de segmento. Salva a imagem selecionada em disco.
48     * @param categoria de segmento
49     * @param campos
50     * @param pathRaiz
51     * @param pathRelativo
52     * @throws ECARException
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        /* grava a imagem e atualiza o segmento para vincular o nome da imagem */
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    * Exclui um registro de kategoria de segmento. Exclui a imagem vinculada caso
104    * exista.
105    * @param segmento
106    * @param pathRaiz
107    * @throws ECARException
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    * Altera um registro de categoria de segmento a partir de parâmetros
136    * recebidos por request por um formulário de Upload. Altera a coleção de
137    * tipos de acesso da categoria de segmento. Salva a imagem selecionada em
138    * disco e apaga a uma imagem existente anteriormente.
139    * @param segmentoCategoria
140    * @param campos
141    * @param pathRaiz
142    * @param pathRelativo
143    * @throws ECARException
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    * Realiza o upload da imagem da Categoria de Segmento. Seta no objeto
219    * segmento referência para tal imagem. Apaga uma imagem existente
220    * anteriormente em caso de alteração.
221    * @param segmento
222    * @param campos
223    * @param pathRaiz
224    * @param pathRelativo
225    * @throws ECARException
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    * A partir de dados passados por request popula um objeto
250    * SegmentoCategoriaSgtc
251    * @param segmento
252    * @param campos
253    * @param recuperarParametrosComoString indica se irá recuperar dados nulos
254    *          como String vazia
255    * @throws ECARException
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    * A partir de um List de campos obtidos na requsição de um formulário de
293    * upload popula um objeto SegmentoCategoriaSgtc
294    * @param segmentoCategoria
295    * @param campos
296    * @throws ECARException
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    * Cria a coleção de atributos de Tipo de Acesso de Uma Categoria de Segmento
322    * @param segmentoCategoria
323    * @param request
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    * Retorna uma List com todos as identificações dos Atributos que representam
357    * os Tipos de Acesso de uma Categoria de Segmento
358    * @param segmentoCategoria
359    * @return
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    * @param segmento
375    * @return Collection
376    * @throws ECARException
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    * Invoca o método pesquisar do Dao e itera sobre o resultado para inicializar
391    * as Collections de Tipo de Acesso de Cada objeto retornado.
392    * @param segmento
393    * @return List
394    * @throws ECARException
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        * Percorre o resultado e retira dele todas os SegmentoCategoriaSgtc onde
403        * dentro da coleção de getSegmentoCategTpAcessSgts não existam todos os
404        * atributos de SegmentoCategoriaSgtc passados no objeto de pesquisa
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    * Invoca o método pesquisar do Dao e itera sobre o resultado para inicializar
434    * as Collections de Tipo de Acesso de Cada objeto retornado e retirar dele
435    * SegmentosCategoria que não pertencam a Segmentos de itens Livres.
436    * @param segmento
437    * @return
438    * @throws ECARException
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    * Devolve uma lista com os segmentos de categoria de dúvidas ativos visíveis
458    * ao usuário
459    * @return List
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    * Devolve uma lista com os segmentos de categoria de dúvidas ativos para
499    * acesso público
500    * @return List
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    * Devolve uma lista com os segmentos de categoria de glossário ativos
538    * visíveis ao usuário
539    * @return List
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 }