1
2
3
4 package ecar.dao;
5
6 import java.util.ArrayList;
7 import java.util.Collections;
8 import java.util.Comparator;
9 import java.util.HashSet;
10 import java.util.Iterator;
11 import java.util.List;
12 import java.util.Set;
13
14 import javax.servlet.http.HttpServletRequest;
15
16 import org.hibernate.HibernateException;
17 import org.hibernate.Query;
18 import org.hibernate.Transaction;
19
20 import comum.database.Dao;
21 import comum.util.Data;
22 import comum.util.Pagina;
23
24 import ecar.exception.ECARException;
25 import ecar.historico.HistoricoIettus;
26 import ecar.login.SegurancaECAR;
27 import ecar.permissao.ControlePermissao;
28 import ecar.pojo.ItemEstrutUsuarioIettus;
29 import ecar.pojo.ItemEstruturaIett;
30 import ecar.pojo.SisAtributoSatb;
31 import ecar.pojo.UsuarioUsu;
32 import ecar.util.Dominios;
33
34
35
36
37 public class ItemEstrutUsuarioDao extends Dao {
38
39 public static final short PERMISSAO_CONSULTA_ITEM = 1;
40 public static final short PERMISSAO_ALTERA_ITEM = 2;
41 public static final short PERMISSAO_EXCLUI_ITEM = 3;
42 public static final short PERMISSAO_ADICIONA_ITEM = 4;
43 public static final short PERMISSAO_LIBERAR_PLANEJAMENTO_ITEM = 5;
44 public static final short PERMISSAO_BLOQUEAR_PLANEJAMENTO_ITEM = 6;
45
46
47
48
49 public ItemEstrutUsuarioDao(HttpServletRequest request) {
50 super();
51 this.request = request;
52 }
53
54
55
56
57
58
59
60
61
62 public void setItemUsuarioGrupo(HttpServletRequest request, ItemEstrutUsuarioIettus itemEstrutUsuario) throws ECARException {
63 try {
64 itemEstrutUsuario.setItemEstruturaIett((ItemEstruturaIett) buscar(ItemEstruturaIett.class, Long.valueOf(Pagina.getParamStr(request, "codIett"))));
65 itemEstrutUsuario.setItemEstruturaIettOrigem((ItemEstruturaIett) buscar(ItemEstruturaIett.class, Long.valueOf(Pagina.getParamStr(request, "codIett"))));
66
67
68 if (Pagina.getParamStr(request, "codUsu").startsWith(ControlePermissao.PERMISSAO_USUARIO)) {
69 String cod = Pagina.getParamStr(request, "codUsu").substring(1);
70 UsuarioUsu usuario = (UsuarioUsu) buscar(UsuarioUsu.class, Long.valueOf(cod));
71 itemEstrutUsuario.setUsuarioUsu(usuario);
72 itemEstrutUsuario.setCodTpPermIettus(ControlePermissao.PERMISSAO_USUARIO);
73 }
74
75 if (Pagina.getParamStr(request, "codUsu").startsWith(ControlePermissao.PERMISSAO_GRUPO)) {
76 String cod = Pagina.getParamStr(request, "codUsu").substring(1);
77 SisAtributoSatb sisAtributo = (SisAtributoSatb) buscar(SisAtributoSatb.class, Long.valueOf(cod));
78 itemEstrutUsuario.setSisAtributoSatb(sisAtributo);
79 itemEstrutUsuario.setCodTpPermIettus(ControlePermissao.PERMISSAO_GRUPO);
80 }
81 } catch (NumberFormatException e) {
82 this.logger.error(e);
83 throw new ECARException(e);
84 }
85 }
86
87
88
89
90
91
92
93
94 public void setItemEstrutUsuario(HttpServletRequest request, ItemEstrutUsuarioIettus itemEstrutUsuario) {
95 itemEstrutUsuario.setIndLeituraIettus(ControlePermissao.SIM.equals(Pagina.getParamStr(request, "indLeituraIettus")) ? ControlePermissao.SIM : ControlePermissao.NAO);
96 itemEstrutUsuario.setIndEdicaoIettus(ControlePermissao.SIM.equals(Pagina.getParamStr(request, "indEdicaoIettus")) ? ControlePermissao.SIM : ControlePermissao.NAO);
97 itemEstrutUsuario.setIndExcluirIettus(ControlePermissao.SIM.equals(Pagina.getParamStr(request, "indExcluirIettus")) ? ControlePermissao.SIM : ControlePermissao.NAO);
98 itemEstrutUsuario.setIndProxNivelIettus(ControlePermissao.SIM.equals(Pagina.getParamStr(request, "indProxNivelIettus")) ? ControlePermissao.SIM : ControlePermissao.NAO);
99 itemEstrutUsuario.setIndLeituraParecerIettus(ControlePermissao.SIM.equals(Pagina.getParamStr(request, "indLeituraParecerIettus")) ? ControlePermissao.SIM : ControlePermissao.NAO);
100 }
101
102
103
104
105
106
107
108 public List ordenaLista(List lista) throws ECARException {
109 try {
110 Collections.sort(lista, new Comparator() {
111 public int compare(Object o1, Object o2) {
112 if (((ItemEstrutUsuarioIettus) o1).getUsuarioUsu() != null && ((ItemEstrutUsuarioIettus) o2).getUsuarioUsu() != null)
113 return ((ItemEstrutUsuarioIettus) o1).getUsuarioUsu().getNomeUsuSent().compareToIgnoreCase(((ItemEstrutUsuarioIettus) o2).getUsuarioUsu().getNomeUsuSent());
114 else if (((ItemEstrutUsuarioIettus) o1).getSisAtributoSatb() != null && ((ItemEstrutUsuarioIettus) o2).getSisAtributoSatb() != null)
115 return ((ItemEstrutUsuarioIettus) o1).getSisAtributoSatb().getDescricaoSatb().compareToIgnoreCase(((ItemEstrutUsuarioIettus) o2).getSisAtributoSatb().getDescricaoSatb());
116 else if (((ItemEstrutUsuarioIettus) o1).getUsuarioUsu() != null && ((ItemEstrutUsuarioIettus) o2).getSisAtributoSatb() != null)
117 return ((ItemEstrutUsuarioIettus) o1).getUsuarioUsu().getNomeUsuSent().compareToIgnoreCase(((ItemEstrutUsuarioIettus) o2).getSisAtributoSatb().getDescricaoSatb());
118 else {
119 if (((ItemEstrutUsuarioIettus) o1).getSisAtributoSatb() != null && ((ItemEstrutUsuarioIettus) o2).getUsuarioUsu() != null)
120 return ((ItemEstrutUsuarioIettus) o1).getSisAtributoSatb().getDescricaoSatb().compareToIgnoreCase(((ItemEstrutUsuarioIettus) o2).getUsuarioUsu().getNomeUsuSent());
121 else
122 return 0;
123 }
124 }
125 });
126
127 return lista;
128 } catch (Exception e) {
129 logger.error(e);
130 throw new ECARException(e);
131 }
132 }
133
134
135
136
137
138
139
140 public Set getHerdaPermissao(Set setIettus) throws ECARException {
141 try {
142 Set heranca = new HashSet();
143 heranca.addAll(session.createFilter(setIettus, " where this.indProxNivelIettus = '" + ControlePermissao.SIM + "'").list());
144 return heranca;
145 } catch (HibernateException e) {
146 this.logger.error(e);
147 throw new ECARException(e);
148 }
149 }
150
151
152
153
154
155
156
157 public void salvar(ItemEstrutUsuarioIettus itemEstrutUsuarioIettus, UsuarioUsu usuario) throws ECARException {
158 Transaction tx = null;
159
160 try {
161 ArrayList objetos = new ArrayList();
162
163 super.inicializarLogBean();
164
165 tx = session.beginTransaction();
166
167 ControlePermissao controlePermissao = new ControlePermissao();
168
169 if (!controlePermissao.verificarInclusaoUsuarioGrupo(itemEstrutUsuarioIettus.getItemEstruturaIett(), itemEstrutUsuarioIettus)) {
170 throw new ECARException("itemEstrutura.usuario.validacao.inclusaoUsuarioGrupo");
171 }
172
173 session.save(itemEstrutUsuarioIettus);
174 objetos.add(itemEstrutUsuarioIettus);
175
176
177
178
179 controlePermissao.propagarPermissoesItensFilhos(itemEstrutUsuarioIettus, session);
180
181 tx.commit();
182
183 if (super.logBean != null) {
184 super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
185 super.logBean.setOperacao("INC");
186 Iterator itObj = objetos.iterator();
187
188 while (itObj.hasNext()) {
189 super.logBean.setObj(itObj.next());
190 super.loggerAuditoria.info(logBean.toString());
191 }
192 }
193 } catch (ECARException e) {
194 if (tx != null)
195 try {
196 tx.rollback();
197 } catch (HibernateException r) {
198 this.logger.error(r);
199 throw new ECARException("erro.hibernateException");
200 }
201 this.logger.error(e);
202 throw e;
203 } catch (HibernateException e) {
204 if (tx != null)
205 try {
206 tx.rollback();
207 } catch (HibernateException r) {
208 this.logger.error(r);
209 throw new ECARException("erro.hibernateException");
210 }
211 this.logger.error(e);
212 throw new ECARException("erro.hibernateException");
213 }
214 }
215
216
217
218
219
220
221
222
223 public void alterar(ItemEstrutUsuarioIettus novo, ItemEstrutUsuarioIettus old, String indProxNivelIettusAnterior) throws ECARException {
224
225 Transaction tx = null;
226
227 try {
228 ArrayList objetos = new ArrayList();
229
230 super.inicializarLogBean();
231
232 tx = session.beginTransaction();
233
234 ControlePermissao controlePermissao = new ControlePermissao();
235
236 if (!controlePermissao.verificarInclusaoUsuarioGrupo(novo.getItemEstruturaIett(), novo)) {
237 throw new ECARException("itemEstrutura.usuario.validacao.inclusaoUsuarioGrupo");
238 }
239
240
241
242
243
244
245
246 HistoricoIettus historico = new HistoricoIettus(old, HistoricoIettus.alterarPermissoes, session, new ConfiguracaoDao(request), request);
247 historico.gerarHistorico();
248
249
250
251 controlePermissao.atualizarPermissoesItensFilhos(novo, indProxNivelIettusAnterior, session, request, historico);
252
253 session.update(novo);
254 objetos.add(novo);
255
256
257
258 tx.commit();
259
260 if (super.logBean != null) {
261 super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
262 super.logBean.setOperacao("ALT");
263 Iterator itObj = objetos.iterator();
264
265 while (itObj.hasNext()) {
266 super.logBean.setObj(itObj.next());
267 super.loggerAuditoria.info(logBean.toString());
268 }
269 }
270 } catch (HibernateException e) {
271 if (tx != null)
272 try {
273 tx.rollback();
274 } catch (HibernateException r) {
275 this.logger.error(r);
276 throw new ECARException("erro.hibernateException");
277 }
278 this.logger.error(e);
279 throw new ECARException("erro.hibernateException");
280 }
281 }
282
283
284
285
286
287
288 public void excluir(String[] codigosParaExcluir, UsuarioUsu usuarioLogado) throws ECARException {
289
290 Transaction tx = null;
291
292 try {
293 ArrayList objetos = new ArrayList();
294
295 super.inicializarLogBean();
296
297 tx = session.beginTransaction();
298
299 for (int i = 0; i < codigosParaExcluir.length; i++) {
300
301 ItemEstrutUsuarioIettus old = (ItemEstrutUsuarioIettus) this.buscar(ItemEstrutUsuarioIettus.class, Long.valueOf(codigosParaExcluir[i]));
302
303
304 old.setUsuManutencao(usuarioLogado);
305
306
307
308
309 new ControlePermissao().removerPermissoesItensFilhos(old, session, request);
310
311
312 HistoricoIettus historico = new HistoricoIettus(old, HistoricoIettus.excluirPermissoes, session, new ConfiguracaoDao(request), request);
313 historico.gerarHistorico();
314
315
316 session.delete(old);
317 objetos.add(old);
318 }
319
320 tx.commit();
321
322 if (super.logBean != null) {
323 super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
324 super.logBean.setOperacao("EXC");
325 Iterator itObj = objetos.iterator();
326
327 while (itObj.hasNext()) {
328 super.logBean.setObj(itObj.next());
329 super.loggerAuditoria.info(logBean.toString());
330 }
331 }
332 } catch (HibernateException e) {
333 if (tx != null)
334 try {
335 tx.rollback();
336 } catch (HibernateException r) {
337 this.logger.error(r);
338 throw new ECARException("erro.hibernateException");
339 }
340 this.logger.error(e);
341 throw new ECARException("erro.hibernateException");
342 }
343 }
344
345
346
347
348
349
350
351
352
353 public List getItemEstrutUsuarioItemOrigemAndEmitePosicaoAndInfAndamento(Long codIett) throws ECARException {
354 try {
355 StringBuilder str = new StringBuilder();
356 str.append("select iettus from ItemEstrutUsuarioIettus iettus");
357 str.append(" where (iettus.indEmitePosIettus = :indEmitePosIettus");
358 str.append(" or iettus.indInfAndamentoIettus = :indInfAndamentoIettus)");
359 str.append(" and iettus.itemEstruturaIett.codIett = :codIett");
360 str.append(" and iettus.itemEstruturaIett.indAtivoIett = :indAtivo");
361
362 Query query = this.getSession().createQuery(str.toString());
363 query.setLong("codIett", codIett.longValue());
364 query.setString("indEmitePosIettus", "S");
365 query.setString("indInfAndamentoIettus", "S");
366 query.setString("indAtivo", "S");
367
368 return query.list();
369
370 } catch (HibernateException e) {
371 this.logger.error(e);
372 throw new ECARException(e);
373 }
374 }
375
376
377
378
379
380
381
382
383
384
385
386
387 public boolean PermissaoAcessoUsuarioItemEstrutura(ItemEstruturaIett iett, SegurancaECAR seguranca, short acao) throws ECARException {
388 try {
389 StringBuilder str = new StringBuilder("from ItemEstrutUsuarioIettus iettus " + "where iettus.itemEstruturaIett = :iett " + "and iettus.indEmitePosIettus = :emitepos " + "and iettus.itemEstruturaIett.indAtivoIett = :ativo " + "and (iettus.usuarioUsu.codUsu = :codusu ");
390
391 Set gruposUsuario = seguranca.getGruposAcesso();
392 if (gruposUsuario != null && gruposUsuario.size() > 0)
393 str.append(" or iettus.sisAtributoSatb in (:grupos)");
394 str.append(" ) ");
395
396 if (acao == PERMISSAO_CONSULTA_ITEM)
397 str.append("and iettus.indLeituraIettus = :leitura ");
398
399 else if (acao == PERMISSAO_ALTERA_ITEM) {
400 str.append("and iettus.indEdicaoIettus = :edita ");
401 str.append("and iettus.itemEstruturaIett.indBloqPlanejamentoIett = :bloqueia ");
402 }
403 else if (acao == PERMISSAO_EXCLUI_ITEM)
404 str.append("and iettus.indExcluirIettus = :exclui ");
405
406 else if (acao == PERMISSAO_LIBERAR_PLANEJAMENTO_ITEM) {
407 str.append("and (iettus.indDesblPlanIettus = :desbloqueia " + "and iettus.itemEstruturaIett.indBloqPlanejamentoIett = :bloqueiaitem) ");
408 }
409 else if (acao == PERMISSAO_BLOQUEAR_PLANEJAMENTO_ITEM) {
410 str.append("and iettus.indBloqPlanIettus = :bloqueia " + "and(iettus.itemEstruturaIett.indBloqPlanejamentoIett is null " + "or iettus.itemEstruturaIett.indBloqPlanejamentoIett = :bloqueiaitem) ");
411 }
412 Query q = this.getSession().createQuery(str.toString());
413
414 q.setMaxResults(1);
415 q.setParameter("iett", iett);
416 q.setString("emitepos", Dominios.SIM);
417 q.setString("ativo", Dominios.ATIVO);
418 q.setLong("codusu", seguranca.getCodUsu());
419 if (gruposUsuario != null && gruposUsuario.size() > 0)
420 q.setParameterList("grupos", gruposUsuario);
421
422 if (acao == PERMISSAO_CONSULTA_ITEM)
423 q.setString("leitura", Dominios.SIM);
424
425 else if (acao == PERMISSAO_ALTERA_ITEM) {
426 q.setString("edita", Dominios.SIM);
427 q.setString("bloqueia", Dominios.NAO);
428 }
429 else if (acao == PERMISSAO_EXCLUI_ITEM)
430 q.setString("exclui", Dominios.SIM);
431
432 else if (acao == PERMISSAO_LIBERAR_PLANEJAMENTO_ITEM) {
433 q.setString("desbloqueia", Dominios.SIM);
434 q.setString("bloqueiaitem", Dominios.NAO);
435 }
436 else if (acao == PERMISSAO_BLOQUEAR_PLANEJAMENTO_ITEM) {
437 q.setString("bloqueia", Dominios.SIM);
438 q.setString("bloqueiaitem", Dominios.NAO);
439 }
440
441 return !q.list().isEmpty();
442
443 } catch (HibernateException e) {
444 this.logger.error(e);
445 throw new ECARException(e);
446 }
447 }
448 }