View Javadoc

1   package ecar.dao;
2   
3   import java.util.ArrayList;
4   import java.util.Collections;
5   import java.util.Comparator;
6   import java.util.Date;
7   import java.util.HashSet;
8   import java.util.Iterator;
9   import java.util.List;
10  import java.util.Set;
11  
12  import javax.servlet.http.HttpServletRequest;
13  
14  import org.hibernate.HibernateException;
15  import org.hibernate.Transaction;
16  
17  import comum.database.Dao;
18  import comum.util.Data;
19  import comum.util.Pagina;
20  import comum.util.Util;
21  
22  import ecar.exception.ECARException;
23  import ecar.pojo.AreaAre;
24  import ecar.pojo.EstrutTpFuncAcmpEtttfa;
25  import ecar.pojo.EstruturaEtt;
26  import ecar.pojo.IettIndResulRevIettrr;
27  import ecar.pojo.IettUsutpfuacrevIettutfar;
28  import ecar.pojo.ItemEstrtIndResulIettr;
29  import ecar.pojo.ItemEstruturarevisaoIettrev;
30  import ecar.pojo.OrgaoOrg;
31  import ecar.pojo.PaiFilho;
32  import ecar.pojo.PeriodicidadePrdc;
33  import ecar.pojo.SubAreaSare;
34  import ecar.pojo.TipoFuncAcompTpfa;
35  import ecar.pojo.UnidadeOrcamentariaUO;
36  import ecar.pojo.UsuarioUsu;
37  import ecar.util.Dominios;
38  
39  /**
40   * Classe de manipulação de objetos da classe ItemEstruturarevisaoIettrev.
41   * @author CodeGenerator - Esta classe foi gerada automaticamente
42   * @since 1.0
43   * @version 1.0, Fri Apr 28 17:12:23 BRT 2006
44   */
45  public class ItemEstruturarevisaoIettrevDAO extends Dao {
46  
47    public ItemEstruturarevisaoIettrevDAO(HttpServletRequest request) {
48      super();
49      this.request = request;
50    }
51  
52    /**
53     * Recebe um array de códigos de ItemEstruturarevisao e exclui os registro
54     * referenciados por estes códigos
55     * @param codigosParaExcluir
56     * @throws ECARException
57     */
58    public void excluir(String[] codigosParaExcluir) throws ECARException {
59      Transaction tx = null;
60  
61      try {
62        ArrayList objetos = new ArrayList();
63  
64        super.inicializarLogBean();
65  
66        tx = session.beginTransaction();
67  
68        for (int i = 0; i < codigosParaExcluir.length; i++) {
69          ItemEstruturarevisaoIettrev itemEstruturaRev = (ItemEstruturarevisaoIettrev) this.buscar(ItemEstruturarevisaoIettrev.class, Integer.valueOf(codigosParaExcluir[i]));
70          session.delete(itemEstruturaRev);
71          objetos.add(itemEstruturaRev);
72        }
73  
74        tx.commit();
75  
76        if (super.logBean != null) {
77          super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
78          super.logBean.setOperacao("EXC");
79          Iterator itObj = objetos.iterator();
80  
81          while (itObj.hasNext()) {
82            super.logBean.setObj(itObj.next());
83            super.loggerAuditoria.info(logBean.toString());
84          }
85        }
86      } catch (HibernateException e) {
87        if (tx != null)
88          try {
89            tx.rollback();
90          } catch (HibernateException r) {
91            this.logger.error(r);
92            throw new ECARException("erro.hibernateException");
93          }
94        this.logger.error(e);
95        throw new ECARException("erro.hibernateException");
96      }
97    }
98  
99    /**
100    * Retorna uma lista com todos os itens de Estrutura Revisao acima de um dado
101    * Item
102    * @param itemEstrutura
103    * @return
104    */
105   public List getAscendentes(ItemEstruturarevisaoIettrev itemEstrutura) {
106     List retorno = new ArrayList();
107     while (itemEstrutura.getItemEstruturarevisaoIettrev() != null) {
108       itemEstrutura = itemEstrutura.getItemEstruturarevisaoIettrev();
109       retorno.add(itemEstrutura);
110     }
111     Collections.reverse(retorno);
112     return retorno;
113   }
114 
115   /**
116    * Retorna uma lista com todos os itens de Estrutura revisao abaixo de um dado
117    * Item
118    * @param itemEstrutura
119    * @return
120    */
121   public List getDescendentes(ItemEstruturarevisaoIettrev itemEstrutura, boolean efetuarRefreshItemEstrutura) throws ECARException {
122     List retorno = new ArrayList();
123 
124     if (efetuarRefreshItemEstrutura) {
125       /*
126        * faz um refresh no item para que não seja aproveitado o objeto existente
127        * na session do Hibernate e termos um objeto com a coleçaõ de filhos
128        * completa
129        */
130       try {
131         this.session.refresh(itemEstrutura);
132       } catch (HibernateException e) {
133         this.logger.error(e);
134         throw new ECARException(e);
135       }
136     }
137 
138     if (itemEstrutura.getItemEstruturarevisaoIettrevs() != null) {
139 
140       Iterator it = itemEstrutura.getItemEstruturarevisaoIettrevs().iterator();
141       while (it.hasNext()) {
142         ItemEstruturarevisaoIettrev itemEstruturaFilho = (ItemEstruturarevisaoIettrev) it.next();
143 
144         if (!retorno.contains(itemEstruturaFilho))
145           retorno.add(itemEstruturaFilho);
146         retorno.addAll(this.getDescendentes(itemEstruturaFilho, efetuarRefreshItemEstrutura));
147       }
148     }
149     return retorno;
150   }
151 
152   /**
153    * @param request
154    * @param itemEstruturaRev
155    * @throws ECARException
156    */
157 
158   public void setItemEstruturaRevisao(HttpServletRequest request, ItemEstruturarevisaoIettrev itemEstruturaRev) throws ECARException {
159 
160     if (!"".equals(Pagina.getParamStr(request, "codIettrevPai")))
161       itemEstruturaRev.setItemEstruturarevisaoIettrev((ItemEstruturarevisaoIettrev) this.buscar(ItemEstruturarevisaoIettrev.class, Long.valueOf(Pagina.getParamStr(request, "codIettrevPai"))));
162 
163     if (!"".equals(Pagina.getParamStr(request, "codIettrev")))
164       itemEstruturaRev.setCodIettrev(Long.valueOf(Pagina.getParamStr(request, "codIettrev")));
165     if (!"".equals(Pagina.getParamStr(request, "codEtt")))
166       itemEstruturaRev.setEstruturaEttrev((EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(Pagina.getParamStr(request, "codEtt"))));
167 
168     itemEstruturaRev.setSiglaIettrev(Pagina.getParamStr(request, "siglaIettrev"));
169 
170     itemEstruturaRev.setNomeIettrev(Pagina.getParamStr(request, "nomeIettrev"));
171     itemEstruturaRev.setDescricaoIettrev(Pagina.getParamStr(request, "descricaoIettrev"));
172     itemEstruturaRev.setOrigemIettrev(Pagina.getParamStr(request, "origemIettrev"));
173     itemEstruturaRev.setIndMonitoramentoIettrev(Pagina.getParamStr(request, "indMonitoramentoIettrev"));
174     itemEstruturaRev.setIndBloqPlanejamentoIettrev(Pagina.getParamStr(request, "indBloqPlanejamentoIettrev"));
175     itemEstruturaRev.setObjetivoGeralIettrev(Pagina.getParamStr(request, "objetivoGeralIettrev"));
176     itemEstruturaRev.setObjetivoEspecificoIettrev(Pagina.getParamStr(request, "objetivoEspecificoIettrev"));
177     itemEstruturaRev.setBeneficiosIettrev(Pagina.getParamStr(request, "beneficiosIettrev"));
178     itemEstruturaRev.setJustificativaIettrev(Pagina.getParamStr(request, "justificativaIettrev"));
179     itemEstruturaRev.setSituacaoIettrev(Pagina.getParamStr(request, "situacaoIettrev"));
180 
181     // hint de desempenho. Já diz a qual nivel o item pertence.
182     itemEstruturaRev.setNivelIettrev(Integer.valueOf(getNivel(itemEstruturaRev)));
183 
184     if (!"".equals(Pagina.getParamStr(request, "dataInicioIettrev")))
185       itemEstruturaRev.setDataInicioIettrev(Pagina.getParamDataBanco(request, "dataInicioIettrev"));
186     else
187       itemEstruturaRev.setDataInicioIettrev(null);
188 
189     if (!"".equals(Pagina.getParamStr(request, "dataTerminoIettrev")))
190       itemEstruturaRev.setDataTerminoIettrev(Pagina.getParamDataBanco(request, "dataTerminoIettrev"));
191     else
192       itemEstruturaRev.setDataTerminoIettrev(null);
193 
194     if (!"".equals(Pagina.getParamStr(request, "areaArerev")))
195       itemEstruturaRev.setAreaArerev((AreaAre) new AreaDao(request).buscar(AreaAre.class, Long.valueOf(Pagina.getParamStr(request, "areaArerev"))));
196     else
197       itemEstruturaRev.setAreaArerev(null);
198 
199     if (!"".equals(Pagina.getParamStr(request, "subAreaSarerev")))
200       itemEstruturaRev.setSubAreaSarerev((SubAreaSare) new SubAreaDao(request).buscar(SubAreaSare.class, Long.valueOf(Pagina.getParamStr(request, "subAreaSarerev"))));
201     else
202       itemEstruturaRev.setSubAreaSarerev(null);
203 
204     if (!"".equals(Pagina.getParamStr(request, "unidadeOrcamentariaUorev")))
205       itemEstruturaRev.setUnidadeOrcamentariaUorev((UnidadeOrcamentariaUO) new UnidadeOrcamentariaDao(request).buscar(UnidadeOrcamentariaUO.class, Long.valueOf(Pagina.getParamStr(request, "unidadeOrcamentariaUorev"))));
206     else
207       itemEstruturaRev.setUnidadeOrcamentariaUorev(null);
208 
209     if (!"".equals(Pagina.getParamStr(request, "orgaoOrgByCodOrgaoResponsavel1Iettrev")))
210       itemEstruturaRev.setOrgaoOrgByCodOrgaoResponsavel1Iettrev((OrgaoOrg) new OrgaoDao(request).buscar(OrgaoOrg.class, Long.valueOf(Pagina.getParamStr(request, "orgaoOrgByCodOrgaoResponsavel1Iettrev"))));
211     else
212       itemEstruturaRev.setOrgaoOrgByCodOrgaoResponsavel1Iettrev(null);
213 
214     if (!"".equals(Pagina.getParamStr(request, "orgaoOrgByCodOrgaoResponsavel2Iettrev")))
215       itemEstruturaRev.setOrgaoOrgByCodOrgaoResponsavel2Iettrev((OrgaoOrg) new OrgaoDao(request).buscar(OrgaoOrg.class, Long.valueOf(Pagina.getParamStr(request, "orgaoOrgByCodOrgaoResponsavel2Iettrev"))));
216     else
217       itemEstruturaRev.setOrgaoOrgByCodOrgaoResponsavel2Iettrev(null);
218 
219     if (!"".equals(Pagina.getParamStr(request, "periodicidadePrdcrev")))
220       itemEstruturaRev.setPeriodicidadePrdcrev((PeriodicidadePrdc) new PeriodicidadeDao(request).buscar(PeriodicidadePrdc.class, Long.valueOf(Pagina.getParamStr(request, "periodicidadePrdcrev"))));
221     else
222       itemEstruturaRev.setPeriodicidadePrdcrev(null);
223 
224     itemEstruturaRev.setIndCriticaIettrev(Pagina.getParamStr(request, "indCriticaIettrev"));
225     if (!"".equals(Pagina.getParamStr(request, "valPrevistoFuturoIettrev")))
226       itemEstruturaRev.setValPrevistoFuturoIettrev(Double.valueOf(Util.formataNumero(Pagina.getParamStr(request, "valPrevistoFuturoIettrev"))));
227     else
228       itemEstruturaRev.setValPrevistoFuturoIettrev(null);
229 
230     if (!"".equals(Pagina.getParamStr(request, "dataR1rev")))
231       itemEstruturaRev.setDataR1rev(Pagina.getParamDataBanco(request, "dataR1rev"));
232     else
233       itemEstruturaRev.setDataR1rev(null);
234 
235     if (!"".equals(Pagina.getParamStr(request, "dataR2rev")))
236       itemEstruturaRev.setDataR2rev(Pagina.getParamDataBanco(request, "dataR2rev"));
237     else
238       itemEstruturaRev.setDataR2rev(null);
239 
240     if (!"".equals(Pagina.getParamStr(request, "dataR3rev")))
241       itemEstruturaRev.setDataR3rev(Pagina.getParamDataBanco(request, "dataR3rev"));
242     else
243       itemEstruturaRev.setDataR3rev(null);
244 
245     if (!"".equals(Pagina.getParamStr(request, "dataR4rev")))
246       itemEstruturaRev.setDataR4rev(Pagina.getParamDataBanco(request, "dataR4rev"));
247     else
248       itemEstruturaRev.setDataR4rev(null);
249 
250     if (!"".equals(Pagina.getParamStr(request, "dataR5rev")))
251       itemEstruturaRev.setDataR5rev(Pagina.getParamDataBanco(request, "dataR5rev"));
252     else
253       itemEstruturaRev.setDataR5rev(Pagina.getParamDataBanco(request, "dataR5rev"));
254 
255     itemEstruturaRev.setDescricaoR1rev(Pagina.getParamStr(request, "descricaoR1rev"));
256     itemEstruturaRev.setDescricaoR2rev(Pagina.getParamStr(request, "descricaoR2rev"));
257     itemEstruturaRev.setDescricaoR3rev(Pagina.getParamStr(request, "descricaoR3rev"));
258     itemEstruturaRev.setDescricaoR4rev(Pagina.getParamStr(request, "descricaoR4rev"));
259     itemEstruturaRev.setDescricaoR5rev(Pagina.getParamStr(request, "descricaoR5rev"));
260 
261     setFuncoesAcompanhamentoItemEstrutura(request, itemEstruturaRev);
262   }
263 
264   /**
265    * Devolve um int indicando em qual nível da hierarquia de itens o Item se
266    * encontra
267    * @param itemEstrutura
268    * @return
269    * @throws ECARException
270    */
271   private int getNivel(ItemEstruturarevisaoIettrev itemEstruturaRev) throws ECARException {
272     int nivel = 1;
273 
274     while (itemEstruturaRev.getItemEstruturarevisaoIettrev() != null) {
275       itemEstruturaRev = itemEstruturaRev.getItemEstruturarevisaoIettrev();
276       nivel++;
277 
278     }
279 
280     return nivel;
281   }
282 
283   /**
284    * Adiciona elementos à coleção de Funções de Acompanhamento de um
285    * ItemEstrutura
286    * @param request
287    * @param itemEstrutura
288    * @throws ECARException
289    */
290   public void setFuncoesAcompanhamentoItemEstrutura(HttpServletRequest request, ItemEstruturarevisaoIettrev itemEstruturaRev) throws ECARException {
291     // Limpa a collection
292     itemEstruturaRev.setIettUsutpfuacrevIettutfars(new HashSet());
293     // Descobre a Estrutura do item
294     EstruturaEtt estrutura = itemEstruturaRev.getEstruturaEttrev();
295     // Descobre as funções de acompanhamento de uma estrutura
296     Set funcoesAcomp = estrutura.getEstrutTpFuncAcmpEtttfas();
297     // Itera pelas funções buscando no request o valor passado.
298     if (funcoesAcomp != null) {
299       Iterator it = funcoesAcomp.iterator();
300       while (it.hasNext()) {
301         EstrutTpFuncAcmpEtttfa funcao = (EstrutTpFuncAcmpEtttfa) it.next();
302         if (!"".equals(Pagina.getParamStr(request, "Fun" + funcao.getTipoFuncAcompTpfa().getCodTpfa() + "rev"))) {
303           IettUsutpfuacrevIettutfar funcaoItemEstruturaRev = new IettUsutpfuacrevIettutfar();
304           funcaoItemEstruturaRev.setItemEstruturarevisaoIettrev(itemEstruturaRev);
305           funcaoItemEstruturaRev.setTipoFuncAcompTpfa(funcao.getTipoFuncAcompTpfa());
306           funcaoItemEstruturaRev.setUsuarioUsu((UsuarioUsu) this.buscar(UsuarioUsu.class, Long.valueOf(Pagina.getParamStr(request, "Fun" + funcao.getTipoFuncAcompTpfa().getCodTpfa() + "rev"))));
307           itemEstruturaRev.getIettUsutpfuacrevIettutfars().add(funcaoItemEstruturaRev);
308         }
309       }
310     }
311   }
312 
313   /**
314    * Retorna o valor de um atributo em um itemEstrutura
315    * @param itemEstrutura
316    * @param nomeAtributo
317    * @param fkAtributo
318    * @return
319    * @throws ECARException
320    */
321   public String getValorAtributoItemEstrutura(ItemEstruturarevisaoIettrev itemEstrutura, String nomeAtributo, String fkAtributo) throws ECARException {
322 
323     Object retorno = Util.invocaGet(itemEstrutura, nomeAtributo + "rev");
324     if (retorno != null) {
325       if (fkAtributo != null) {
326         retorno = Util.invocaGet(retorno, fkAtributo);
327         if (retorno != null)
328           return retorno.toString();
329         else
330           return "";
331       }
332       else {
333         if (retorno.getClass().equals(Date.class) || retorno.getClass().equals(Date.class))
334           retorno = Data.parseDate((Date) retorno);
335         return retorno.toString();
336       }
337     }
338     else
339       return "";
340   }
341 
342   /**
343    * Retorna o usuário associoado a uma função de acompanhamento em um
344    * itemEstrutura
345    * @param itemEstrutura
346    * @param funAcomp
347    * @return
348    * @throws ECARException
349    */
350   public UsuarioUsu getValorFunAcompItemEstrutura(ItemEstruturarevisaoIettrev itemEstrutura, TipoFuncAcompTpfa funAcomp) throws ECARException {
351     IettUsutpfuacrevIettutfar ieUsuTf = new IettUsutpfuacrevIettutfar();
352     ieUsuTf.setItemEstruturarevisaoIettrev(itemEstrutura);
353     ieUsuTf.setTipoFuncAcompTpfa(funAcomp);
354     try {
355       List result = this.pesquisar(ieUsuTf, null);
356       if (result != null) {
357         Iterator it = result.iterator();
358         if (it.hasNext())
359           return ((IettUsutpfuacrevIettutfar) it.next()).getUsuarioUsu();
360         else
361           return null;
362       }
363       else {
364         return null;
365       }
366     } catch (ECARException e) {
367       this.logger.error(e);
368       return null;
369     }
370 
371   }
372 
373   /**
374    * Salva um registro de itemEstrutura. Salva à parte os
375    * item-estrutura-funcao-tipo-acomp devido a chave composta. (que deve ser
376    * setada depois de gravar o item)
377    * @param itemEstrutura
378    * @throws ECARException
379    */
380   public void salvar(ItemEstruturarevisaoIettrev itemEstrutura) throws ECARException {
381     Transaction tx = null;
382 
383     try {
384       ArrayList objetos = new ArrayList();
385 
386       super.inicializarLogBean();
387 
388       tx = session.beginTransaction();
389 
390       itemEstrutura.setDataInclusaoIettrev(Data.getDataAtual());
391       List filhos = new ArrayList();
392       if ((itemEstrutura.getIettUsutpfuacrevIettutfars() != null) && (itemEstrutura.getIettUsutpfuacrevIettutfars().size() > 0))
393         filhos.addAll(itemEstrutura.getIettUsutpfuacrevIettutfars());
394 
395       //
396       // controlar as permissoes passando o item e a lista das funcoes de
397       // acompanhamento velhas (vai ser uma lista vazia)
398       //
399       // new ControlePermissao().atualizarPermissoesItemEstrutura(itemEstrutura,
400       // null);
401 
402       // gravar permissão para o usuário que criou o item
403       /*
404        * ItemEstrutUsuarioIettus itemEstrutUsuario = new
405        * ItemEstrutUsuarioIettus();
406        * itemEstrutUsuario.setItemEstruturaIett(itemEstrutura);
407        * itemEstrutUsuario.setItemEstruturaIettOrigem(itemEstrutura);
408        * itemEstrutUsuario.setCodTpPermIettus(Dominios.PERMISSAO_USUARIO);
409        * itemEstrutUsuario
410        * .setUsuarioUsu(itemEstrutura.getUsuarioUsuByCodUsuIncIett());
411        * itemEstrutUsuario.setIndLeituraIettus("S");
412        * itemEstrutUsuario.setIndEdicaoIettus("S");
413        * itemEstrutUsuario.setIndExcluirIettus("S");
414        * itemEstrutUsuario.setIndAtivMonitIettus("N");
415        * itemEstrutUsuario.setIndDesatMonitIettus("N");
416        * itemEstrutUsuario.setIndBloqPlanIettus("N");
417        * itemEstrutUsuario.setIndDesblPlanIettus("N");
418        * itemEstrutUsuario.setIndInfAndamentoIettus("N");
419        * itemEstrutUsuario.setIndEmitePosIettus("N");
420        * itemEstrutUsuario.setIndProxNivelIettus("N");
421        * itemEstrutUsuario.setDataInclusaoIettus(Data.getDataAtual());
422        */
423       session.save(itemEstrutura);
424       objetos.add(itemEstrutura);
425 
426       Iterator it = filhos.iterator();
427       while (it.hasNext()) {
428         PaiFilho object = (PaiFilho) it.next();
429         object.atribuirPKPai();
430         // salva os filhos
431         session.save(object);
432         objetos.add(object);
433       }
434 
435       /*
436        * session.save(itemEstrutUsuario); objetos.add(itemEstrutUsuario);
437        */
438       tx.commit();
439 
440       if (super.logBean != null) {
441         super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
442         super.logBean.setOperacao("INC");
443         Iterator itObj = objetos.iterator();
444 
445         while (itObj.hasNext()) {
446           super.logBean.setObj(itObj.next());
447           super.loggerAuditoria.info(logBean.toString());
448         }
449       }
450     } catch (HibernateException e) {
451       if (tx != null)
452         try {
453           tx.rollback();
454         } catch (HibernateException r) {
455           this.logger.error(r);
456           throw new ECARException("erro.hibernateException");
457         }
458       this.logger.error(e);
459       throw new ECARException("erro.hibernateException");
460     }
461   }
462 
463   /**
464    * @param colecao
465    * @return
466    * @throws ECARException
467    */
468   public List ordenaSetByCompare(Set colecao) throws ECARException {
469     List retorno = new ArrayList();
470     if (colecao != null) {
471       retorno = new ArrayList(colecao);
472 
473       Collections.sort(retorno, new Comparator() {
474 
475         public int compare(Object arg1, Object arg2) {
476           IettIndResulRevIettrr iettirr1 = (IettIndResulRevIettrr) arg1;
477           IettIndResulRevIettrr iettirr2 = (IettIndResulRevIettrr) arg2;
478 
479           ItemEstrtIndResulIettr indRev1 = iettirr1.getItemEstrtIndResulIettr();
480           ItemEstrtIndResulIettr indRev2 = iettirr2.getItemEstrtIndResulIettr();
481 
482           if (indRev1 != null && indRev2 != null) {
483             return indRev1.getNomeIettir().compareToIgnoreCase(indRev2.getNomeIettir());
484           }
485           else if (indRev1 != null && indRev2 == null) {
486             return 1;
487           }
488           else if (indRev1 == null && indRev2 != null) {
489             return -1;
490           }
491           else {
492             return 0;
493           }
494         }
495       });
496     }
497     else {
498       retorno = new ArrayList();
499     }
500 
501     return retorno;
502   }
503 }