View Javadoc

1   /*
2    * Criado em 21/12/2004
3    */
4   package ecar.dao;
5   
6   import java.math.BigDecimal;
7   import java.util.ArrayList;
8   import java.util.Collection;
9   import java.util.Iterator;
10  import java.util.List;
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.Data;
20  import comum.util.Pagina;
21  import comum.util.Util;
22  
23  import ecar.exception.ECARException;
24  import ecar.pojo.EfIettFonTotRevEfieftr;
25  import ecar.pojo.EfIettFonTotRevEfieftrPK;
26  import ecar.pojo.EfIettFonteTotEfieft;
27  import ecar.pojo.EfIettFonteTotEfieftPK;
28  import ecar.pojo.EfIettPrevisaoRevEfiepr;
29  import ecar.pojo.EfItemEstPrevisaoEfiep;
30  import ecar.pojo.EspecieEsp;
31  import ecar.pojo.ExercicioExe;
32  import ecar.pojo.FonteFon;
33  import ecar.pojo.FonteRecursoFonr;
34  import ecar.pojo.ItemEstruturaIett;
35  import ecar.pojo.ItemEstruturarevisaoIettrev;
36  import ecar.pojo.RecursoRec;
37  
38  /**
39   * @author felipev
40   */
41  public class ItemEstruturaFonteRecursoRevDao extends Dao {
42  
43    public ItemEstruturaFonteRecursoRevDao(HttpServletRequest request) {
44      super();
45      this.request = request;
46    }
47  
48    /**
49     * Retorna as Fontes de Recursos ativas de um itemEstrutura
50     * @param itemEstrutura
51     * @return
52     * @throws ECARException
53     */
54    public List getAtivos(ItemEstruturarevisaoIettrev itemEstrutura) throws ECARException {
55      try {
56        // Query q = getSession()
57        // .createQuery(
58        // " select fonteRecurso from ecar.pojo.EfIettFonteTotEfieft fonteRecurso "
59        // +
60        // "where fonteRecurso.itemEstruturaIett.codIett = ? and fonteRecurso.indAtivoEfieft = 'S' "
61        // +
62        // "order by fonteRecurso.fonteRecursoFonr.nomeFonr, fonteRecurso.exercicioExe.descricaoExe asc");
63        Query q = getSession().createQuery(" select fonteRecurso from ecar.pojo.EfIettFonTotRevEfieftr fonteRecurso " + "where fonteRecurso.itemEstruturarevisaoIettrev.codIettrev = ? and fonteRecurso.indAtivoEfieftr = 'S' " + "order by fonteRecurso.fonteRecursoFonr.nomeFonr asc");
64        q.setLong(0, itemEstrutura.getCodIettrev().longValue());
65        return q.list();
66      } catch (HibernateException e) {
67        this.logger.error(e);
68        throw new ECARException("erro.hibernateException");
69      }
70    }
71  
72    /**
73     * Verifica a possibilidade de ser incluída uma fonte de recurso para um
74     * ItemEstrutura. Todos os itens que possuem fontes de recursos devem estar no
75     * mesmo nivel da estrutura, podendo ser de ramificações diferentes.
76     * @param itemEstrutura
77     * @return
78     */
79    public boolean verificaPossibilidadeInclusao(ItemEstruturarevisaoIettrev itemEstrutura) throws ECARException {
80      /*
81       * EstruturaEtt estrutura = itemEstrutura.getEstruturaEtt(); Query
82       * queryEstrutura =this.getSession().createQuery(
83       * "select distinct fonte.itemEstruturaIett.estruturaEtt " +
84       * " from EfIettFonteTotEfieft fonte"); EstruturaEtt estruturaNiveis =
85       * (EstruturaEtt) queryEstrutura.uniqueResult(); if(estruturaNiveis == null)
86       * return true; else{ if(estruturaNiveis.equals(estrutura)) return true; }
87       */
88  
89      /* ** Encontrando fonte de recurso no item já permite inclusão ** */
90      if (itemEstrutura.getEfIettFonTotRevEfieftrs().size() > 0)
91        return true;
92  
93      ItemEstruturarevisaoIettrevDAO itemDao = new ItemEstruturarevisaoIettrevDAO(request);
94  
95      List lista = new ArrayList();
96      lista.addAll(itemDao.getAscendentes(itemEstrutura));
97      lista.addAll(itemDao.getDescendentes(itemEstrutura, true));
98  
99      Iterator it = lista.iterator();
100 
101     while (it.hasNext()) {
102       ItemEstruturaIett itemLista = (ItemEstruturaIett) it.next();
103 
104       if (itemLista.getEfIettFonteTotEfiefts() != null && itemLista.getEfIettFonteTotEfiefts().size() > 0)
105         return false;
106     }
107 
108     return true;
109   }
110 
111   /**
112    * Retorna um objeto EfIettFonteTotEfieft a partir do código do Item da
113    * Estrutura, do código do exercício e do código da Fonte de Recurso
114    * @param codItemEstrutura
115    * @param codBeneficiario
116    * @return
117    * @throws ECARException
118    */
119   public EfIettFonteTotEfieft buscarOLD(Long codItemEstrutura, Long codFonteRecurso, Long codExercicio) throws ECARException {
120     EfIettFonteTotEfieftPK comp_id = new EfIettFonteTotEfieftPK();
121     comp_id.setCodFonr(codFonteRecurso);
122     // comp_id.setCodExe(codExercicio);
123     comp_id.setCodIett(codItemEstrutura);
124     return (EfIettFonteTotEfieft) super.buscar(EfIettFonteTotEfieft.class, comp_id);
125   }
126 
127   /**
128    * Retorna um objeto EfIettFonteTotEfieft a partir do código do Item da
129    * Estrutura, do código do exercício e do código da Fonte de Recurso
130    * @param codItemEstrutura
131    * @param codBeneficiario
132    * @return
133    * @throws ECARException
134    */
135   public EfIettFonTotRevEfieftr buscar(Long codItemEstrutura, Long codFonteRecurso) throws ECARException {
136     EfIettFonTotRevEfieftrPK comp_id = new EfIettFonTotRevEfieftrPK();
137     comp_id.setCodFonr(codFonteRecurso);
138     comp_id.setCodIettrev(codItemEstrutura);
139     return (EfIettFonTotRevEfieftr) super.buscar(EfIettFonTotRevEfieftr.class, comp_id);
140   }
141 
142   /**
143    * Retorna uma lista com as fontes de recurso cadastradas para um item em um
144    * Exercício
145    * @param itemEstrutura
146    * @param exercicio
147    * @return
148    * @throws ECARException
149    */
150   public List getFontesRecursosByExercicio(ItemEstruturarevisaoIettrev itemEstrutura, ExercicioExe exercicio) throws ECARException {
151     List retorno = new ArrayList();
152     EfIettFonTotRevEfieftr fonte = new EfIettFonTotRevEfieftr();
153     fonte.setItemEstruturarevisaoIettrev(itemEstrutura);
154     // fonte.setExercicioExe(exercicio);
155     fonte.setIndAtivoEfieftr("S");
156     List ieFontes = super.pesquisar(fonte, null);
157     if (ieFontes != null) {
158       Iterator it = ieFontes.iterator();
159       while (it.hasNext()) {
160         retorno.add(((EfIettFonTotRevEfieftr) it.next()).getFonteRecursoFonr());
161       }
162     }
163     return retorno;
164   }
165 
166   /**
167    * @param itemEstrutura
168    * @param exercicio
169    * @return List
170    * @throws ECARException
171    */
172   public List getFontesRecursosByExercicio(Long itemEstrutura, Long exercicio) throws ECARException {
173     ItemEstruturarevisaoIettrev item = (ItemEstruturarevisaoIettrev) this.buscar(ItemEstruturarevisaoIettrev.class, itemEstrutura);
174     ExercicioExe exercicioExe = (ExercicioExe) this.buscar(ExercicioExe.class, exercicio);
175     return this.getFontesRecursosByExercicio(item, exercicioExe);
176   }
177 
178   /**
179    * Cria um objeto EfIettFonteTotEfieft a partir de parâmetros passados no
180    * objeto request
181    * @param request
182    * @param EfIettFonteTotEfieft
183    * @throws ECARException
184    */
185   public void setItemEstruturaFonteRecursoOLD(HttpServletRequest request, EfIettFonteTotEfieft itemEstruturaFonteRecurso) throws ECARException {
186     /*
187      * ItemEstruturaIett itemEstrutura = (ItemEstruturaIett) this.buscar(
188      * ItemEstruturaIett.class, Long.valueOf(Pagina.getParamStr( request,
189      * "codIett")));
190      */
191     itemEstruturaFonteRecurso.setDataValorEfieft(Pagina.getParamDataBanco(request, "dataValorEfieft"));
192     // itemEstruturaFonteRecurso.setExercicioExe((ExercicioExe) super.buscar(
193     // ExercicioExe.class, Long.valueOf(Pagina.getParamStr(request,
194     // "codExe"))));
195     itemEstruturaFonteRecurso.setFonteRecursoFonr((FonteRecursoFonr) super.buscar(FonteRecursoFonr.class, Long.valueOf(Pagina.getParamStr(request, "codFonr"))));
196     itemEstruturaFonteRecurso.setIndAtivoEfieft("S");
197     itemEstruturaFonteRecurso.setValorEfieft(new BigDecimal(Double.valueOf(Util.formataNumero(Pagina.getParamStr(request, "valorEfieft"))).doubleValue()));
198     itemEstruturaFonteRecurso.setItemEstruturaIett((ItemEstruturaIett) super.buscar(ItemEstruturaIett.class, Long.valueOf(Pagina.getParamStr(request, "codIett"))));
199   }
200 
201   /**
202    * Cria um objeto EfIettFonteTotEfieft a partir de parâmetros passados no
203    * objeto request
204    * @param request
205    * @param EfIettFonteTotEfieft
206    * @throws ECARException
207    */
208   public void setItemEstruturaFonteRecurso(HttpServletRequest request, EfIettFonTotRevEfieftr itemEstruturaFonteRecurso) throws ECARException {
209     itemEstruturaFonteRecurso.setDataValorEfieftr(Pagina.getParamDataBanco(request, "dataValorEfieft"));
210     itemEstruturaFonteRecurso.setFonteRecursoFonr((FonteRecursoFonr) super.buscar(FonteRecursoFonr.class, Long.valueOf(Pagina.getParamStr(request, "codFonr"))));
211     itemEstruturaFonteRecurso.setItemEstruturarevisaoIettrev((ItemEstruturarevisaoIettrev) super.buscar(ItemEstruturarevisaoIettrev.class, Integer.valueOf(Pagina.getParamStr(request, "codIettrev"))));
212   }
213 
214   /**
215    * @param request
216    * @param itemEstruturaFonteRecurso
217    * @return
218    * @throws ECARException
219    * @deprecated
220    */
221   public List setListaRecursoOLD(HttpServletRequest request, EfIettFonteTotEfieft itemEstruturaFonteRecurso) throws ECARException {
222     List lista = new ArrayList();
223 
224     ExercicioDao exercicioDao = new ExercicioDao(request);
225     Collection listaExercicios = exercicioDao.getExerciciosValidos(itemEstruturaFonteRecurso.getItemEstruturaIett().getCodIett());
226     Iterator itExerc = listaExercicios.iterator();
227 
228     while (itExerc.hasNext()) {
229       ExercicioExe exercicio = (ExercicioExe) itExerc.next();
230 
231       if (!"".equals(Pagina.getParamStr(request, "recursoRec" + exercicio.getCodExe().toString()))) {
232         EfItemEstPrevisaoEfiep recurso = new EfItemEstPrevisaoEfiep();
233 
234         recurso.setExercicioExe(exercicio);
235         recurso.setFonteRecursoFonr(itemEstruturaFonteRecurso.getFonteRecursoFonr());
236         recurso.setItemEstruturaIett(itemEstruturaFonteRecurso.getItemEstruturaIett());
237         recurso.setRecursoRec((RecursoRec) super.buscar(RecursoRec.class, Long.valueOf(Pagina.getParamStr(request, "recursoRec" + exercicio.getCodExe().toString()))));
238         recurso.setValorAprovadoEfiep(new BigDecimal(Double.valueOf(Util.formataNumero(Pagina.getParamStr(request, "valorAprovadoEfiep" + exercicio.getCodExe().toString()))).doubleValue()));
239         recurso.setValorRevisadoEfiep(new BigDecimal(Double.valueOf(Util.formataNumero(Pagina.getParamStr(request, "valorRevisadoEfiep" + exercicio.getCodExe().toString()))).doubleValue()));
240 
241         recurso.setIndAtivoEfiep("S");
242         recurso.setDataInclusaoEfiep(Data.getDataAtual());
243 
244         /*
245          * FIXME: Verificar esta regra Está fixo, pois falta fazer na tela para
246          * informar a espécie e a fonte rec 3 = fonte 49 rec 4 = fonte 50 rec 5
247          * = fonte 51
248          */
249         // if(recurso.getEspecieEsp() == null){
250         // recurso.setEspecieEsp((EspecieEsp) buscar(EspecieEsp.class,
251         // Long.valueOf(0)));
252         // }
253         // if(recurso.getFonteFon() == null){
254         // if(recurso.getRecursoRec().getCodRec().longValue() == 3){
255         // recurso.setFonteFon((FonteFon) buscar(FonteFon.class,
256         // Long.valueOf(49)));
257         // }
258         // if(recurso.getRecursoRec().getCodRec().longValue() == 4){
259         // recurso.setFonteFon((FonteFon) buscar(FonteFon.class,
260         // Long.valueOf(50)));
261         // }
262         // if(recurso.getRecursoRec().getCodRec().longValue() == 5){
263         // recurso.setFonteFon((FonteFon) buscar(FonteFon.class,
264         // Long.valueOf(51)));
265         // }
266         // }
267         lista.add(recurso);
268       }
269     }
270 
271     return lista;
272   }
273 
274   /**
275    * @param request
276    * @param itemEstruturaFonteRecurso
277    * @param int - número de recursos na tela
278    * @return
279    * @throws ECARException
280    */
281   public List setListaRecurso(HttpServletRequest request, EfIettFonTotRevEfieftr itemEstruturaFonteRecurso, int numRecursos) throws ECARException {
282     List lista = new ArrayList();
283 
284     ExercicioDao exercicioDao = new ExercicioDao(request);
285     Collection listaExercicios = exercicioDao.getExerciciosValidos(itemEstruturaFonteRecurso.getItemEstruturarevisaoIettrev().getItemEstruturaIettrev().getCodIett());
286     String nomeCombo = "";
287     String nomeCampoVlAprov = "";
288     String nomeCampoVlRev = "";
289 
290     for (int i = 0; i < numRecursos; i++) {
291       nomeCombo = "recursoRec" + i;
292 
293       Iterator itExerc = listaExercicios.iterator();
294 
295       while (itExerc.hasNext()) {
296         ExercicioExe exercicio = (ExercicioExe) itExerc.next();
297 
298         nomeCampoVlRev = "valorRevisadoEfiep" + i + "e" + exercicio.getCodExe().toString();
299         nomeCampoVlAprov = "valorAprovadoEfiep" + i + "e" + exercicio.getCodExe().toString();
300 
301         if (!"".equals(Pagina.getParamStr(request, nomeCampoVlRev)) && !"".equals(Pagina.getParamStr(request, nomeCampoVlAprov))) {
302           EfIettPrevisaoRevEfiepr recurso = new EfIettPrevisaoRevEfiepr();
303 
304           recurso.setExercicioExe(exercicio);
305           recurso.setFonteRecursoFonr(itemEstruturaFonteRecurso.getFonteRecursoFonr());
306           recurso.setItemEstruturarevisaoIettrev(itemEstruturaFonteRecurso.getItemEstruturarevisaoIettrev());
307           recurso.setRecursoRec((RecursoRec) super.buscar(RecursoRec.class, Long.valueOf(Pagina.getParamStr(request, nomeCombo))));
308           recurso.setValorAprovadoEfiepr(new Double(Double.valueOf(Util.formataNumero(Pagina.getParamStr(request, nomeCampoVlAprov))).doubleValue()));
309           recurso.setValorRevisadoEfiepr(new Double(Double.valueOf(Util.formataNumero(Pagina.getParamStr(request, nomeCampoVlRev))).doubleValue()));
310 
311           recurso.setIndAtivoEfiepr("S");
312           recurso.setDataInclusaoEfiepr(Data.getDataAtual());
313 
314           lista.add(recurso);
315         }
316       }
317     }
318 
319     return lista;
320   }
321 
322   /**
323    * Método utilizado para setar os valores da PK da classe EfIettFonteTotEfieft
324    * @param itemEstruturaBeneficiario
325    */
326   public void setPK(EfIettFonTotRevEfieftr itemEstruturaFonteRecurso) {
327     EfIettFonTotRevEfieftrPK comp_id = new EfIettFonTotRevEfieftrPK();
328     comp_id.setCodFonr(itemEstruturaFonteRecurso.getFonteRecursoFonr().getCodFonr());
329     comp_id.setCodIettrev(Long.valueOf(itemEstruturaFonteRecurso.getItemEstruturarevisaoIettrev().getCodIettrev().longValue()));
330     itemEstruturaFonteRecurso.setComp_id(comp_id);
331   }
332 
333   /**
334    * Grava uma relação entre itemEstrutura e Fonte de Recurso e todos os
335    * recursos preenchidos
336    * @param itemEstruturaFonteRecurso
337    * @param List - lista de Recursos
338    * @throws ECARException
339    * @throws ECARException
340    * @throws HibernateException
341    */
342   public void salvar(EfIettFonTotRevEfieftr itemEstruturaFonteRecurso, List listaRecursos) throws ECARException {
343     Transaction tx = null;
344     try {
345       ArrayList objetos = new ArrayList();
346       super.inicializarLogBean();
347 
348       tx = session.beginTransaction();
349 
350       setPK(itemEstruturaFonteRecurso);
351       itemEstruturaFonteRecurso.setDataInclusaoEfieftr(Data.getDataAtual());
352       itemEstruturaFonteRecurso.setIndAtivoEfieftr("S");
353 
354       EfIettFonTotRevEfieftr itemEstFRAux = null;
355       try {
356         itemEstFRAux = buscar(Long.valueOf(itemEstruturaFonteRecurso.getItemEstruturarevisaoIettrev().getCodIettrev().longValue()), itemEstruturaFonteRecurso.getFonteRecursoFonr().getCodFonr());
357       } catch (Exception e) {
358         this.logger.error(e);
359         // quando não é encontrado nenhum registro gera exceção
360         itemEstFRAux = null;
361       }
362 
363       if (itemEstFRAux != null) {
364         throw new ECARException("itemEstrutura.fonteRecurso.inclusao.jaExiste");
365       }
366 
367       session.save(itemEstruturaFonteRecurso);
368       objetos.add(itemEstruturaFonteRecurso);
369 
370       ItemEstruturaPrevisaoRevDao itemEstPrevisaoDao = new ItemEstruturaPrevisaoRevDao(request);
371 
372       Iterator itRecursos = listaRecursos.iterator();
373       while (itRecursos.hasNext()) {
374         EfIettPrevisaoRevEfiepr recurso = (EfIettPrevisaoRevEfiepr) itRecursos.next();
375         itemEstPrevisaoDao.setPK(recurso);
376         session.save(recurso);
377         objetos.add(recurso);
378       }
379 
380       tx.commit();
381 
382       if (super.logBean != null) {
383         super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
384         super.logBean.setOperacao("INC");
385         Iterator itObj = objetos.iterator();
386 
387         while (itObj.hasNext()) {
388           super.logBean.setObj(itObj.next());
389           super.loggerAuditoria.info(logBean.toString());
390         }
391       }
392     } catch (HibernateException he) {
393       if (tx != null)
394         try {
395           tx.rollback();
396         } catch (HibernateException r) {
397           this.logger.error(r);
398           throw new ECARException("erro.hibernateException");
399         }
400       this.logger.error(he);
401       throw new ECARException("erro.hibernateException");
402     }
403   }
404 
405   /**
406    * Altera os atributos de uma relação entre ItemEstrutura e Fonte de Recurso e
407    * todos os recursos preenchidos
408    * @param itemEstruturaFonteRecurso
409    * @param List - lista de Recursos
410    * @throws ECARException
411    * @throws ECARException
412    * @throws HibernateException
413    */
414   public void alterar(EfIettFonTotRevEfieftr itemEstruturaFonteRecurso, List listaRecursos) throws ECARException {
415     Transaction tx = null;
416     try {
417       ArrayList objetos = new ArrayList();
418       super.inicializarLogBean();
419 
420       tx = session.beginTransaction();
421 
422       session.update(itemEstruturaFonteRecurso);
423       objetos.add(itemEstruturaFonteRecurso);
424 
425       ItemEstruturaPrevisaoRevDao itemEstPrevisaoDao = new ItemEstruturaPrevisaoRevDao(request);
426 
427       /* selecionar todos os recursos gravados para a fonte */
428       List recursosDoBanco = itemEstPrevisaoDao.getRecursosByFonteRecurso(itemEstruturaFonteRecurso.getFonteRecursoFonr().getCodFonr(), itemEstruturaFonteRecurso.getItemEstruturarevisaoIettrev().getCodIettrev());
429 
430       ExercicioDao exercicioDao = new ExercicioDao(request);
431       Collection listaExercicios = exercicioDao.getExerciciosValidos(itemEstruturaFonteRecurso.getItemEstruturarevisaoIettrev().getItemEstruturaIettrev().getCodIett());
432 
433       /*
434        * excluir todos os recursos que possam ter sido alterados na tela, a
435        * partir dos exercício validos
436        */
437       Iterator itRecBanco = recursosDoBanco.iterator();
438       while (itRecBanco.hasNext()) {
439         EfIettPrevisaoRevEfiepr recurso = (EfIettPrevisaoRevEfiepr) itRecBanco.next();
440         if (listaExercicios.contains(recurso.getExercicioExe())) {
441           session.delete(recurso);
442           objetos.add(recurso);
443         }
444       }
445 
446       Iterator itRecursos = listaRecursos.iterator();
447       while (itRecursos.hasNext()) {
448         EfIettPrevisaoRevEfiepr recurso = (EfIettPrevisaoRevEfiepr) itRecursos.next();
449         itemEstPrevisaoDao.setPK(recurso);
450         session.save(recurso);
451         objetos.add(recurso);
452       }
453 
454       tx.commit();
455 
456       if (super.logBean != null) {
457         super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
458         super.logBean.setOperacao("INC_ALT_EXC");
459         Iterator itObj = objetos.iterator();
460 
461         while (itObj.hasNext()) {
462           super.logBean.setObj(itObj.next());
463           super.loggerAuditoria.info(logBean.toString());
464         }
465       }
466     } catch (HibernateException he) {
467       if (tx != null)
468         try {
469           tx.rollback();
470         } catch (HibernateException r) {
471           this.logger.error(r);
472           throw new ECARException("erro.hibernateException");
473         }
474       this.logger.error(he);
475       throw new ECARException("erro.hibernateException");
476     }
477   }
478 
479   /**
480    * Recebe um código de item estrutura e um array contendo códigos de fontes de
481    * recurso, recuperar objetos itemEstruturaFonteRecurso e realiza, para cada
482    * um deles o seguinte processo de exclusão: (1) Excluir todas as contas
483    * (EfItemEstContaEfieg) para o Item e IEFonteRec; (2) Excluir todos os
484    * recursos (); (3) Excluir a fonte de recurso ();
485    * @param codigosParaExcluir
486    * @param codItemEstrutura
487    * @throws ECARException
488    */
489   public void excluir(String[] codigosParaExcluir, Long codItemEstrutura) throws ECARException {
490     Transaction tx = null;
491 
492     try {
493       ArrayList objetos = new ArrayList();
494       super.inicializarLogBean();
495 
496       tx = session.beginTransaction();
497 
498       for (int i = 0; i < codigosParaExcluir.length; i++) {
499         String[] codigos = codigosParaExcluir[i].split(",");
500         EfIettFonTotRevEfieftr itemEstruturaFonR = buscar(codItemEstrutura, Long.valueOf(codigos[0]));
501 
502         EfIettPrevisaoRevEfiepr objBuscaRecurso = new EfIettPrevisaoRevEfiepr();
503         objBuscaRecurso.setFonteRecursoFonr(itemEstruturaFonR.getFonteRecursoFonr());
504         objBuscaRecurso.setItemEstruturarevisaoIettrev(itemEstruturaFonR.getItemEstruturarevisaoIettrev());
505 
506         List resultBuscaRecurso = this.pesquisar(objBuscaRecurso, null);
507 
508         if (resultBuscaRecurso.size() > 0) {
509           Iterator it = resultBuscaRecurso.iterator();
510           while (it.hasNext()) {
511             EfIettPrevisaoRevEfiepr recursoEncontrado = (EfIettPrevisaoRevEfiepr) it.next();
512             session.delete(recursoEncontrado);
513             objetos.add(recursoEncontrado);
514           }
515         }
516 
517         session.delete(itemEstruturaFonR);
518         objetos.add(itemEstruturaFonR);
519       }
520 
521       tx.commit();
522 
523       if (super.logBean != null) {
524         super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
525         super.logBean.setOperacao("EXC");
526         Iterator itObj = objetos.iterator();
527 
528         while (itObj.hasNext()) {
529           super.logBean.setObj(itObj.next());
530           super.loggerAuditoria.info(logBean.toString());
531         }
532       }
533     } catch (Exception e) {
534       if (tx != null)
535         try {
536           tx.rollback();
537         } catch (HibernateException r) {
538           this.logger.error(r);
539           throw new ECARException("erro.hibernateException");
540         }
541       this.logger.error(e);
542       throw new ECARException("erro.hibernateException");
543     }
544   }
545 
546   /**
547    * Desativa uma fonte de recurso e seus recursos
548    * @param itemEstruturaFonteRecurso
549    * @throws ECARException
550    */
551   public void desativaRecursos(EfIettFonTotRevEfieftr itemEstruturaFonteRecurso) throws ECARException {
552     itemEstruturaFonteRecurso.setIndAtivoEfieftr("N");
553     this.alterar(itemEstruturaFonteRecurso);
554     // List recursos = new ItemEstruturaPrevisaoDao(request)
555     // .getRecursosByFonteRecurso(itemEstruturaFonteRecurso
556     // .getFonteRecursoFonr().getCodFonr(),
557     // itemEstruturaFonteRecurso.getExercicioExe().getCodExe(),
558     // itemEstruturaFonteRecurso.getItemEstruturaIett().getCodIett());
559     List recursos = new ItemEstruturaPrevisaoRevDao(request).getRecursosByFonteRecurso(itemEstruturaFonteRecurso.getFonteRecursoFonr().getCodFonr(), itemEstruturaFonteRecurso.getItemEstruturarevisaoIettrev().getCodIettrev());
560     if (recursos != null) {
561       Iterator it = recursos.iterator();
562       while (it.hasNext()) {
563         EfIettPrevisaoRevEfiepr recurso = (EfIettPrevisaoRevEfiepr) it.next();
564         recurso.setIndAtivoEfiepr("N");
565         new ItemEstruturaPrevisaoRevDao(request).alterar(recurso);
566       }
567     }
568   }
569 
570   /**
571    * Soma o valor dos recursos de uma Fonte
572    * @param itemEstruturaFonteRecurso
573    * @return
574    * @param tipo (Aprovado, Revisado ou Todos)
575    * @return
576    * @throws ECARException
577    */
578   public double getSomaRecursosFonteRecurso(EfIettFonTotRevEfieftr itemEstruturaFonteRecurso, String tipo) throws ECARException {
579     double total = 0;
580     List recursos = new ItemEstruturaPrevisaoRevDao(request).getRecursosByFonteRecurso(itemEstruturaFonteRecurso.getFonteRecursoFonr().getCodFonr(), itemEstruturaFonteRecurso.getItemEstruturarevisaoIettrev().getCodIettrev());
581     if (recursos != null) {
582       Iterator it = recursos.iterator();
583       while (it.hasNext()) {
584         EfIettPrevisaoRevEfiepr recurso = (EfIettPrevisaoRevEfiepr) it.next();
585         if ("Aprovado".equalsIgnoreCase(tipo))
586           total += recurso.getValorAprovadoEfiepr().doubleValue();
587         if ("Revisado".equalsIgnoreCase(tipo))
588           total += recurso.getValorRevisadoEfiepr().doubleValue();
589         if ("Todos".equalsIgnoreCase(tipo)) {
590           total += recurso.getValorAprovadoEfiepr().doubleValue();
591           total += recurso.getValorRevisadoEfiepr().doubleValue();
592         }
593       }
594     }
595     return total;
596   }
597 }