1
2
3
4 package ecar.dao;
5
6 import java.io.File;
7 import java.util.ArrayList;
8 import java.util.Collections;
9 import java.util.Comparator;
10 import java.util.HashMap;
11 import java.util.Iterator;
12 import java.util.List;
13 import java.util.Map;
14 import java.util.Set;
15 import java.util.TreeMap;
16
17 import javax.servlet.http.HttpServletRequest;
18
19 import org.apache.commons.fileupload.FileItem;
20 import org.hibernate.Query;
21
22 import comum.database.Dao;
23 import comum.util.FileUpload;
24 import comum.util.Pagina;
25 import comum.util.Util;
26
27 import ecar.exception.ECARException;
28 import ecar.pojo.Cor;
29 import ecar.pojo.CorTipoFuncAcompCtfa;
30 import ecar.pojo.TipoFuncAcompTpfa;
31 import ecar.servlet.grafico.bean.PosicaoBean;
32 import ecar.util.Dominios;
33
34
35
36
37 public class CorDao extends Dao {
38
39
40
41
42 public CorDao(HttpServletRequest request) {
43 super();
44 this.request = request;
45 }
46
47
48
49
50
51
52
53
54
55 public void salvar(Cor cor) throws ECARException {
56 if (pesquisarDuplos(cor, new String[] { "nomeCor" }, "codCor").size() > 0)
57 throw new ECARException("cor.validacao.registroDuplicado");
58 super.salvar(cor, cor.getCorTipoFuncAcompCtfas());
59 }
60
61
62
63
64
65
66
67
68
69 public void alterar(Cor cor) throws ECARException {
70 if (pesquisarDuplos(cor, new String[] { "nomeCor" }, "codCor").size() > 0)
71 throw new ECARException("cor.validacao.registroDuplicado");
72
73
74
75
76
77
78 List<CorTipoFuncAcompCtfa> listCtfa = new ArrayList(cor.getCorTipoFuncAcompCtfas());
79 CorTipoFuncAcompCtfa aux = null;
80
81 for (CorTipoFuncAcompCtfa ctfa : listCtfa) {
82
83
84
85 Query query = session.createQuery(" from CorTipoFuncAcompCtfa " + " where comp_id.codCor = :codCor " + " and comp_id.codTpfa = :tipoFunc " + " and comp_id.posicaoCtfa = :posicao ");
86
87 query.setLong("codCor", ctfa.getComp_id().getCodCor());
88 query.setLong("tipoFunc", ctfa.getComp_id().getCodTpfa());
89 query.setString("posicao", ctfa.getComp_id().getPosicaoCtfa());
90
91 aux = (CorTipoFuncAcompCtfa) query.uniqueResult();
92
93 if (aux != null)
94 super.alterar(ctfa);
95 else
96 super.salvar(ctfa);
97 }
98
99 super.alterar(cor);
100 }
101
102
103
104
105
106
107
108
109 public String getImagemSinal(Cor cor, TipoFuncAcompTpfa funcaoAcomp) {
110 return "s" + cor.getNomeCor() + funcaoAcomp.getTamanhoSinalTpfa() + ".png";
111 }
112
113
114
115
116
117
118
119
120 public String getImagemSinalRelPosicoes(Cor cor, TipoFuncAcompTpfa funcaoAcomp) {
121
122
123 if (cor != null)
124 return "r" + cor.getNomeCor() + funcaoAcomp.getTamanhoSinalTpfa() + ".png";
125 else
126 return "rBranco" + funcaoAcomp.getTamanhoSinalTpfa() + ".png";
127 }
128
129
130
131
132
133
134
135
136 public String getImagemRelatorio(Cor cor, TipoFuncAcompTpfa funcaoAcomp) {
137 if (cor != null)
138 return cor.getNomeCor().toLowerCase() + funcaoAcomp.getTamanhoSinalTpfa() + ".png";
139 else
140 return "branco" + funcaoAcomp.getTamanhoSinalTpfa() + ".png";
141 }
142
143 public List getOrdemCores() throws ECARException {
144 return this.listar(Cor.class, new String[] { "ordemCor", "" });
145 }
146
147
148
149
150
151
152
153
154
155
156
157
158
159 public void uploadImagem(List campos) throws ECARException {
160 String pathRaiz = new ecar.dao.ConfiguracaoDao(request).getConfiguracao().getRaizUpload();
161 String pathRelativo = Dominios.PATH_REMOTE_IMAGES;
162
163 try {
164 Iterator it = campos.iterator();
165 while (it.hasNext()) {
166 FileItem fileItem = (FileItem) it.next();
167
168 if (!fileItem.isFormField() && !"".equals(fileItem.getName())) {
169 String fileName = FileUpload.getNomeArquivo(fileItem);
170 File realFile = new File(pathRaiz + pathRelativo + fileName);
171
172 if (realFile.exists())
173 FileUpload.apagarArquivo(pathRaiz + pathRelativo + fileName);
174 File arquivoGravado = FileUpload.salvarNoDisco(fileItem, FileUpload.getPathFisico(pathRaiz, pathRelativo, fileName));
175 }
176 }
177 } catch (Exception e) {
178 this.logger.error(e);
179 throw new ECARException(e);
180 }
181
182 }
183
184
185
186
187
188
189
190
191
192
193
194
195
196 public String getImagemPersonalizada(Cor cor, TipoFuncAcompTpfa funcaoAcomp, String posicao) throws ECARException {
197 String path = null;
198 ConfiguracaoDao cdao = new ConfiguracaoDao(null);
199
200 if (cor != null && cor.getCodCor() != null && funcaoAcomp != null && posicao != null) {
201 CorTipoFuncAcompCtfa ctfa = null;
202
203 try {
204 Query query = session.createQuery(" from CorTipoFuncAcompCtfa " + " where comp_id.codCor = :codCor " + " and comp_id.codTpfa = :tipoFunc " + " and comp_id.posicaoCtfa = :posicao ");
205
206 query.setLong("codCor", cor.getCodCor());
207 query.setLong("tipoFunc", funcaoAcomp.getCodTpfa());
208 query.setString("posicao", posicao);
209
210 ctfa = (CorTipoFuncAcompCtfa) query.uniqueResult();
211 } catch (Exception e) {
212 this.logger.error(e);
213 throw new ECARException("erro.exception");
214 }
215
216
217
218
219
220
221 if (ctfa != null && (ctfa.getCaminhoImagemCtfa() != null || !"".equals(ctfa.getCaminhoImagemCtfa()))) {
222 path = cdao.getConfiguracao().getRaizUpload() + Dominios.PATH_REMOTE_IMAGES + ctfa.getCaminhoImagemCtfa();
223 File file = new File(path);
224 if (!file.exists())
225 path = null;
226 }
227 }
228 else if (cor != null && cor.getCodCor() != null && funcaoAcomp == null) {
229 path = cdao.getConfiguracao().getRaizUpload() + Dominios.PATH_REMOTE_IMAGES + cor.getCaminhoImagemPontoCriticoCor();
230 File file = new File(path);
231 if (!file.exists())
232 path = null;
233 }
234
235 return path;
236 }
237
238
239
240
241
242
243
244
245
246
247
248
249 public String getImagemPersonalizadaIndResul(Cor cor) throws ECARException {
250 String path = null;
251 ConfiguracaoDao cdao = new ConfiguracaoDao(null);
252
253 if (cor != null && cor.getCodCor() != null) {
254 path = cdao.getConfiguracao().getRaizUpload() + Dominios.PATH_REMOTE_IMAGES + cor.getCaminhoImagemIndResulCor();
255 File file = new File(path);
256 if (!file.exists())
257 path = null;
258 }
259
260 return path;
261 }
262
263
264
265
266
267
268
269
270
271
272
273
274 public void excluirCor(Cor cor) throws ECARException {
275 List<String> listImages = new ArrayList<String>();
276 List<CorTipoFuncAcompCtfa> listCtfa = new ArrayList<CorTipoFuncAcompCtfa>();
277
278
279
280
281
282 try {
283
284 listImages.add(cor.getCaminhoImagemPontoCriticoCor());
285
286
287 Query query = session.createQuery(" from CorTipoFuncAcompCtfa " + " where comp_id.codCor = :codCor ");
288
289 query.setLong("codCor", cor.getCodCor());
290 listCtfa = query.list();
291
292 for (CorTipoFuncAcompCtfa ctfa : listCtfa)
293 listImages.add(ctfa.getCaminhoImagemCtfa());
294 } catch (Exception e) {
295 this.logger.error(e);
296 throw new ECARException("erro.exception");
297 }
298
299
300
301
302 try {
303 this.excluir(cor);
304 } catch (Exception e) {
305 this.logger.error(e);
306 throw new ECARException("erro.exception");
307 }
308
309
310
311
312
313 try {
314 ConfiguracaoDao cDao = new ConfiguracaoDao(request);
315 String pathRoot = cDao.getConfiguracao().getRaizUpload();
316 String fullFile = "";
317
318 for (int i = 0; i < listImages.size(); i++) {
319 if (listImages.get(i) != null) {
320 fullFile = pathRoot + Dominios.PATH_REMOTE_IMAGES + listImages.get(i);
321
322 File f = new File(fullFile);
323 if (f.exists())
324 FileUpload.apagarArquivo(fullFile);
325 }
326 }
327 } catch (Exception e) {
328 this.logger.error(e);
329 throw new ECARException("erro.exception");
330 }
331 }
332
333
334
335
336
337
338
339
340
341 public Map<String, Integer> criarMapCodCorPosicoesGeraisGrafico() throws ECARException {
342 CorDao corDao = new CorDao(null);
343
344
345
346 Map<String, Integer> mapCoresConfiguradas = new HashMap<String, Integer>();
347
348
349 mapCoresConfiguradas.put(Cor.BRANCO, 0);
350 mapCoresConfiguradas.put(Cor.NAO_LIBERADO, 0);
351 mapCoresConfiguradas.put(Cor.NAO_ACOMPANHADO, 0);
352
353 Iterator<Cor> itCor = corDao.listar(Cor.class, new String[] { "ordemCor", "asc" }).iterator();
354
355 while (itCor.hasNext()) {
356 Cor cor = itCor.next();
357
358 if (cor.getIndPosicoesGeraisCor().equals(Pagina.SIM)) {
359 mapCoresConfiguradas.put(cor.getCodCor() + "", 0);
360 }
361 }
362
363 return mapCoresConfiguradas;
364 }
365
366
367
368
369
370
371
372 public Map<String, Integer> contadorDePosicoesPorCores(PosicaoBean posicaoBean) throws ECARException {
373 int totalNaoAcompanhado = 0, totalNaoLiberado = 0, totalWhite = 0;
374 Map<String, Integer> mapCoresConfiguradas = this.criarMapCodCorPosicoesGeraisGrafico();
375 Iterator itCoresPosicoes = posicaoBean.getCor().iterator();
376
377 while (itCoresPosicoes.hasNext()) {
378 String cor = itCoresPosicoes.next().toString();
379 mapCoresConfiguradas.put(cor, mapCoresConfiguradas.get(cor) + 1);
380 }
381
382 return mapCoresConfiguradas;
383
384 }
385
386 public List<String> ordenarCores(Set<String> setCores) {
387 return ordenarCores(new ArrayList<String>(setCores));
388 }
389
390 public List<String> ordenarCores(List<String> listCores) {
391
392
393 Collections.sort(listCores, new Comparator() {
394
395 public int compare(Object arg0, Object arg1) {
396
397 String cor1 = (String) arg0;
398 String cor2 = (String) arg1;
399
400 boolean codCor1EhValor = Util.ehValor(cor1);
401 boolean codCor2EhValor = Util.ehValor(cor2);
402
403 if (codCor1EhValor && codCor2EhValor) {
404 Long longCor1 = Long.parseLong(cor1);
405 Long longCor2 = Long.parseLong(cor2);
406 return longCor1.compareTo(longCor2);
407 }
408 else if (codCor1EhValor) {
409 return -1;
410 }
411 else if (codCor2EhValor) {
412 return 1;
413 }
414 else {
415 return cor1.compareTo(cor2);
416 }
417 }
418 }
419 );
420
421 return listCores;
422 }
423
424 }