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