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
29
30
31 public class EstAtribTipoAcompEataDao extends Dao {
32
33 public EstAtribTipoAcompEataDao(HttpServletRequest request) {
34 super();
35 this.request = request;
36 }
37
38
39
40
41
42
43
44
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
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
87
88
89
90
91
92
93
94
95
96
97
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
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
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
136
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 }