1 /* 2 * Created on 13/09/2004 3 */ 4 package ecar.dao; 5 6 import java.util.ArrayList; 7 import java.util.Iterator; 8 import java.util.List; 9 import java.util.Set; 10 11 import javax.servlet.http.HttpServletRequest; 12 13 import org.hibernate.HibernateException; 14 import org.hibernate.Query; 15 import org.hibernate.criterion.Restrictions; 16 17 import comum.database.Dao; 18 import comum.util.Pagina; 19 20 import ecar.exception.ECARException; 21 import ecar.login.SegurancaECAR; 22 import ecar.permissao.ValidaPermissao; 23 import ecar.pojo.EstruturaAcessoEtta; 24 import ecar.pojo.EstruturaAcessoEttaPK; 25 import ecar.pojo.EstruturaEtt; 26 import ecar.pojo.SisAtributoSatb; 27 import ecar.util.Dominios; 28 import ecar.pojo.TipoAcompGrpAcesso; 29 import ecar.pojo.TipoAcompanhamentoTa; 30 31 /** 32 * @author evandro 33 */ 34 public class EstruturaAcessoDao extends Dao { 35 36 public static final short PERMISSAO_ACESSO_SECRETARIA = 1; 37 public static final short PERMISSAO_ACESSO_OUTRA_SECRETARIA = 2; 38 39 ValidaPermissao validaPermissao = new ValidaPermissao(); 40 41 /** 42 * Construtor. Chama o Session factory do Hibernate 43 */ 44 public EstruturaAcessoDao(HttpServletRequest request) { 45 super(); 46 this.request = request; 47 } 48 49 public EstruturaAcessoDao() { 50 super(); 51 } 52 53 /** 54 * Verifica se um grupo de usuario tem permissao de incluir registro de 55 * monitoramento em qualquer estrutura. 56 * @param estrutura 57 * @param gruposUsuario 58 * @return 59 * @throws ECARException 60 */ 61 // @@ALTERAR@@ 62 // public boolean temPermissoesAcessoAcompMonitorado(Set gruposUsuario) throws 63 // ECARException { 64 // boolean resultado = false; 65 // 66 // try { 67 // Query q = 68 // this.getSession().createQuery("select permissoes.estruturaEtt.codEtt " + 69 // "from EstruturaAcessoEtta permissoes " + 70 // "where permissoes.indIncAcompMonitoradoEtta = :incluir " + 71 // "and permissoes.sisAtributoSatb.codSatb in (:lista) "); 72 // 73 // q.setMaxResults(1); 74 // 75 // q.setString("incluir", ValidaPermissao.SIM); 76 // 77 // List codigos = new ArrayList(); 78 // Iterator it = gruposUsuario.iterator(); 79 // 80 // while(it.hasNext()){ 81 // SisAtributoSatb atributo = (SisAtributoSatb) it.next(); 82 // codigos.add(atributo.getCodSatb()); 83 // } 84 // q.setParameterList("lista", codigos); 85 // 86 // List retorno = q.list(); 87 // if(!retorno.isEmpty()) { 88 // resultado = true; 89 // } 90 // 91 // } catch (HibernateException e) { 92 // this.logger.error(e); 93 // throw new ECARException(e); 94 // } 95 // return resultado; 96 // 97 // } 98 /** 99 * Verifica se um grupo de usuario tem permissao de incluir registro de 100 * monitoramento em qualquer estrutura para registros de sua propria 101 * secretaria. 102 * @param estrutura 103 * @param gruposUsuario 104 * @return 105 * @throws ECARException 106 */ 107 // @@ALTERAR@@ 108 // public boolean temPermissoesAcessoSecretaria(Set gruposUsuario) throws 109 // ECARException { 110 // boolean resultado = false; 111 // 112 // try { 113 // Query q = 114 // this.getSession().createQuery("select permissoes.estruturaEtt.codEtt " + 115 // "from EstruturaAcessoEtta permissoes " + 116 // "where permissoes.indLeiAcompSecpropEtta = :incluir " + 117 // "and permissoes.sisAtributoSatb.codSatb in (:lista) "); 118 // 119 // q.setMaxResults(1); 120 // 121 // q.setString("incluir", ValidaPermissao.SIM); 122 // 123 // List codigos = new ArrayList(); 124 // Iterator it = gruposUsuario.iterator(); 125 // 126 // while(it.hasNext()){ 127 // SisAtributoSatb atributo = (SisAtributoSatb) it.next(); 128 // codigos.add(atributo.getCodSatb()); 129 // } 130 // q.setParameterList("lista", codigos); 131 // 132 // List retorno = q.list(); 133 // if(!retorno.isEmpty()) { 134 // resultado = true; 135 // } 136 // 137 // } catch (HibernateException e) { 138 // this.logger.error(e); 139 // throw new ECARException(e); 140 // } 141 // return resultado; 142 // 143 // } 144 /** 145 * Verifica se um grupo de usuario tem permissao de incluir registro de 146 * monitoramento em qualquer estrutura para registros de qualquer secretaria 147 * que não a sua própria. 148 * @param estrutura 149 * @param gruposUsuario 150 * @return 151 * @throws ECARException 152 */ 153 // @@ALTERAR@@ 154 // public boolean temPermissoesAcessoOutraSecretaria(Set gruposUsuario) throws 155 // ECARException { 156 // boolean resultado = false; 157 // 158 // try { 159 // Query q = 160 // this.getSession().createQuery("select permissoes.estruturaEtt.codEtt " + 161 // "from EstruturaAcessoEtta permissoes " + 162 // "where permissoes.indIncAcompSecoutrEtta = :incluir " + 163 // "and permissoes.sisAtributoSatb.codSatb in (:lista) "); 164 // 165 // q.setMaxResults(1); 166 // 167 // q.setString("incluir", ValidaPermissao.SIM); 168 // 169 // List codigos = new ArrayList(); 170 // Iterator it = gruposUsuario.iterator(); 171 // 172 // while(it.hasNext()){ 173 // SisAtributoSatb atributo = (SisAtributoSatb) it.next(); 174 // codigos.add(atributo.getCodSatb()); 175 // } 176 // q.setParameterList("lista", codigos); 177 // 178 // List retorno = q.list(); 179 // if(!retorno.isEmpty()) { 180 // resultado = true; 181 // } 182 // 183 // } catch (HibernateException e) { 184 // this.logger.error(e); 185 // throw new ECARException(e); 186 // } 187 // return resultado; 188 // 189 // } 190 /** 191 * Verifica se um grupo de usuario tem permissao de incluir registro de 192 * monitoramento em uma estrutura. 193 * @param estrutura 194 * @param gruposUsuario 195 * @return 196 * @throws ECARException 197 */ 198 // @@ALTERAR@@ 199 // public boolean temPermissoesAcessoAcompMonitorado(Set gruposUsuario, 200 // EstruturaEtt estrutura) throws ECARException { 201 // boolean resultado = false; 202 // 203 // try { 204 // Query q = 205 // this.getSession().createQuery("select permissoes.estruturaEtt.codEtt " + 206 // "from EstruturaAcessoEtta permissoes " + 207 // "where permissoes.indIncAcompMonitoradoEtta = :incluir " + 208 // "and permissoes.sisAtributoSatb.codSatb in (:lista) " + 209 // "and permissoes.estruturaEtt.codEtt = :codEtt"); 210 // 211 // q.setMaxResults(1); 212 // 213 // q.setString("incluir", ValidaPermissao.SIM); 214 // 215 // List codigos = new ArrayList(); 216 // Iterator it = gruposUsuario.iterator(); 217 // 218 // while(it.hasNext()){ 219 // SisAtributoSatb atributo = (SisAtributoSatb) it.next(); 220 // codigos.add(atributo.getCodSatb()); 221 // } 222 // q.setParameterList("lista", codigos); 223 // 224 // q.setLong("codEtt", estrutura.getCodEtt().longValue()); 225 // 226 // List retorno = q.list(); 227 // if(!retorno.isEmpty()) { 228 // resultado = true; 229 // } 230 // 231 // } catch (HibernateException e) { 232 // this.logger.error(e); 233 // throw new ECARException(e); 234 // } 235 // return resultado; 236 // 237 // } 238 /** 239 * Verifica se um grupo de usuario tem permissao de incluir registro de 240 * monitoramento em uma estrutura para registros de sua propria secretaria. 241 * @param estrutura 242 * @param gruposUsuario 243 * @return 244 * @throws ECARException 245 */ 246 // @@ALTERAR@@ 247 // public boolean temPermissoesAcessoSecretaria(Set gruposUsuario, 248 // EstruturaEtt estrutura) throws ECARException { 249 // boolean resultado = false; 250 // 251 // try { 252 // Query q = 253 // this.getSession().createQuery("select permissoes.estruturaEtt.codEtt " + 254 // "from EstruturaAcessoEtta permissoes " + 255 // "where permissoes.estruturaEtt.codEtt = :codEtt and " + 256 // "permissoes.indLeiAcompSecpropEtta = :incluir " + 257 // "and permissoes.sisAtributoSatb.codSatb in (:lista) "); 258 // 259 // q.setMaxResults(1); 260 // 261 // q.setLong("codEtt", estrutura.getCodEtt().longValue()); 262 // q.setString("incluir", ValidaPermissao.SIM); 263 // 264 // List codigos = new ArrayList(); 265 // Iterator it = gruposUsuario.iterator(); 266 // 267 // while(it.hasNext()){ 268 // SisAtributoSatb atributo = (SisAtributoSatb) it.next(); 269 // codigos.add(atributo.getCodSatb()); 270 // } 271 // q.setParameterList("lista", codigos); 272 // 273 // List retorno = q.list(); 274 // if(!retorno.isEmpty()) { 275 // resultado = true; 276 // } 277 // 278 // } catch (HibernateException e) { 279 // this.logger.error(e); 280 // throw new ECARException(e); 281 // } 282 // return resultado; 283 // 284 // } 285 /** 286 * Verifica se um grupo de usuario tem permissao de incluir registro de 287 * monitoramento em qualquer estrutura para registros de qualquer secretaria 288 * que não a sua própria. 289 * @param estrutura 290 * @param gruposUsuario 291 * @return 292 * @throws ECARException 293 */ 294 // @@ALTERAR@@ 295 // public boolean temPermissoesAcessoOutraSecretaria(Set gruposUsuario, 296 // EstruturaEtt estrutura) throws ECARException { 297 // boolean resultado = false; 298 // 299 // try { 300 // Query q = 301 // this.getSession().createQuery("select permissoes.estruturaEtt.codEtt " + 302 // "from EstruturaAcessoEtta permissoes " + 303 // "where permissoes.estruturaEtt.codEtt = :codEtt and " + 304 // "permissoes.indIncAcompSecoutrEtta = :incluir " + 305 // "and permissoes.sisAtributoSatb.codSatb in (:lista) "); 306 // 307 // q.setMaxResults(1); 308 // 309 // q.setLong("codEtt", estrutura.getCodEtt().longValue()); 310 // q.setString("incluir", ValidaPermissao.SIM); 311 // 312 // List codigos = new ArrayList(); 313 // Iterator it = gruposUsuario.iterator(); 314 // 315 // while(it.hasNext()){ 316 // SisAtributoSatb atributo = (SisAtributoSatb) it.next(); 317 // codigos.add(atributo.getCodSatb()); 318 // } 319 // q.setParameterList("lista", codigos); 320 // 321 // List retorno = q.list(); 322 // if(!retorno.isEmpty()) { 323 // resultado = true; 324 // } 325 // 326 // } catch (HibernateException e) { 327 // this.logger.error(e); 328 // throw new ECARException(e); 329 // } 330 // return resultado; 331 // 332 // } 333 334 /** 335 * Verifica um conjunto de grupos de acesso tem permissao de leitura de 336 * acompanhamento para registros monitorados de sua responsabilidade 337 * @param estrutura 338 * @param gruposUsuario 339 * @return 340 * @throws ECARException 341 */ 342 // @@ALTERAR@@ 343 // public boolean temPermissoesLeituraAcompSuaResponsabilidade(Set 344 // gruposUsuario, EstruturaEtt estrutura) throws ECARException { 345 // boolean resultado = false; 346 // 347 // try { 348 // Query q = 349 // this.getSession().createQuery("select permissoes.estruturaEtt.codEtt " + 350 // "from EstruturaAcessoEtta permissoes " + 351 // "where permissoes.estruturaEtt.codEtt = :codEtt and " + 352 // "permissoes.indLeiAcompSuaResponsEtta = :leitura " + 353 // "and permissoes.sisAtributoSatb.codSatb in (:lista) "); 354 // 355 // q.setMaxResults(1); 356 // 357 // q.setLong("codEtt", estrutura.getCodEtt().longValue()); 358 // q.setString("leitura", ValidaPermissao.SIM); 359 // 360 // List codigos = new ArrayList(); 361 // Iterator it = gruposUsuario.iterator(); 362 // 363 // while(it.hasNext()){ 364 // SisAtributoSatb atributo = (SisAtributoSatb) it.next(); 365 // codigos.add(atributo.getCodSatb()); 366 // } 367 // q.setParameterList("lista", codigos); 368 // 369 // List retorno = q.list(); 370 // if(!retorno.isEmpty()) { 371 // resultado = true; 372 // } 373 // 374 // } catch (HibernateException e) { 375 // this.logger.error(e); 376 // throw new ECARException(e); 377 // } 378 // return resultado; 379 // 380 // } 381 /** 382 * Verifica se um grupo de grupos de acesso tem permissao de leitura de 383 * acompanhamento para registros monitorados de sua secretaria/órgão 384 * @param estrutura 385 * @param gruposUsuario 386 * @return 387 * @throws ECARException 388 */ 389 // @@ALTERAR@@ 390 // public boolean temPermissoesLeituraAcompMonitoradoSuaSecretaria(Set 391 // gruposUsuario, EstruturaEtt estrutura) throws ECARException { 392 // boolean resultado = false; 393 // 394 // try { 395 // Query q = 396 // this.getSession().createQuery("select permissoes.estruturaEtt.codEtt " + 397 // "from EstruturaAcessoEtta permissoes " + 398 // "where permissoes.estruturaEtt.codEtt = :codEtt and " + 399 // "permissoes.indLeiAcompMoniSecProEtta = :leitura " + 400 // "and permissoes.sisAtributoSatb.codSatb in (:lista) "); 401 // 402 // q.setMaxResults(1); 403 // 404 // q.setLong("codEtt", estrutura.getCodEtt().longValue()); 405 // q.setString("leitura", ValidaPermissao.SIM); 406 // 407 // List codigos = new ArrayList(); 408 // Iterator it = gruposUsuario.iterator(); 409 // 410 // while(it.hasNext()){ 411 // SisAtributoSatb atributo = (SisAtributoSatb) it.next(); 412 // codigos.add(atributo.getCodSatb()); 413 // } 414 // q.setParameterList("lista", codigos); 415 // 416 // List retorno = q.list(); 417 // if(!retorno.isEmpty()) { 418 // resultado = true; 419 // } 420 // 421 // } catch (HibernateException e) { 422 // this.logger.error(e); 423 // throw new ECARException(e); 424 // } 425 // return resultado; 426 // 427 // } 428 /** 429 * Verifica se um grupo de grupos de acesso tem permissao de leitura de 430 * acompanhamento para registros monitorados de outra secretaria/órgão 431 * @param estrutura 432 * @param gruposUsuario 433 * @return 434 * @throws ECARException 435 */ 436 // @@ALTERAR@@ 437 // public boolean temPermissoesLeituraAcompMonitoradoOutraSecretaria(Set 438 // gruposUsuario, EstruturaEtt estrutura) throws ECARException { 439 // boolean resultado = false; 440 // 441 // try { 442 // Query q = 443 // this.getSession().createQuery("select permissoes.estruturaEtt.codEtt " + 444 // "from EstruturaAcessoEtta permissoes " + 445 // "where permissoes.estruturaEtt.codEtt = :codEtt and " + 446 // "permissoes.indLeiAcompMoniSecOutEtta = :leitura " + 447 // "and permissoes.sisAtributoSatb.codSatb in (:lista) "); 448 // 449 // q.setMaxResults(1); 450 // 451 // q.setLong("codEtt", estrutura.getCodEtt().longValue()); 452 // q.setString("leitura", ValidaPermissao.SIM); 453 // 454 // List codigos = new ArrayList(); 455 // Iterator it = gruposUsuario.iterator(); 456 // 457 // while(it.hasNext()){ 458 // SisAtributoSatb atributo = (SisAtributoSatb) it.next(); 459 // codigos.add(atributo.getCodSatb()); 460 // } 461 // q.setParameterList("lista", codigos); 462 // 463 // List retorno = q.list(); 464 // if(!retorno.isEmpty()) { 465 // resultado = true; 466 // } 467 // 468 // } catch (HibernateException e) { 469 // this.logger.error(e); 470 // throw new ECARException(e); 471 // } 472 // return resultado; 473 // 474 // } 475 /** 476 * Verifica se um grupo de grupos de acesso tem permissao de leitura de 477 * acompanhamento para registros monitorados próprios 478 * @param estrutura 479 * @param gruposUsuario 480 * @return 481 * @throws ECARException 482 */ 483 // @@ALTERAR@@ 484 // public boolean temPermissoesLeituraAcompMonitoradoProprio(Set 485 // gruposUsuario, EstruturaEtt estrutura) throws ECARException { 486 // boolean resultado = false; 487 // 488 // try { 489 // Query q = 490 // this.getSession().createQuery("select permissoes.estruturaEtt.codEtt " + 491 // "from EstruturaAcessoEtta permissoes " + 492 // "where permissoes.estruturaEtt.codEtt = :codEtt and " + 493 // "permissoes.indLeiAcompMoniProprEtta = :leitura " + 494 // "and permissoes.sisAtributoSatb.codSatb in (:lista) "); 495 // 496 // q.setMaxResults(1); 497 // 498 // q.setLong("codEtt", estrutura.getCodEtt().longValue()); 499 // q.setString("leitura", ValidaPermissao.SIM); 500 // 501 // List codigos = new ArrayList(); 502 // Iterator it = gruposUsuario.iterator(); 503 // 504 // while(it.hasNext()){ 505 // SisAtributoSatb atributo = (SisAtributoSatb) it.next(); 506 // codigos.add(atributo.getCodSatb()); 507 // } 508 // q.setParameterList("lista", codigos); 509 // 510 // List retorno = q.list(); 511 // if(!retorno.isEmpty()) { 512 // resultado = true; 513 // } 514 // 515 // } catch (HibernateException e) { 516 // this.logger.error(e); 517 // throw new ECARException(e); 518 // } 519 // return resultado; 520 // 521 // } 522 /** 523 * @author Robson 524 * @param EstruturaEtt 525 * @param SisAtributoSatb 526 * @return EstruturaAcessoEtta 527 * @throws ECARException 528 */ 529 public EstruturaAcessoEtta getEstruturaAcessoEtta(SisAtributoSatb atributo, EstruturaEtt estruturaEtt) throws ECARException { 530 // XXX: Novas funções de acesso 531 try { 532 EstruturaAcessoEttaPK id = new EstruturaAcessoEttaPK(estruturaEtt.getCodEtt(), atributo.getCodSatb()); 533 // return (EstruturaAcessoEtta) 534 // this.getSession().createCriteria(EstruturaAcessoEtta.class) 535 // .add(Restrictions.eq("estruturaEtt", estruturaEtt)) 536 // .add(Restrictions.eq("sisAtributoSatb", atributo)) 537 // .uniqueResult(); 538 return (EstruturaAcessoEtta) this.getSession().get(EstruturaAcessoEtta.class, id); 539 } catch (HibernateException e) { 540 this.logger.error(e); 541 throw new ECARException(e); 542 } 543 } 544 545 /** 546 * @author Robson 547 * @param Arraylist 548 * @return NULL 549 * @throws EcarException 550 */ 551 public void setEstruturaAcessoEtta(EstruturaAcessoEtta etta, HttpServletRequest request) { 552 // XXX: Novas funções de acesso 553 etta.setIndIncItemEtta(Pagina.getParamOrDefault(request, "indIncItemEtta" + etta.getComp_id().getCodEtt(), EstruturaAcessoEtta.SEM_ACESSO_INCLUSAO)); 554 } 555 556 // tb_tipo_acomp_grp_acesso 557 558 /** 559 * Verifica se um grupo de usuario tem permissao de acessar um acompanhamento 560 * de um tipo de acompanhamento 561 * @param estrutura 562 * @param gruposUsuario 563 * @return 564 * @throws ECARException 565 */ 566 public boolean temPermissoesAcessoAcomp(TipoAcompanhamentoTa tipoAcompanhamentoTa, Set gruposUsuario) throws ECARException { 567 boolean resultado = false; 568 569 try { 570 Query q = this.getSession().createQuery("select tipoAcompGrpAcesso " + "from TipoAcompGrpAcesso tipoAcompGrpAcesso " + "where tipoAcompGrpAcesso.tipoAcompanhamentoTa = :tipoAcompanhamentoTa " + "and tipoAcompGrpAcesso.sisAtributoSatb in (:gruposUsuarios) " + "and tipoAcompGrpAcesso.acessoInclusao = :acessoInclusao"); 571 572 q.setMaxResults(1); 573 574 q.setString("acessoInclusao", ValidaPermissao.SIM); 575 q.setParameter("tipoAcompanhamentoTa", tipoAcompanhamentoTa); 576 q.setParameterList("gruposUsuarios", gruposUsuario); 577 578 List retorno = q.list(); 579 if (!retorno.isEmpty()) { 580 resultado = true; 581 } 582 583 } catch (HibernateException e) { 584 this.logger.error(e); 585 throw new ECARException(e); 586 } 587 588 return resultado; 589 590 } 591 592 /** 593 * Verifica se um grupo de usuario tem permissao de acessar algum 594 * acompanhamento 595 * @param gruposUsuario 596 * @return 597 * @throws ECARException 598 */ 599 public boolean temPermissoesAcessoAcomp(Set gruposUsuario) throws ECARException { 600 boolean resultado = false; 601 602 try { 603 Query q = this.getSession().createQuery("select tipoAcompGrpAcesso " + "from TipoAcompGrpAcesso tipoAcompGrpAcesso " + "where tipoAcompGrpAcesso.sisAtributoSatb in (:gruposUsuarios) " + "and tipoAcompGrpAcesso.acessoInclusao = :acessoInclusao"); 604 605 q.setMaxResults(1); 606 607 q.setString("acessoInclusao", ValidaPermissao.SIM); 608 q.setParameterList("gruposUsuarios", gruposUsuario); 609 610 List retorno = q.list(); 611 if (!retorno.isEmpty()) { 612 resultado = true; 613 } 614 615 } catch (HibernateException e) { 616 this.logger.error(e); 617 throw new ECARException(e); 618 } 619 620 return resultado; 621 622 } 623 624 public boolean temPermissoesAcessoAcompTodosOrgaos(TipoAcompanhamentoTa tipoAcompanhamentoTa, Set gruposUsuario) throws ECARException { 625 boolean resultado = false; 626 627 try { 628 TipoAcompGrpAcesso tipoAcompGrpAcesso = new TipoAcompGrpAcesso(); 629 tipoAcompGrpAcesso.getSepararPorOrgao(); 630 Query q = this.getSession().createQuery("select tipoAcompGrpAcesso " + "from TipoAcompGrpAcesso tipoAcompGrpAcesso " + "where tipoAcompGrpAcesso.tipoAcompanhamentoTa = :tipoAcompanhamentoTa " + "and tipoAcompGrpAcesso.sisAtributoSatb in (:gruposUsuarios) " + "and tipoAcompGrpAcesso.acessoInclusao = :acessoInclusao " + "and (tipoAcompGrpAcesso.separarPorOrgao = :separarPorOrgao or tipoAcompGrpAcesso.separarPorOrgao is null)"); 631 632 q.setMaxResults(1); 633 634 q.setString("acessoInclusao", ValidaPermissao.SIM); 635 q.setParameter("tipoAcompanhamentoTa", tipoAcompanhamentoTa); 636 q.setInteger("separarPorOrgao", ValidaPermissao.PERMISSAO_TODOS_ORGAOS); 637 q.setParameterList("gruposUsuarios", gruposUsuario); 638 639 List retorno = q.list(); 640 if (!retorno.isEmpty()) { 641 resultado = true; 642 } 643 644 } catch (HibernateException e) { 645 this.logger.error(e); 646 throw new ECARException(e); 647 } 648 649 return resultado; 650 651 } 652 653 public boolean temPermissoesAcessoAcompSeusOrgaos(TipoAcompanhamentoTa tipoAcompanhamentoTa, Set gruposUsuario) throws ECARException { 654 boolean resultado = false; 655 656 try { 657 TipoAcompGrpAcesso tipoAcompGrpAcesso = new TipoAcompGrpAcesso(); 658 tipoAcompGrpAcesso.getSepararPorOrgao(); 659 Query q = this.getSession().createQuery("select tipoAcompGrpAcesso " + "from TipoAcompGrpAcesso tipoAcompGrpAcesso " + "where tipoAcompGrpAcesso.tipoAcompanhamentoTa = :tipoAcompanhamentoTa " + "and tipoAcompGrpAcesso.sisAtributoSatb in (:gruposUsuarios) " + "and tipoAcompGrpAcesso.acessoInclusao = :acessoInclusao " + "and tipoAcompGrpAcesso.separarPorOrgao = :separarPorOrgao"); 660 661 q.setMaxResults(1); 662 663 q.setString("acessoInclusao", ValidaPermissao.SIM); 664 q.setParameter("tipoAcompanhamentoTa", tipoAcompanhamentoTa); 665 q.setInteger("separarPorOrgao", ValidaPermissao.PERMISSAO_SEUS_ORGAOS); 666 q.setParameterList("gruposUsuarios", gruposUsuario); 667 668 List retorno = q.list(); 669 if (!retorno.isEmpty()) { 670 resultado = true; 671 } 672 673 } catch (HibernateException e) { 674 this.logger.error(e); 675 throw new ECARException(e); 676 } 677 678 return resultado; 679 680 } 681 682 public boolean temPermissoesAcessoAcompOrgaosSuaResponsabilidade(TipoAcompanhamentoTa tipoAcompanhamentoTa, Set gruposUsuario) throws ECARException { 683 boolean resultado = false; 684 685 try { 686 TipoAcompGrpAcesso tipoAcompGrpAcesso = new TipoAcompGrpAcesso(); 687 tipoAcompGrpAcesso.getSepararPorOrgao(); 688 Query q = this.getSession().createQuery("select tipoAcompGrpAcesso " + "from TipoAcompGrpAcesso tipoAcompGrpAcesso " + "where tipoAcompGrpAcesso.tipoAcompanhamentoTa = :tipoAcompanhamentoTa " + "and tipoAcompGrpAcesso.sisAtributoSatb in (:gruposUsuarios) " + "and tipoAcompGrpAcesso.acessoInclusao = :acessoInclusao " + "and tipoAcompGrpAcesso.separarPorOrgao = :separarPorOrgao"); 689 690 q.setMaxResults(1); 691 692 q.setString("acessoInclusao", ValidaPermissao.SIM); 693 q.setParameter("tipoAcompanhamentoTa", tipoAcompanhamentoTa); 694 q.setInteger("separarPorOrgao", ValidaPermissao.PERMISSAO_SUA_RESPONSABILIDADE); 695 q.setParameterList("gruposUsuarios", gruposUsuario); 696 697 List retorno = q.list(); 698 if (!retorno.isEmpty()) { 699 resultado = true; 700 } 701 702 } catch (HibernateException e) { 703 this.logger.error(e); 704 throw new ECARException(e); 705 } 706 707 return resultado; 708 709 } 710 711 // public boolean temPermissaoAcessoEstrutura(SegurancaECAR seguranca, 712 // EstruturaEtt ett){ 713 // Set gruposUsuario = seguranca.getGruposAcesso(); 714 // Query q = this.getSession().createQuery("select ett " + 715 // "from EstruturaEtt Ett " + 716 // "inner join Ett.tipoAcompanhamentoTa ta " + 717 // "inner join ta.tipoacompTipofuncacompSisatributoTatpfasatbs parecer " + 718 // "inner join ta.tipoacompAbasSisatributoTaabasatbs aba " + 719 // "where Ett = :ett " + 720 // "and((parecer.sisAtributoSatb in (:atributosparecer) and parecer.indLeituraParecer = :leitura) " 721 // + 722 // "or (aba.sisAtributoSatb in (:atributosaba) and aba.indVisualizaAba = :visualiza)) ") 723 // .setParameter("ett", ett) 724 // .setParameterList("atributosparecer", gruposUsuario) 725 // .setString("leitura", Dominios.COM_ACESSO_LEITURA) 726 // .setParameterList("atributosaba", gruposUsuario) 727 // .setString("visualiza", Dominios.COM_ACESSO_LEITURA); 728 // return !q.list().isEmpty(); 729 // } 730 731 /** 732 * @author Robson 733 * @param Set gruposUsuario 734 * @param EstruturaEtt ett 735 * @param short acao 736 * @return booelan 737 * @throws ECARException TODO: nao terminado, falta incluir acoes Funcao que 738 * verifica se usuario pode executar determinada acao na Estrutura 739 */ 740 public boolean PermissaoAcessoGrupoEstrutura(Set gruposUsuario, EstruturaEtt ett, short acao) throws ECARException { 741 // XXX: Novas funções de acesso 742 try { 743 StringBuilder str = new StringBuilder("from EstruturaAcessoEtta etta " + "where etta.estruturaEtt = :ett " + "and etta.sisAtributoSatb in (:lista) "); 744 if (acao == PERMISSAO_ACESSO_SECRETARIA) 745 str.append("and etta.indLeiAcompSecpropEtta = :sim "); 746 747 else if (acao == PERMISSAO_ACESSO_OUTRA_SECRETARIA) 748 str.append("and etta.indIncAcompSecoutrEtta = :sim "); 749 750 Query q = this.getSession().createQuery(str.toString()); 751 752 q.setMaxResults(1); 753 q.setParameter("ett", ett); 754 q.setParameterList("lista", gruposUsuario); 755 q.setString("sim", Dominios.SIM); 756 757 return !q.list().isEmpty(); 758 759 } catch (HibernateException e) { 760 this.logger.error(e); 761 throw new ECARException(e); 762 } 763 } 764 765 }