public List getListaAcessoRelatorio(UsuarioUsu usuario, List listTipoFuncAcompTpfa, List listAcompRelatorioArel, List listTipoAcompFuncAcomp) throws ECARException{
List retorno = new ArrayList();
ItemEstUsutpfuacDao itemEstUsutpfuacDao = new ItemEstUsutpfuacDao(request);
for (Iterator itArel = listAcompRelatorioArel.iterator(); itArel.hasNext();) {
AcompRelatorioArel arel = (AcompRelatorioArel)itArel.next();
List usuariosPermitidos = itemEstUsutpfuacDao.getUsuariosAcompanhamento(arel.getAcompReferenciaItemAri().getItemEstruturaIett());
for (Iterator itTpfa = listTipoFuncAcompTpfa.iterator(); itTpfa.hasNext();) {
TipoFuncAcompTpfa tpfa = (TipoFuncAcompTpfa)itTpfa.next();
AcessoRelatorio acessoRelatorio = new AcessoRelatorio();
acessoRelatorio.setArel(arel);
acessoRelatorio.setTpfa(tpfa);
if(!usuariosPermitidos.contains(usuario)) {
acessoRelatorio.setPermissao(OPERACAO_NEGADA_USUARIO_SEM_PERMISSAO);
} else {
if(arel != null && Dominios.SIM.equals(arel.getIndLiberadoArel())) {
acessoRelatorio.setPermissao(OPERACAO_PERMITIDA);
} else {
TipoAcompFuncAcompTafc tafc = null;
for(Iterator it = listTipoAcompFuncAcomp.iterator(); it.hasNext();){
TipoAcompFuncAcompTafc tafcTemp = (TipoAcompFuncAcompTafc) it.next();
if(tafcTemp.getTipoFuncAcompTpfa().equals(tpfa)){
tafc = tafcTemp;
break;
}
}
try {
if(tafc != null){
/*
* Nova regra (mantis 11289):
* Ao exibir as abas de tipos de fun��es de acompanhamento:
* Para registro de posi��o OBRIGAT�RIO continua com est� atualmente.
*/
if(Dominios.OBRIGATORIO.equals(tafc.getIndRegistroPosicaoTafc())){
boolean usuarioSemPermissao = true;
ItemEstUsutpfuacIettutfa itemEstUsutpfuacIettutfa = new ItemEstUsutpfuacDao(request).buscar(arel.getAcompReferenciaItemAri().getItemEstruturaIett().getCodIett(), tpfa.getCodTpfa());
if (itemEstUsutpfuacIettutfa != null){
if (itemEstUsutpfuacIettutfa.getUsuarioUsu() != null && itemEstUsutpfuacIettutfa.getUsuarioUsu().equals(usuario)){
usuarioSemPermissao = false;
} else if (itemEstUsutpfuacIettutfa.getSisAtributoSatb() != null){