View Javadoc

1   package ecar.dao;
2   
3   import java.util.ArrayList;
4   import java.util.Collection;
5   import java.util.Collections;
6   import java.util.Comparator;
7   import java.util.Iterator;
8   import java.util.List;
9   import java.util.Map;
10  import java.util.TreeMap;
11  import java.util.TreeSet;
12  
13  import javax.servlet.http.HttpServletRequest;
14  
15  import org.hibernate.HibernateException;
16  import org.hibernate.Query;
17  
18  import comum.database.Dao;
19  
20  import ecar.exception.ECARException;
21  import ecar.pojo.EstAtribTipoAcompEata;
22  import ecar.pojo.EstruturaAtributoEttat;
23  import ecar.pojo.EstruturaEtt;
24  import ecar.pojo.ObjetoEstrutura;
25  import ecar.pojo.TipoAcompanhamentoTa;
26  
27  /**
28   * Classe de manipula��o de objetos da classe EstAtribTipoAcompEata.
29   * @author Igor Steinmacher
30   */
31  public class EstAtribTipoAcompEataDao extends Dao {
32  
33    public EstAtribTipoAcompEataDao(HttpServletRequest request) {
34      super();
35      this.request = request;
36    }
37  
38    /**
39     * Busca um EstAtribTipoAcompEata com base na EstruturaAtributoEttat e no
40     * TipoAcompanhamentoTa informado.
41     * @param estruturaAtributo
42     * @param tipoAcompanhamento
43     * @return EstAtribTipoAcompEata
44     * @throws ECARException
45     */
46    public EstAtribTipoAcompEata getEstAtribTipoAcompEata(EstruturaAtributoEttat estruturaAtributo, TipoAcompanhamentoTa tipoAcompanhamento) throws ECARException {
47      try {
48        StringBuilder select = new StringBuilder("select eata from EstAtribTipoAcompEata eata").append(" where eata.estruturaAtributoEttat.estruturaEtt.codEtt = :codEtt").append("   and eata.estruturaAtributoEttat.atributosAtb.codAtb = :codAtb").append("   and eata.tipoAcompanhamentoTa.codTa = :codTa");
49  
50        Query q = this.session.createQuery(select.toString());
51  
52        q.setLong("codEtt", estruturaAtributo.getEstruturaEtt().getCodEtt().longValue());
53        q.setLong("codAtb", estruturaAtributo.getAtributosAtb().getCodAtb().longValue());
54        q.setLong("codTa", tipoAcompanhamento.getCodTa().longValue());
55        q.setMaxResults(1);
56  
57        Object o = q.uniqueResult();
58  
59        if (o != null) {
60          return (EstAtribTipoAcompEata) o;
61        }
62        else {
63          return null;
64        }
65      } catch (HibernateException e) {
66        this.logger.error(e);
67        throw new ECARException("erro.hibernateException");
68      }
69    }
70  
71    public List getEstAtribTipoAcompEata(TipoAcompanhamentoTa tipoAcompanhamentoTa) throws ECARException {
72      try {
73  
74        EstAtribTipoAcompEata estAtribTipoAcompEata = new EstAtribTipoAcompEata();
75  
76        estAtribTipoAcompEata.setTipoAcompanhamentoTa(tipoAcompanhamentoTa);
77  
78        estAtribTipoAcompEata.setFiltroEata("S");
79        // estAtribTipoAcompEata.getFiltroEata()
80  
81        List lista = this.pesquisar(estAtribTipoAcompEata, new String[] { "estruturaAtributoEttat", Dao.ORDEM_ASC, "estruturaAtributoEttat.estruturaEtt", Dao.ORDEM_ASC });
82  
83        Iterator it = lista.iterator();
84  
85        /*
86         * while (it.hasNext()){ EstAtribTipoAcompEata eata =
87         * (EstAtribTipoAcompEata) it.next(); System.out.println("Nome Pai: " +
88         * (eata.getEstruturaAtributoEttat().getEstruturaEtt().getEstruturaEtt()
89         * == null ?
90         * "":eata.getEstruturaAtributoEttat().getEstruturaEtt().getEstruturaEtt
91         * ().getNomeEtt())); System.out.println("Nome estrutura: " +
92         * eata.getEstruturaAtributoEttat().getEstruturaEtt().getNomeEtt());
93         * System.out.println("Abributo: " +
94         * eata.getEstruturaAtributoEttat().getAtributosAtb().getNomeAtb());
95         * System.out.println("Tipo Acompanhamento: " +
96         * eata.getTipoAcompanhamentoTa().getDescricaoTa());
97         * System.out.println("Eh filtro: " + eata.getFiltroEata()); }
98         */
99  
100       return lista;
101     } catch (HibernateException e) {
102       this.logger.error(e);
103       throw new ECARException("erro.hibernateException");
104     }
105   }
106 
107   public List getEstruturaEhFiltro(TipoAcompanhamentoTa tipoAcompanhamentoTa) throws ECARException {
108     try {
109       StringBuilder select = new StringBuilder("select distinct eata.estruturaAtributoEttat.estruturaEtt from EstAtribTipoAcompEata eata").append(" where eata.tipoAcompanhamentoTa.codTa = :codTa").append(" and eata.filtroEata = 'S'");
110       // .append(" order by eata.estruturaAtributoEttat.estruturaEtt ASC,  eata.estruturaAtributoEttat.estruturaEtt.estruturaEtt ASC");
111 
112       Query q = this.session.createQuery(select.toString());
113 
114       q.setLong("codTa", tipoAcompanhamentoTa.getCodTa().longValue());
115 
116       List results = q.list();
117 
118       Iterator itResults = results.iterator();
119       EstruturaEtt estruturaCorrente = null;
120 
121       List estruturasOrdenadas = new ArrayList();
122 
123       // adiciona as estruturas raizes (que não tem pai) na lista ordenada
124       while (itResults.hasNext()) {
125 
126         estruturaCorrente = (EstruturaEtt) itResults.next();
127 
128         if (estruturaCorrente.getEstruturaEtt() == null) {
129 
130           estruturasOrdenadas.add(estruturaCorrente);
131         }
132 
133       }
134 
135       // remove apenas as raízes da lista de estruturas
136       // results.removeAll(estruturasOrdenadas);
137 
138       Iterator itEstruturasFilhas = results.iterator();
139       EstruturaEtt estruturaFilhaCorrente = null;
140 
141       while (itEstruturasFilhas.hasNext()) {
142 
143         estruturaFilhaCorrente = (EstruturaEtt) itEstruturasFilhas.next();
144 
145         if (estruturaFilhaCorrente.getEstruturaEtt() != null) {
146 
147           if (estruturasOrdenadas.indexOf(estruturaFilhaCorrente.getEstruturaEtt()) + 1 < estruturasOrdenadas.size()) {
148 
149             int indicePai = estruturasOrdenadas.indexOf(estruturaFilhaCorrente.getEstruturaEtt());
150 
151             estruturasOrdenadas.add(indicePai + 1, estruturaFilhaCorrente);
152           }
153           else {
154             estruturasOrdenadas.add(estruturaFilhaCorrente);
155           }
156 
157         }
158       }
159 
160       return estruturasOrdenadas;
161 
162     } catch (HibernateException e) {
163       this.logger.error(e);
164       throw new ECARException("erro.hibernateException");
165     }
166   }
167 }