View Javadoc

1   /*
2    * Criado em 01/12/2004
3    */
4   package ecar.dao;
5   
6   import java.util.ArrayList;
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.Query;
16  import org.hibernate.Transaction;
17  
18  import comum.database.Dao;
19  import comum.util.Pagina;
20  import comum.util.Util;
21  
22  import ecar.bean.AtributoEstruturaBean;
23  import ecar.exception.ECARException;
24  import ecar.pojo.AtributosAtb;
25  import ecar.pojo.EstAtribTipoAcompEata;
26  import ecar.pojo.EstruturaAtributoEttat;
27  import ecar.pojo.EstruturaEtt;
28  import ecar.pojo.ItemEstruturaIett;
29  import ecar.pojo.ItemEstruturaSisAtributoIettSatb;
30  import ecar.pojo.TipoAcompanhamentoTa;
31  import ecar.pojo.TipoFuncAcompTpfa;
32  import ecar.taglib.util.Input;
33  
34  /**
35   * @author felipev, aleixo
36   */
37  public class EstruturaAtributoDao extends Dao {
38    /*
39     * private AtributoDao atributoDao = null; private EstruturaDao estruturaDao =
40     * null;
41     */
42  
43    /**
44     * Construtor. Chama o Session factory do Hibernate
45     */
46    public EstruturaAtributoDao(HttpServletRequest request) {
47      super();
48      this.request = request;
49      /*
50       * atributoDao = new AtributoDao(this.request); estruturaDao = new
51       * EstruturaDao(this.request);
52       */
53    }
54  
55    /**
56     * Controla listas
57     * @author n/c
58     * @param request
59     * @param listaEstrutura
60     * @param listaAtributo
61     * @throws ECARException
62     */
63    public void controlaListas(HttpServletRequest request, List listaEstrutura, List listaAtributo) throws ECARException {
64  
65      if (Pagina.getParam(request, "estruturaEtt") != null) {
66        listaAtributo.addAll(this.getAtributos((EstruturaEtt) new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(Pagina.getParam(request, "estruturaEtt")))));
67      }
68      else {
69        listaAtributo.addAll(new AtributoDao(request).listar(AtributosAtb.class, new String[] { "nomeAtb", "asc" }));
70      }
71  
72      if (Pagina.getParam(request, "atributosAtb") != null) {
73        listaEstrutura.addAll(this.getEstruturas((AtributosAtb) new AtributoDao(request).buscar(AtributosAtb.class, Long.valueOf(Pagina.getParam(request, "atributosAtb")))));
74      }
75      else {
76        listaEstrutura.addAll(new EstruturaDao(request).listar(EstruturaEtt.class, new String[] { "nomeEtt", "asc" }));
77      }
78  
79    }
80  
81    /**
82     * @author n/c
83     * @param request
84     * @param estruturaAtributo
85     * @throws ECARException
86     * @throws HibernateException
87     */
88    public void alterar(HttpServletRequest request, EstruturaAtributoEttat estruturaAtributo) throws ECARException, HibernateException {
89      EstAtribTipoAcompEataDao eataDao = new EstAtribTipoAcompEataDao(null);
90      TipoAcompanhamentoDao taDao = new TipoAcompanhamentoDao(null);
91      Transaction tx = null;
92      try {
93        tx = this.session.beginTransaction();
94  
95        /*
96         * Gravar a EstruturaAtributoEttat
97         */
98        this.setEstruturaAtributo(request, estruturaAtributo, true);
99        session.update(estruturaAtributo);
100 
101       /*
102        * Gravar os objetos TipoAcompanhamentoTa 1 - Pegar pelo request quantos
103        * TipoAcompanhamentoTa foram informados na tela
104        */
105       String codTas = Pagina.getParamStr(request, "codTas");
106       ArrayList<Long> tas = new ArrayList<Long>();
107 
108       String codTemp = "";
109       for (int i = 0; i < codTas.length(); i++) {
110         if (!codTas.substring(i, i + 1).equals("|")) {
111           codTemp = codTemp + codTas.substring(i, i + 1);
112         }
113         else {
114           if (!codTemp.trim().equals("")) {
115             tas.add(Long.valueOf(codTemp));
116             codTemp = "";
117           }
118         }
119       }
120       Iterator it = tas.iterator();
121       while (it.hasNext()) {
122         Long codigoTas = (Long) it.next();
123         // System.out.println("tas: " + codigoTas);
124         /*
125          * 2 - Para cada TipoAcompanhamento, buscar o tipo.
126          */
127         TipoAcompanhamentoTa ta = (TipoAcompanhamentoTa) taDao.buscar(TipoAcompanhamentoTa.class, Long.valueOf(codigoTas));
128         if (ta != null) {
129           /*
130            * 3 - Estanciar objeto EstAtribTipoAcompEata setando os valores
131            * vindos do request
132            */
133           EstAtribTipoAcompEata eata = eataDao.getEstAtribTipoAcompEata(estruturaAtributo, ta);
134 
135           if (eata == null) {
136             eata = new EstAtribTipoAcompEata();
137             eata.setEstruturaAtributoEttat(estruturaAtributo);
138             eata.setTipoAcompanhamentoTa(ta);
139           }
140 
141           eata.setExibirEata(Pagina.getParamStr(request, "exibirEata" + ta.getCodTa().toString()));
142           if (!"".equals(Pagina.getParamStr(request, "sequenciaEata" + ta.getCodTa().toString()))) {
143             eata.setSequenciaEata(Long.valueOf(Pagina.getParamStr(request, "sequenciaEata" + ta.getCodTa().toString())));
144           }
145           else {
146             eata.setSequenciaEata(null);
147           }
148           // SERPRO
149           eata.setFiltroEata(Pagina.getParamStr(request, "filtroEata" + ta.getCodTa().toString()));
150           if (eata.getCodEata() == null) {
151             session.save(eata);
152           }
153           else {
154             session.update(eata);
155           }
156         }
157       }
158 
159       tx.commit();
160     } catch (Exception e) {
161       if (tx != null) {
162         tx.rollback();
163       }
164       this.logger.error(e);
165       throw new ECARException("erro.hibernateException");
166     }
167   }
168 
169   /**
170    * @author n/c
171    * @param request
172    * @param estruturaAtributo
173    * @param usarGetParamStr
174    * @throws ECARException
175    */
176   public void setEstruturaAtributo(HttpServletRequest request, EstruturaAtributoEttat estruturaAtributo, boolean usarGetParamStr) throws ECARException {
177     if (Pagina.getParam(request, "estruturaEtt") != null)
178       estruturaAtributo.setEstruturaEtt((EstruturaEtt) (new EstruturaDao(request).buscar(EstruturaEtt.class, Long.valueOf(Pagina.getParam(request, "estruturaEtt")))));
179     if (Pagina.getParam(request, "atributosAtb") != null)
180       estruturaAtributo.setAtributosAtb((AtributosAtb) new AtributoDao(request).buscar(AtributosAtb.class, Long.valueOf(Pagina.getParam(request, "atributosAtb"))));
181 
182     /* LUANA */
183     if (Pagina.getParam(request, "labelTamanhoConteudo") != null)
184       estruturaAtributo.setTamanhoConteudoAtribEttat(Integer.valueOf(Pagina.getParamStr(request, "labelTamanhoConteudo")));
185     else
186       estruturaAtributo.setTamanhoConteudoAtribEttat(null);
187 
188     if (usarGetParamStr) {
189       estruturaAtributo.setLabelEstruturaEttat(Pagina.getParamStr(request, "labelEstruturaEttat").trim());
190       estruturaAtributo.setIndObrigatorioEttat(Pagina.getParamOrDefault(request, "indObrigatorioEttat", Pagina.NAO));
191       estruturaAtributo.setIndPodeBloquearEttat(Pagina.getParamOrDefault(request, "indPodeBloquearEttat", Pagina.NAO));
192       estruturaAtributo.setIndFiltroEttat(Pagina.getParamOrDefault(request, "indFiltroEttat", Pagina.NAO));
193       estruturaAtributo.setIndListagemTelaEttat(Pagina.getParamOrDefault(request, "indListagemTelaEttat", Pagina.NAO));
194       estruturaAtributo.setIndRevisaoEttat(Pagina.getParamOrDefault(request, "indRevisaoEttat", Pagina.NAO));
195       estruturaAtributo.setIndListagemImpressCompEtta(Pagina.getParamOrDefault(request, "indListagemImpressCompEtta", Pagina.NAO));
196       estruturaAtributo.setIndListagemImpressaResEtta(Pagina.getParamOrDefault(request, "indListagemImpressaResEtta", Pagina.NAO));
197       estruturaAtributo.setIndRelacaoImpressaEttat(Pagina.getParamOrDefault(request, "indRelacaoImpressaEttat", Pagina.NAO));
198     }
199     else {
200       estruturaAtributo.setLabelEstruturaEttat(Pagina.getParam(request, "labelEstruturaEttat"));
201       estruturaAtributo.setIndObrigatorioEttat(Pagina.getParam(request, "indObrigatorioEttat"));
202       estruturaAtributo.setIndPodeBloquearEttat(Pagina.getParam(request, "indPodeBloquearEttat"));
203       estruturaAtributo.setIndFiltroEttat(Pagina.getParam(request, "indFiltroEttat"));
204       estruturaAtributo.setIndListagemTelaEttat(Pagina.getParam(request, "indListagemTelaEttat"));
205       estruturaAtributo.setIndRevisaoEttat(Pagina.getParam(request, "indRevisaoEttat"));
206       estruturaAtributo.setIndListagemImpressCompEtta(Pagina.getParam(request, "indListagemImpressCompEtta"));
207       estruturaAtributo.setIndListagemImpressaResEtta(Pagina.getParam(request, "indListagemImpressaResEtta"));
208       estruturaAtributo.setIndRelacaoImpressaEttat(Pagina.getParam(request, "indRelacaoImpressaEttat"));
209     }
210 
211     if (Pagina.getParam(request, "seqApresentTelaCampoEttat") != null)
212       estruturaAtributo.setSeqApresentTelaCampoEttat(Integer.valueOf(Pagina.getParam(request, "seqApresentTelaCampoEttat")));
213 
214     /* campos abaixo não são obrigatórios */
215     if (Pagina.getParam(request, "larguraListagemTelaEttat") != null)
216       estruturaAtributo.setLarguraListagemTelaEttat(Integer.valueOf(Pagina.getParam(request, "larguraListagemTelaEttat")));
217     else
218       estruturaAtributo.setLarguraListagemTelaEttat(null);
219     if (Pagina.getParam(request, "seqApresListagemTelaEttat") != null)
220       estruturaAtributo.setSeqApresListagemTelaEttat(Integer.valueOf(Pagina.getParam(request, "seqApresListagemTelaEttat")));
221     else
222       estruturaAtributo.setSeqApresListagemTelaEttat(null);
223     if (Pagina.getParam(request, "dicaEttat") != null)
224       estruturaAtributo.setDicaEttat(Pagina.getParam(request, "dicaEttat"));
225     else
226       estruturaAtributo.setDicaEttat(null);
227     if (Pagina.getParam(request, "documentacaoEttat") != null)
228       estruturaAtributo.setDocumentacaoEttat(Pagina.getParam(request, "documentacaoEttat"));
229     else
230       estruturaAtributo.setDocumentacaoEttat(null);
231   }
232 
233   /**
234    * Verificação das estruturas de acompanhementos que para quem o bloqueio foi
235    * liberado
236    * @param estrutFunc Função de Estrutura que recebe uma lista de Tipo de
237    *          Função de acompanhamento compermissão de editar funções mesmo
238    *          quando estas se encontram bloqueadas.
239    * @return Conjunto com a lista de tipo de acompanhamento
240    */
241   public Set setLimbTipoFuncAcompTpfa() {
242 
243     Set<TipoFuncAcompTpfa> set = new HashSet<TipoFuncAcompTpfa>();
244 
245     if (request.getParameterValues("limbTipoFuncAcompTpfa") != null) {
246       String strLibTipoFuncAcomp[] = request.getParameterValues("limbTipoFuncAcompTpfa");
247       Long codTpfa = null;
248 
249       try {
250         for (int i = 0; i < strLibTipoFuncAcomp.length; i++) {
251           codTpfa = Long.parseLong(strLibTipoFuncAcomp[i]);
252           TipoFuncAcompTpfa tipoFuncAcomp = (TipoFuncAcompTpfa) this.buscar(TipoFuncAcompTpfa.class, codTpfa);
253 
254           set.add(tipoFuncAcomp);
255         }// fim for
256       } catch (ECARException e) {
257         // e.printStackTrace();
258       }
259 
260     }// fim if
261 
262     return set;
263   }
264 
265   /**
266    * Retorna a Label de um atributo em uma estrutura
267    * @param nomeAtributo
268    * @param estrutura
269    * @return
270    * @throws ECARException
271    */
272   public String getLabelAtributoEstrutura(String nomeAtributo, EstruturaEtt estrutura) throws ECARException {
273     AtributosAtb atributo = new AtributosAtb();
274     atributo.setNomeAtb(nomeAtributo);
275     List atb = super.pesquisar(atributo, null);
276     if (atb.size() > 0) {
277       atributo = (AtributosAtb) atb.get(0);
278       EstruturaAtributoEttat estruturaAtributo = new EstruturaAtributoEttat();
279       estruturaAtributo.setAtributosAtb(atributo);
280       estruturaAtributo.setEstruturaEtt(estrutura);
281       List estAtb = super.pesquisar(estruturaAtributo, null);
282       if (estAtb.size() > 0)
283         return ((EstruturaAtributoEttat) estAtb.get(0)).getLabelEstruturaEttat();
284       else
285         return "";
286     }
287     return "";
288 
289   }
290 
291   /**
292    * Devolve uma lista com todas os atributos vinculados a uma estrutura
293    * @param estrutura
294    * @return List de AtributosAtb
295    */
296   public List getAtributos(EstruturaEtt estrutura) {
297     List retorno = new ArrayList();
298     if (estrutura.getEstruturaAtributoEttats() != null) {
299       Iterator it = estrutura.getEstruturaAtributoEttats().iterator();
300       while (it.hasNext()) {
301         EstruturaAtributoEttat estruturaAtributo = (EstruturaAtributoEttat) it.next();
302         retorno.add(estruturaAtributo.getAtributosAtb());
303       }
304     }
305     return retorno;
306   }
307 
308   /**
309    * Devolve uma lista com todas as estruturas vinculadas a um atributo
310    * @param estrutura
311    * @return List de EstruturaEtt
312    */
313   public List getEstruturas(AtributosAtb atributo) {
314     List retorno = new ArrayList();
315     if (atributo.getEstruturaAtributoEttats() != null) {
316       Iterator it = atributo.getEstruturaAtributoEttats().iterator();
317       while (it.hasNext()) {
318         EstruturaAtributoEttat estruturaAtributo = (EstruturaAtributoEttat) it.next();
319         retorno.add(estruturaAtributo.getEstruturaEtt());
320       }
321     }
322     return retorno;
323   }
324 
325   /**
326    * Retorna uma lista de objetos AtributoEstruturaBean, contendo os atributos
327    * válido de cada estrutura e sua respectiva estrutura.
328    * @return List<AtributoEstruturaBean>
329    * @throws ECARException
330    */
331   public List getAtributosValidoEstruturas(TipoAcompanhamentoTa tipoAcomp) throws ECARException {
332     List retorno = new ArrayList();
333 
334     List atributos = null;
335     if (tipoAcomp == null) {
336       atributos = this.getEstruturaAtributoEttatByEstruturaEtt(null);
337     }
338     else {
339       atributos = this.getEstruturaAtributoEttatByTipoAcompanhamentoTa(tipoAcomp);
340     }
341 
342     if (atributos != null && !atributos.isEmpty()) {
343       Iterator itAtributos = atributos.iterator();
344       while (itAtributos.hasNext()) {
345         EstruturaAtributoEttat atributo = (EstruturaAtributoEttat) itAtributos.next();
346         AtributoEstruturaBean aeBean = new AtributoEstruturaBean();
347         aeBean.setAtributo(atributo);
348         aeBean.setEstrutura(atributo.getEstruturaEtt());
349         retorno.add(aeBean);
350       }
351     }
352 
353     return retorno;
354   }
355 
356   /**
357    * Retorna uma string com os atributos definidos com "S" no campo
358    * IndListagemTelaEttat de EstruturaAtributoEttat, ordenados pela sequência de
359    * apresentação.
360    * @param item
361    * @return String
362    * @throws ECARException
363    */
364   public String getDescricaoItemByAtributo(ItemEstruturaIett item, TipoAcompanhamentoTa tipoAcomp) throws ECARException {
365     ItemEstruturaDao itemDao = new ItemEstruturaDao(null);
366     String retorno = "";
367 
368     List ettats = null;
369     if (tipoAcomp == null) {
370       ettats = this.getEstruturaAtributoEttatByEstruturaEtt(item.getEstruturaEtt());
371     }
372     else {
373       ettats = this.getEstruturaAtributoEttatByTipoAcompanhamentoTa(tipoAcomp);
374     }
375 
376     if (ettats != null && !ettats.isEmpty()) {
377       Iterator it = ettats.iterator();
378       while (it.hasNext()) {
379         EstruturaAtributoEttat atributo = (EstruturaAtributoEttat) it.next();
380 
381         if (tipoAcomp != null && !item.getEstruturaEtt().equals(atributo.getEstruturaEtt())) {
382           continue;
383         }
384         if (atributo.iGetGrupoAtributosLivres() != null) {
385           Iterator itIettSatbs = item.getItemEstruturaSisAtributoIettSatbs().iterator();
386           String informacaoIettSatb = "";
387           while (itIettSatbs.hasNext()) {
388             ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itIettSatbs.next();
389 
390             if (itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getSisGrupoAtributoSga().equals(atributo.iGetGrupoAtributosLivres())) {
391               if (atributo.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.TEXT)) || atributo.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.TEXTAREA)) || atributo.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.MULTITEXTO)) || atributo.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.VALIDACAO))) {
392 
393                 informacaoIettSatb = informacaoIettSatb + itemEstruturaSisAtributoIettSatb.getInformacaoIettSatb() + "; ";
394 
395               }
396               else if (!atributo.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.IMAGEM))) {
397                 // se for do tipo imagem não faz nada, deixa em branco.
398                 informacaoIettSatb = informacaoIettSatb + itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getDescricaoSatb() + "; ";
399               }
400             }
401           }
402           if (informacaoIettSatb.length() > 0) {
403             informacaoIettSatb = informacaoIettSatb.substring(0, informacaoIettSatb.length() - 2);
404           }
405           retorno += informacaoIettSatb + " - ";
406         }
407         else {
408           retorno += itemDao.getValorAtributoItemEstrutura(item, atributo.getAtributosAtb().getNomeAtb(), atributo.getAtributosAtb().getNomeFkAtb()) + " - ";
409         }
410       }
411     }
412 
413     if (retorno.length() > 0)
414       retorno = retorno.substring(0, retorno.lastIndexOf(" - "));
415 
416     return retorno;
417   }
418 
419   /**
420    * Retorna uma Lista de EstruturaAtributoEttat, para uma EstruturaEtt.
421    * @param tipoAcomp
422    * @return
423    */
424   public List getEstruturaAtributoEttatByEstruturaEtt(EstruturaEtt estrutura) throws ECARException {
425     try {
426       String select = "select ettat from EstruturaAtributoEttat ettat " + "where ettat.indListagemTelaEttat = 'S'";
427 
428       if (estrutura != null)
429         select += "  and ettat.estruturaEtt.codEtt = :codEtt";
430 
431       select += " order by ettat.seqApresListagemTelaEttat asc";
432 
433       Query q = this.session.createQuery(select);
434 
435       if (estrutura != null)
436         q.setLong("codEtt", estrutura.getCodEtt().longValue());
437 
438       return q.list();
439 
440     } catch (HibernateException e) {
441       this.logger.error(e);
442       throw new ECARException("erro.hibernateException");
443     }
444   }
445 
446   /**
447    * Retorna uma Lista de EstruturaAtributoEttat, para um TipoAcompanhamentoTa.
448    * @param tipoAcomp
449    * @return List
450    */
451   public List getEstruturaAtributoEttatByTipoAcompanhamentoTa(TipoAcompanhamentoTa tipoAcomp) throws ECARException {
452     List retorno = new ArrayList();
453     try {
454       StringBuilder select = new StringBuilder("select eata from EstAtribTipoAcompEata eata ").append(" 	where eata.tipoAcompanhamentoTa.codTa = :codTa ").append("     and eata.exibirEata = 'S' ").append(" order by eata.sequenciaEata asc");
455 
456       Query q = this.session.createQuery(select.toString());
457 
458       q.setLong("codTa", tipoAcomp.getCodTa().longValue());
459 
460       List eatas = q.list();
461       if (eatas != null && !eatas.isEmpty()) {
462         Iterator it = eatas.iterator();
463         while (it.hasNext()) {
464           EstAtribTipoAcompEata eata = (EstAtribTipoAcompEata) it.next();
465           retorno.add(eata.getEstruturaAtributoEttat());
466         }
467       }
468 
469     } catch (HibernateException e) {
470       this.logger.error(e);
471       throw new ECARException("erro.hibernateException");
472     }
473 
474     return retorno;
475   }
476 
477   /**
478    * Retorna a lista de EstruturaAtributoEttat buscando pelo
479    * TipoAcompanhamentoTa, exibirEata, sequenciaEata e filtroEata.
480    * @author egger - SERPRO
481    * @param tipoAcomp
482    * @param exibirEata
483    * @param sequenciaEata
484    * @return List
485    * @throws ECARException
486    */
487   public List getEstruturaAtributoEttatByEata(TipoAcompanhamentoTa tipoAcomp, String exibirEata, Long sequenciaEata, String filtroEata) throws ECARException {
488     List retorno = new ArrayList();
489     try {
490       String select = "select eata from EstAtribTipoAcompEata eata ";
491       String where = "";
492 
493       if (tipoAcomp != null) {
494         where += "where eata.tipoAcompanhamentoTa.codTa = :tipoAcomp";
495       }
496 
497       if (!"".equals(exibirEata)) {
498         if ("".equals(where)) {
499           where += " where ";
500         }
501         else {
502           where += " and ";
503         }
504         where += " eata.exibirEata = :exibirEata";
505       }
506 
507       if (sequenciaEata != null) {
508         if ("".equals(where)) {
509           where += " where ";
510         }
511         else {
512           where += " and ";
513         }
514         where += " eata.sequenciaEata = :sequenciaEata";
515       }
516       // SERPRO
517       if (!"".equals(filtroEata)) {
518         if ("".equals(where)) {
519           where += " where ";
520         }
521         else {
522           where += " and ";
523         }
524         where += " eata.filtroEata = :filtroEata";
525       }
526 
527       Query q = this.session.createQuery(select + where);
528 
529       if (tipoAcomp != null)
530         q.setLong("tipoAcomp", tipoAcomp.getCodTa().longValue());
531 
532       if (!"".equals(exibirEata))
533         q.setString("exibirEata", exibirEata);
534 
535       if (sequenciaEata != null)
536         q.setLong("sequenciaEata", sequenciaEata.longValue());
537       // SERPRO
538       if (!"".equals(filtroEata)) {
539         q.setString("filtroEata", filtroEata);
540       }
541 
542       List eatas = q.list();
543       if (eatas != null && !eatas.isEmpty()) {
544         Iterator it = eatas.iterator();
545         while (it.hasNext()) {
546           EstAtribTipoAcompEata eata = (EstAtribTipoAcompEata) it.next();
547           retorno.add(eata.getEstruturaAtributoEttat());
548         }
549       }
550 
551     } catch (HibernateException e) {
552       this.logger.error(e);
553       throw new ECARException("erro.hibernateException");
554     }
555 
556     return retorno;
557   }
558 
559   /**
560    * Filtra EstruturaAtributoEttat considerando os Tipos de Acompanhamentos
561    * definidos na tela (EstAtribTipoAcompEata).
562    * @param List estruturaAtributos
563    * @param List estAtribTipoAcomp
564    * @return List
565    * @throws ECARException
566    */
567   public List filtrarEstruturaAtributoByEata(List estruturaAtributos, List estAtribTipoAcomp) throws ECARException {
568     boolean possuiTiposAcomps = (estAtribTipoAcomp != null && estAtribTipoAcomp.size() > 0) ? true : false;
569     boolean possuiEttats = (estruturaAtributos != null && estruturaAtributos.size() > 0) ? true : false;
570 
571     if (possuiTiposAcomps && possuiEttats) {
572       List estruturaAtributosFiltrados = new ArrayList();
573       Iterator it = estAtribTipoAcomp.iterator();
574       while (it.hasNext()) {
575         EstAtribTipoAcompEata eata = (EstAtribTipoAcompEata) it.next();
576         // SERPRO add filtroEata
577         List ettats = this.getEstruturaAtributoEttatByEata(eata.getTipoAcompanhamentoTa(), eata.getExibirEata(), eata.getSequenciaEata(), eata.getFiltroEata());
578         Iterator itEt = ettats.iterator();
579         while (itEt.hasNext()) {
580           EstruturaAtributoEttat ettat = (EstruturaAtributoEttat) itEt.next();
581           if (!estruturaAtributosFiltrados.contains(ettat))
582             estruturaAtributosFiltrados.add(ettat);
583         }
584       }
585 
586       return new ArrayList(Util.intersecao(estruturaAtributos, estruturaAtributosFiltrados));
587     }
588     else {
589       return estruturaAtributos;
590     }
591   }
592 }