View Javadoc

1   package ecar.servlet.geraFilhosIett;
2   
3   import java.util.ArrayList;
4   import java.util.Collection;
5   import java.util.Iterator;
6   import java.util.List;
7   import java.util.Map;
8   
9   import javax.servlet.http.HttpServletRequest;
10  
11  import org.apache.log4j.Logger;
12  
13  import ecar.bean.AtributoEstruturaListagemItens;
14  import ecar.bean.NomeImgsNivelPlanejamentoBean;
15  import ecar.dao.AcompReferenciaDao;
16  import ecar.dao.AcompReferenciaItemDao;
17  import ecar.dao.CorDao;
18  import ecar.dao.ItemEstUsutpfuacDao;
19  import ecar.dao.ItemEstrutMarcadorDao;
20  import ecar.dao.ItemEstruturaDao;
21  import ecar.dao.TipoFuncAcompDao;
22  import ecar.exception.ECARException;
23  import ecar.login.SegurancaECAR;
24  import ecar.permissao.ValidaPermissao;
25  import ecar.pojo.AcompReferenciaAref;
26  import ecar.pojo.AcompReferenciaItemAri;
27  import ecar.pojo.AcompRelatorioArel;
28  import ecar.pojo.Cor;
29  import ecar.pojo.ItemEstUsutpfuacIettutfa;
30  import ecar.pojo.ItemEstrutMarcadorIettm;
31  import ecar.pojo.ItemEstruturaIett;
32  import ecar.pojo.StatusRelatorioSrl;
33  import ecar.pojo.TipoAcompFuncAcompTafc;
34  import ecar.pojo.TipoAcompanhamentoTa;
35  import ecar.pojo.TipoFuncAcompTpfa;
36  import ecar.pojo.UsuarioAtributoUsua;
37  import ecar.pojo.UsuarioUsu;
38  import ecar.util.Dominios;
39  
40  /**
41   * @author José André e Bárbara Siqueira
42   * @since 08/02/2008
43   */
44  
45  public class ItemEstruturaHtml {
46  	
47  	private ItemEstruturaIett itemEstrutura;
48  	private UsuarioUsu usuario;
49  	private StatusRelatorioSrl statusLiberado;
50  	private Collection<AcompReferenciaAref> periodosConsiderados;
51  	
52  	private List tpfaOrdenadosPorEstrutura;
53  	
54  	private String status;
55  	private String idPagina;
56  	private String pathEcar;
57  	private String caminhoUrl;
58  	private String codTipoAcompanhamento;
59  	private String exigeLiberarAcompanhamento;
60  	private String codAref;
61  		
62  	private HttpServletRequest request;
63  	private SegurancaECAR seguranca;
64  	private boolean permissaoAdministradorAcompanhamento;
65  	
66  	private List itensSessao;
67  	private List itensSessaoVisualizar;
68  	private boolean usuarioLogadoEmiteParecer;
69  	private AtributoEstruturaListagemItens atEstListagem;
70  	
71  	private String nomeOrgaoSepararPorOrgao;
72  	private boolean itemEstruturaPossuiFilho;
73  	
74  	/**
75  	 * 
76  	 * @param itemEstrutura
77  	 * @param usuario
78  	 * @param statusLiberado
79  	 * @param periodosConsiderados
80  	 * @param tpfaOrdenadosPorEstrutura
81  	 * @param status
82  	 * @param idPagina
83  	 * @param pathEcar
84  	 * @param caminhoUrl
85  	 * @param codTipoAcompanhamento
86  	 * @param exigeLiberarAcompanhamento
87  	 * @param codAref
88  	 * @param request
89  	 * @param permissaoAdministradorAcompanhamento
90  	 */	
91  	public ItemEstruturaHtml(ItemEstruturaIett itemEstrutura,
92  			AtributoEstruturaListagemItens atEstListagem,
93  			UsuarioUsu usuario, StatusRelatorioSrl statusLiberado,
94  			Collection<AcompReferenciaAref> periodosConsiderados,
95  			List tpfaOrdenadosPorEstrutura, String status, String idPagina,
96  			String pathEcar, String caminhoUrl, String codTipoAcompanhamento,
97  			String exigeLiberarAcompanhamento, String codAref,
98  			HttpServletRequest request,
99  			boolean permissaoAdministradorAcompanhamento,
100 			boolean itemEstruturaPossuiFilho ) {		
101 		this.itemEstrutura = itemEstrutura;
102 		this.atEstListagem = atEstListagem;
103 		this.usuario = usuario;
104 		this.statusLiberado = statusLiberado;
105 		this.periodosConsiderados = periodosConsiderados;
106 		this.tpfaOrdenadosPorEstrutura = tpfaOrdenadosPorEstrutura;
107 		this.status = status;
108 		this.idPagina = idPagina;
109 		this.pathEcar = pathEcar;
110 		this.caminhoUrl = caminhoUrl;
111 		this.codTipoAcompanhamento = codTipoAcompanhamento;
112 		this.exigeLiberarAcompanhamento = exigeLiberarAcompanhamento;
113 		this.codAref = codAref;
114 		this.request = request;
115 		this.permissaoAdministradorAcompanhamento = permissaoAdministradorAcompanhamento;
116 		this.itemEstruturaPossuiFilho = itemEstruturaPossuiFilho;
117 	}
118 
119 	/**
120 	 * Gera a linha da tabela em html do ItemEstrutura 
121 	 */
122     public String geraHtmlDoItem() {
123     	   	
124     	TipoFuncAcompDao tipoFuncAcompDao = new TipoFuncAcompDao();
125     	StringBuffer s = new StringBuffer();
126     	if(!request.getParameter("codOrg").equals(""))
127     		nomeOrgaoSepararPorOrgao = "_org" + request.getParameter("codOrg");
128     	else
129     		nomeOrgaoSepararPorOrgao = "";
130     	
131     	try {        	       	        	        	        	                    
132             //tpfaOrdenadosPorEstrutura = tipoFuncAcompDao.getFuncaoAcompOrderByEstruturas();   
133     		
134         	s = imprimeColunasDoItem(getItemEstrutura());		
135         } catch (Exception e) {
136         	Logger.getLogger(this.getClass()).error(e);
137         	e.printStackTrace();
138         }
139         
140         return s.toString();
141     }
142     
143     /**
144      * 
145      * @param pItemEstrutura
146      * @return
147      */
148     private StringBuffer imprimeColunasDoItem(ItemEstruturaIett pItemEstrutura) {
149     	StringBuffer retorno = new StringBuffer();
150     	String linkAbrirArvoreIettComeco = "";
151     	String linkAbrirArvoreIettFim = "";
152     	itensSessao = new ArrayList();
153     	itensSessaoVisualizar = new ArrayList();
154 
155     	if(request.getAttribute("itensSessao")!=null)
156     		itensSessao = (List)request.getAttribute("itensSessao");
157     	if(request.getAttribute("itensSessaoVisualizar")!=null)
158     		itensSessaoVisualizar = (List)request.getAttribute("itensSessaoVisualizar");
159     	
160     	if(itemEstruturaPossuiFilho){
161     		linkAbrirArvoreIettComeco = "<a href=\"javascript:carregarFilhosNo('" + pItemEstrutura.getCodIett()+ "','" 
162 				+ request.getParameter("codOrg") +"')\">";
163     		linkAbrirArvoreIettFim = "</a>";	
164     	}
165 
166     	//retorno.append("iett" + pItemEstrutura.getCodIett());
167     	retorno.append(pItemEstrutura.getCodIett());
168     	retorno.append("*@*");	//Marcador que será utilizado na apresentação dos Itens
169     	retorno.append(imprimeColunaDoMarcador(pItemEstrutura));
170     	retorno.append("*@*");
171     	retorno.append(imprimeColunaIdentacaoNivel(pItemEstrutura, linkAbrirArvoreIettComeco, linkAbrirArvoreIettFim));
172     	retorno.append("*@*");
173     	retorno.append(imprimeColunaImagemNivel(pItemEstrutura));
174     	retorno.append("*@*");
175     	retorno.append(imprimeColunaOrgaoResponsavel(pItemEstrutura));
176     	retorno.append("*@*");
177     	retorno.append(imprimeColunaImagemAnotacao(pItemEstrutura));
178     	retorno.append("*@*");
179     	retorno.append(imprimeColunaPareceres(pItemEstrutura));
180 
181     	return retorno;
182     }
183 	
184     /*
185      * Método que imprime a primeira coluna da linha do item: coluna do marcador se tiver anotação
186      */
187     private StringBuffer imprimeColunaDoMarcador(ItemEstruturaIett pItemEstrutura) {
188     	StringBuffer retorno = new StringBuffer();
189     	String caminhoEcar = getPathEcar();
190     	ItemEstruturaIett item = pItemEstrutura;
191     	ItemEstrutMarcadorDao marcadorDao = new ItemEstrutMarcadorDao(getRequest());
192 
193         retorno.append("<td>");
194 		if(!getStatus().equals("true")){
195 			try {
196 				ItemEstrutMarcadorIettm marcador = marcadorDao.getUltimoMarcador(item, getUsuario());
197 				if(marcador != null){
198 					retorno.append("<a href=\"javascript:abrirPopUpListaAnotacao("+item.getCodIett()+")\">");
199 					if(marcador.getCor() != null) { 
200 						retorno.append("<img src='" + caminhoEcar + "/images/relAcomp/"+marcador.getCor().getNomeCor().toLowerCase()+"_inf.png' border='0' alt=\"\">");
201 					} else {
202 						retorno.append("<img src='" + caminhoEcar + "/images/relAcomp/branco_inf.png' border='0' alt=\"\">");
203 					}
204 					retorno.append("</a>");
205 				}
206 			} catch(ECARException ecarex) {
207 				Logger.getLogger(this.getClass()).error(ecarex);
208 				ecarex.printStackTrace();
209 			}
210 		}
211 		retorno.append("</td>");
212 		return retorno;
213     }
214     
215     /*
216      * Método que imprime a segunda coluna da linha do item: coluna da identação pelo nivel 
217      */
218     private StringBuffer imprimeColunaIdentacaoNivel(ItemEstruturaIett pItemEstrutura, 
219     		String linkComeco, String linkFim) {
220     	
221     	StringBuffer retorno = new StringBuffer();
222     	ItemEstruturaIett item = pItemEstrutura;
223     	
224     	retorno.append("<td>");
225     	retorno.append("<table>");
226     	retorno.append("<tr bgcolor=\""+item.getEstruturaEtt().getCodCor3Ett()+"\">");
227     	retorno.append("<td nowrap>&nbsp;");
228 		int nivel = item.getNivelIett().intValue();
229 		for(int i = 1; i < nivel;i++) {
230 			retorno.append("<img src=\""+getRequest().getContextPath()+"/images/pixel.gif\" width=\"22\" height=\"9\" alt=\"\">");
231 		}
232 		retorno.append("</td>");
233 		
234 		// Verificar se a imagem é de mais ou branco							
235 		String caminhoImagem = "";
236 		if(linkFim.equals("")) {
237 			//Quando nao puder expandir o item, a imagem mostrada sera um quadrado em branco
238 			caminhoImagem = "/images/square.gif";
239 		} else {
240 			//Quando puder expandir o item, a imagem mostrada sera a de +
241 			caminhoImagem = "/images/collapsed_button.gif";
242 		}
243 		
244        //retorno.append("<td valign=\"top\">"+linkComeco+"<img src=\""+getPathEcar()+"/images/icon_bullet_seta.png\" alt=\"\" border=\"0\">"+linkFim+"</td>");
245 		String nomeIett = "".equals(atEstListagem.getDescricao()) ? "[Não Informado]" : atEstListagem.getDescricao();
246 		retorno.append("<td id=\"iconeExpandirIett" + item.getCodIett() + nomeOrgaoSepararPorOrgao + "\" valign=\"top\">"
247 				+linkComeco+"<img id=\"imagemMaisMenosIett" + item.getCodIett() + nomeOrgaoSepararPorOrgao + "\" src=\""+getPathEcar()+caminhoImagem+ "\" alt=\"\" border=\"0\">"+linkFim+"</td>");
248 		retorno.append("<td title=\""+item.getEstruturaEtt().getNomeEtt().trim()+"\">");
249 		retorno.append("<td colspan=\"3\">"+nomeIett+"</td>");
250 		retorno.append("</font>");
251 		retorno.append("</td>");
252 		retorno.append("</tr>");
253 		retorno.append("</table>");
254 		retorno.append("</td>");
255 		
256     	return retorno;
257     }
258     
259     /*
260      * Método que imprime a terceira coluna da linha do item: imagem nivel planejamento 
261      */
262     private StringBuffer imprimeColunaImagemNivel(ItemEstruturaIett pItemEstrutura) {
263     	StringBuffer retorno = new StringBuffer();
264     	ItemEstruturaDao itemDao = new ItemEstruturaDao(getRequest());
265     	
266     	//imagem nivel planejamento
267     	retorno.append("<td nowrap>");
268     	Iterator<NomeImgsNivelPlanejamentoBean> itNiveis = itemDao.getNomeImgsNivelPlanejamentoItemAgrupado(pItemEstrutura).iterator();
269 		while(itNiveis.hasNext()){
270 			NomeImgsNivelPlanejamentoBean imagemNivelPlanejamento = (NomeImgsNivelPlanejamentoBean) itNiveis.next();
271 			retorno.append(imagemNivelPlanejamento.geraHtmlImg(getRequest()));
272 		}
273 		retorno.append("</td>");
274 
275     	return retorno;
276     }
277     
278     /*
279      * Método que imprime a quarta coluna da linha do item: nome do Órgao Responsável 
280      */
281     private StringBuffer imprimeColunaOrgaoResponsavel(ItemEstruturaIett pItemEstrutura) {
282     	StringBuffer retorno = new StringBuffer();
283     	ItemEstruturaIett item = pItemEstrutura;
284     	
285     	retorno.append("<td align=\"center\">");
286 		if(item.getOrgaoOrgByCodOrgaoResponsavel1Iett() != null){
287 			if(item.getOrgaoOrgByCodOrgaoResponsavel1Iett().getSiglaOrg() != null)
288 				retorno.append(item.getOrgaoOrgByCodOrgaoResponsavel1Iett().getSiglaOrg());	
289 			else
290 				retorno.append(item.getOrgaoOrgByCodOrgaoResponsavel1Iett().getDescricaoOrg());	
291 		} else {
292 			//Se não possuir orgao procura orgao do pai
293 			ItemEstruturaIett itemAux = item;
294 			while(itemAux != null && itemAux.getOrgaoOrgByCodOrgaoResponsavel1Iett() == null && itemAux.getItemEstruturaIett() != null){
295 				itemAux = itemAux.getItemEstruturaIett();
296 			}
297 			if(itemAux != null && itemAux.getOrgaoOrgByCodOrgaoResponsavel1Iett() != null){
298 				if(itemAux.getOrgaoOrgByCodOrgaoResponsavel1Iett().getSiglaOrg() != null)
299 					retorno.append(itemAux.getOrgaoOrgByCodOrgaoResponsavel1Iett().getSiglaOrg());	
300 				else
301 					retorno.append(itemAux.getOrgaoOrgByCodOrgaoResponsavel1Iett().getDescricaoOrg());											
302 			}
303 		}
304 		retorno.append("</td>");
305     	
306     	return retorno;
307     }
308     
309     /*
310      * Método que imprime a quinta coluna da linha do item: imagem inserir anotação 
311      */
312     private StringBuffer imprimeColunaImagemAnotacao(ItemEstruturaIett pItemEstrutura) {
313     	StringBuffer retorno = new StringBuffer();
314 
315 		//criação do link para detalhamento do item 
316 		String linkAbrirIettComeco = "<a href=\"javascript:detalharItemEstrutura(form, '" + pItemEstrutura.getCodIett() + "', '" + status + "')\" title=\"Ação\">";
317     	
318 		//imagem inserir anotação
319 		retorno.append("<td>");
320 		if(!getStatus().equals("true")){
321 			retorno.append("<a href=\"javascript:abrirPopUpInserirAnotacao("+pItemEstrutura.getCodIett()+")\" title=\"Inserir anotação\"> ");
322 			retorno.append("<img src=\""+getPathEcar()+"/images/relAcomp/icon_anotacoes.png\" border=\"0\" alt=\"\"> </a>");
323 		}
324 		retorno.append("</td>");
325 	
326 		// ADICIONAR A IMAGEM PARA EDITAR				
327 		usuarioLogadoEmiteParecer = false;		
328 		boolean permissaoLapis = false;
329 		
330 		if(permissaoAdministradorAcompanhamento){
331 			permissaoLapis = true;
332 		}																				
333 		
334 		TipoFuncAcompDao tipoFuncAcompDao = new TipoFuncAcompDao();
335 		ItemEstUsutpfuacDao itemEstUsuDao = new ItemEstUsutpfuacDao(request);
336 		AcompReferenciaItemDao acompReferenciaItemDao = new AcompReferenciaItemDao(request);
337 		AcompReferenciaDao acompReferenciaDao = new AcompReferenciaDao(request);
338 		//List tpfaOrdenadosPorEstrutura = null;
339 		Map  mapAcao = null;
340 		Iterator itPeriodosAcao = periodosConsiderados.iterator();		
341 
342 		try {
343 			//tpfaOrdenadosPorEstrutura = tipoFuncAcompDao.getFuncaoAcompOrderByEstruturas();
344 			mapAcao = acompReferenciaItemDao.criarMapPeriodoAri(periodosConsiderados, itemEstrutura);
345 		} catch(ECARException ecarex) {
346 			Logger.getLogger(this.getClass()).error(ecarex);
347 			ecarex.printStackTrace();
348 		}
349 
350 		if(itPeriodosAcao.hasNext()) {
351 			AcompReferenciaAref acompReferencia = (AcompReferenciaAref) itPeriodosAcao.next();
352 			if(!mapAcao.isEmpty() && mapAcao.containsKey(acompReferencia)) {
353 				AcompReferenciaItemAri ariAcao = (AcompReferenciaItemAri) mapAcao.get(acompReferencia);
354 				List relatorios = null;
355 				try{
356 					relatorios = acompReferenciaItemDao.getAcompRelatorioArelOrderByFuncaoAcomp(ariAcao, tpfaOrdenadosPorEstrutura);
357 				} catch(ECARException ecarex) {
358 					Logger.getLogger(this.getClass()).error(ecarex);
359 					ecarex.printStackTrace();
360 				}
361 				Iterator itRelatorios = relatorios.iterator();
362 				
363 				
364 				while(itRelatorios.hasNext()){
365 					AcompRelatorioArel relatorio = (AcompRelatorioArel) itRelatorios.next();
366 					ItemEstUsutpfuacIettutfa itemEstUsu = null;
367 					try{
368 						itemEstUsu = itemEstUsuDao.buscar(itemEstrutura.getCodIett(), relatorio.getTipoFuncAcompTpfa().getCodTpfa());
369 					} catch(ECARException ecarex) {
370 						Logger.getLogger(this.getClass()).error(ecarex);
371 						//ecarex.printStackTrace();
372 					}
373 					
374 					//Verifica se a permissão é de grupo ou usuário
375 					if(itemEstUsu!=null){							 							
376 						if (itemEstUsu.getUsuarioUsu() != null) {
377 							usuarioLogadoEmiteParecer = itemEstUsu.getUsuarioUsu().getCodUsu().equals(usuario.getCodUsu());
378 						} else if (itemEstUsu.getSisAtributoSatb() != null) {
379 							if (itemEstUsu.getSisAtributoSatb().getUsuarioAtributoUsuas() != null) {
380 								Iterator itUsuarios = itemEstUsu.getSisAtributoSatb().getUsuarioAtributoUsuas().iterator();
381 								while (itUsuarios.hasNext()) {
382 									UsuarioAtributoUsua usuarioAtributoUsua = (UsuarioAtributoUsua) itUsuarios.next();
383 									if (usuarioAtributoUsua.getUsuarioUsu().getCodUsu().equals(usuario.getCodUsu())){
384 										usuarioLogadoEmiteParecer = true;
385 										break;
386 									}
387 								}
388 							}
389 						}
390 					
391 					if(usuarioLogadoEmiteParecer==true)
392 						break;	
393 					}
394 				}//fecha while relatórios																
395 			}
396 		}
397 														
398 		retorno.append("*@*");	//Marcador que será utilizado na apresentação dos Itens
399 		retorno.append("<td align=\"center\">");
400 		
401 		AcompReferenciaAref arefSelecionada = null;   
402 		AcompReferenciaItemAri acompAri = null;
403 
404 		try {
405 			arefSelecionada = (AcompReferenciaAref) acompReferenciaDao.buscar(AcompReferenciaAref.class, Long.valueOf(getCodAref()));   
406 			acompAri = acompReferenciaItemDao.getAcompReferenciaItemByItemEstruturaIett(arefSelecionada,pItemEstrutura);
407 		} catch(ECARException ecarex) {
408 			Logger.getLogger(this.getClass()).error(ecarex);
409 			ecarex.printStackTrace();
410 		}
411 		
412 		if((usuarioLogadoEmiteParecer || permissaoLapis) && acompAri != null) {
413 			retorno.append(linkAbrirIettComeco+"<img src=\""+getPathEcar()+"/images/icon_alterar.png\" border=\"0\" alt=\"\"></a>");
414 		}
415 		retorno.append("</td>");
416     	return retorno;
417     }
418     
419     /*
420      * Método que imprime a sexta coluna da linha do item: pareceres 
421      */
422     private StringBuffer imprimeColunaPareceres(ItemEstruturaIett pItemEstrutura) {
423     	StringBuffer retorno = new StringBuffer();
424     	ItemEstruturaIett item = pItemEstrutura;
425     	Iterator<AcompReferenciaAref> itPeriodos = getPeriodosConsiderados().iterator();
426     	
427     	AcompReferenciaItemDao acompReferenciaItemDao = new AcompReferenciaItemDao(getRequest());
428     	CorDao corDao = new CorDao(getRequest());
429     	
430     	TipoFuncAcompDao tipoFuncAcompDao = new TipoFuncAcompDao(getRequest());
431     	try {
432 	    	//List tpfaOrdenadosPorEstrutura = tipoFuncAcompDao.getFuncaoAcompOrderByEstruturas();
433 			
434 	    	Map  map = acompReferenciaItemDao.criarMapPeriodoAri(getPeriodosConsiderados(), item);
435 			
436 			while(itPeriodos.hasNext()) { 
437 				AcompReferenciaAref acompReferencia = (AcompReferenciaAref) itPeriodos.next();
438 				if(map.isEmpty()) {
439 					retorno.append("<td align=\"center\">&nbsp;</td>");
440 				} else if(!map.containsKey(acompReferencia)) {
441 					retorno.append("<td align=\"center\" valign=\"middle\">");
442 					retorno.append("<p title=\"Não foi solicitado acompanhamento\">N/A</p>");
443 					retorno.append("</td>");
444 				} else {
445 					AcompReferenciaItemAri ari = (AcompReferenciaItemAri) map.get(acompReferencia);										
446 					retorno.append("<td align=\"center\" nowrap>");
447 					if((Dominios.NAO).equals(getExigeLiberarAcompanhamento()) || ari.getStatusRelatorioSrl().equals(getStatusLiberado())) {
448 						if(!"true".equals(status)){
449 							retorno.append("<a name=\"ancora"+ari.getItemEstruturaIett().getCodIett()+"\" href=\"#\" onclick=\"javascript:aoClicarConsultar(form, "+ari.getCodAri()+", "+ ari.getItemEstruturaIett().getCodIett()+ ")\">");							
450 							itensSessaoVisualizar.add(ari.getCodAri().toString());
451 							request.setAttribute("itensSessaoVisualizar",itensSessaoVisualizar );							
452 							if(usuarioLogadoEmiteParecer || permissaoAdministradorAcompanhamento) {
453 								itensSessao.add(ari.getCodAri().toString());
454 								request.setAttribute("itensSessao",itensSessao );
455 							}
456 						}
457 						List<AcompRelatorioArel> relatorios = acompReferenciaItemDao.getAcompRelatorioArelOrderByFuncaoAcomp(ari, tpfaOrdenadosPorEstrutura);
458 						Iterator<AcompRelatorioArel> itRelatorios = relatorios.iterator();
459 	
460 						String imagePath = "";
461 						String aval = "";
462 						
463 						ValidaPermissao validaPermissao = new ValidaPermissao();
464 						TipoAcompanhamentoTa tipoAcompanhamento = ari.getAcompReferenciaAref().getTipoAcompanhamentoTa();
465 						SegurancaECAR seguranca = (SegurancaECAR) request.getSession().getAttribute("seguranca");
466 						List listaPermissaoTpfa = validaPermissao.permissaoVisualizarPareceres(tipoAcompanhamento,seguranca.getGruposAcesso());
467 						
468 						while(itRelatorios.hasNext()){												
469 							AcompRelatorioArel relatorio = (AcompRelatorioArel) itRelatorios.next();
470 							
471 							if(listaPermissaoTpfa.contains(relatorio.getTipoFuncAcompTpfa())){
472 								boolean imageError = false;
473 								if( (Dominios.SIM).equals(relatorio.getIndLiberadoArel()) ) {
474 									Cor cor = ( relatorio.getCor()!=null ? relatorio.getCor() : null );
475 									TipoFuncAcompTpfa tpfa = ( relatorio.getTipoFuncAcompTpfa() != null ? relatorio.getTipoFuncAcompTpfa() : null );
476 																							
477 									imagePath = corDao.getImagemPersonalizada(cor, tpfa, "L");
478 									
479 									if( imagePath != null ) {
480 									    aval += "<img border=\"0\" src=\"" + request.getContextPath() + "/DownloadFile?tipo=open&RemoteFile=";
481 									    aval += imagePath + "\" style=\"width: 23px; height: 23px;\" title=\"" + relatorio.getTipoFuncAcompTpfa().getLabelTpfa() + "\">";
482 									} else {
483 										if( relatorio.getCor() != null && relatorio.getCor().getCodCor() != null ) { 
484 											aval += "<img border=\"0\" src=\"" + getPathEcar() + "/images/relAcomp/";
485 											aval += corDao.getImagemRelatorio(relatorio.getCor(), relatorio.getTipoFuncAcompTpfa()) + "\" title=\"";
486 											aval += relatorio.getTipoFuncAcompTpfa().getLabelTpfa() + "\" >";
487 										} else {
488 											imageError = true;
489 										}
490 									}
491 								} else {
492 									imageError = true;
493 								}
494 																						
495 								// Verifica se o parecer é obrigatorio ou opcional
496 								List<TipoAcompFuncAcompTafc> listTipoAcompFuncAcomp = new ArrayList<TipoAcompFuncAcompTafc>(acompReferencia.getTipoAcompanhamentoTa().getTipoAcompFuncAcompTafcs());
497 								boolean ehObrigatorio = true;
498 								if(listTipoAcompFuncAcomp != null) {
499 									Iterator<TipoAcompFuncAcompTafc> tipoFuncAcompIt = listTipoAcompFuncAcomp.iterator();
500 									while(tipoFuncAcompIt.hasNext()) {
501 										TipoAcompFuncAcompTafc tipoAcompFuncAcompTafc = (TipoAcompFuncAcompTafc)tipoFuncAcompIt.next();
502 										if(	relatorio.getTipoFuncAcompTpfa().getCodTpfa().equals(tipoAcompFuncAcompTafc.getTipoFuncAcompTpfa().getCodTpfa())
503 											&& tipoAcompFuncAcompTafc.getIndRegistroPosicaoTafc() != null 
504 											&& tipoAcompFuncAcompTafc.getIndRegistroPosicaoTafc().equals(Dominios.OPCIONAL)) {
505 											ehObrigatorio = false;
506 										}
507 									}
508 								}
509 								
510 								if( imageError && ehObrigatorio) {
511 									aval += "<img border=\"0\" src=\"" + getPathEcar() + "/images/relAcomp/";
512 									aval += corDao.getImagemRelatorio(null, relatorio.getTipoFuncAcompTpfa()) + "\" title=\"";
513 									aval += relatorio.getTipoFuncAcompTpfa().getLabelTpfa() + "\" >";
514 								}
515 							
516 							}
517 						}
518 						
519 						retorno.append(aval);
520 																			
521 						if(!"true".equals(status)){
522 							retorno.append("</a>");
523 						}
524 					} else {
525 						if((Dominios.NAO).equals(getExigeLiberarAcompanhamento()) || (ari.getAcompRelatorioArels() != null && ari.getAcompRelatorioArels().size() > 0)) {
526 							if(!"true".equals(status)){
527 								retorno.append("<a name=\"ancora<%=ari.getItemEstruturaIett().getCodIett()%>\" href=\"#\" onclick=\"javascript:aoClicarConsultar(form, "+ari.getCodAri()+", "+ ari.getItemEstruturaIett().getCodIett()+ ")\">");								
528 								itensSessaoVisualizar.add(ari.getCodAri().toString());
529 								request.setAttribute("itensSessaoVisualizar",itensSessaoVisualizar );							
530 								if(usuarioLogadoEmiteParecer || permissaoAdministradorAcompanhamento) {
531 									itensSessao.add(ari.getCodAri().toString());
532 									request.setAttribute("itensSessao",itensSessao );
533 								}
534 							}  
535 							retorno.append("<p title=\"Não liberado\">N/L</p>"); 
536 							if(!"true".equals(status)){ 
537 								retorno.append("</a>");
538 							}
539 						} else {
540 							retorno.append("&nbsp;");
541 						}
542 					}
543 					retorno.append("</td>");
544 				}
545 				//Incluir o separador no caso de existir mais de um periodo a exibir
546 				if(itPeriodos.hasNext())
547 					retorno.append("*@*");
548 			}
549     	} catch(ECARException ecarEx) {
550     		Logger.getLogger(this.getClass()).error(ecarEx);
551 			ecarEx.printStackTrace();
552     	}
553     	return retorno;
554     }
555     
556 	public String getCodAref() {
557 		return codAref;
558 	}
559 
560 	public void setCodAref(String codAref) {
561 		this.codAref = codAref;
562 	}
563 
564 	public ItemEstruturaIett getItemEstrutura() {
565 		return itemEstrutura;
566 	}
567 	public void setItemEstrutura(ItemEstruturaIett itemEstrutura) {
568 		this.itemEstrutura = itemEstrutura;
569 	}
570 	
571 	public UsuarioUsu getUsuario() {
572 		return usuario;
573 	}
574 	public void setUsuario(UsuarioUsu usuario) {
575 		this.usuario = usuario;
576 	}
577 	
578 	public StatusRelatorioSrl getStatusLiberado() {
579 		return statusLiberado;
580 	}
581 
582 	public void setStatusLiberado(StatusRelatorioSrl statusLiberado) {
583 		this.statusLiberado = statusLiberado;
584 	}
585 
586 	public Collection<AcompReferenciaAref> getPeriodosConsiderados() {
587 		return periodosConsiderados;
588 	}
589 
590 	public void setPeriodosConsiderados(Collection<AcompReferenciaAref> periodosConsiderados) {
591 		this.periodosConsiderados = periodosConsiderados;
592 	}
593 
594 	public String getStatus() {
595 		return status;
596 	}
597 	public void setStatus(String status) {
598 		this.status = status;
599 	}
600 	
601 	public String getIdPagina() {
602 		return idPagina;
603 	}
604 
605 	public void setIdPagina(String idPagina) {
606 		this.idPagina = idPagina;
607 	}
608 
609 	public String getPathEcar() {
610 		return pathEcar;
611 	}
612 	public void setPathEcar(String pathEcar) {
613 		this.pathEcar = pathEcar;
614 	}
615 	
616 	public String getCaminhoUrl() {
617 		return caminhoUrl;
618 	}
619 	public void setCaminhoUrl(String caminhoUrl) {
620 		this.caminhoUrl = caminhoUrl;
621 	}
622 	
623 	public String getCodTipoAcompanhamento() {
624 		return codTipoAcompanhamento;
625 	}
626 	public void setCodTipoAcompanhamento(String codTipoAcompanhamento) {
627 		this.codTipoAcompanhamento = codTipoAcompanhamento;
628 	}
629 	
630 	public String getExigeLiberarAcompanhamento() {
631 		return exigeLiberarAcompanhamento;
632 	}
633 
634 	public void setExigeLiberarAcompanhamento(String exigeLiberarAcompanhamento) {
635 		this.exigeLiberarAcompanhamento = exigeLiberarAcompanhamento;
636 	}
637 
638 	public HttpServletRequest getRequest() {
639 		return request;
640 	}
641 	public void setRequest(HttpServletRequest request) {
642 		this.request = request;
643 	}
644 
645 	public List getTpfaOrdenadosPorEstrutura() {
646 		return tpfaOrdenadosPorEstrutura;
647 	}
648 
649 	public void setTpfaOrdenadosPorEstrutura(List tpfaOrdenadosPorEstrutura) {
650 		this.tpfaOrdenadosPorEstrutura = tpfaOrdenadosPorEstrutura;
651 	}
652 
653 	public SegurancaECAR getSeguranca() {
654 		return seguranca;
655 	}
656 
657 	public void setSeguranca(SegurancaECAR seguranca) {
658 		this.seguranca = seguranca;
659 	}
660 
661 	public boolean isPermissaoAdministradorAcompanhamento() {
662 		return permissaoAdministradorAcompanhamento;
663 	}
664 
665 	public void setPermissaoAdministradorAcompanhamento(
666 			boolean permissaoAdministradorAcompanhamento) {
667 		this.permissaoAdministradorAcompanhamento = permissaoAdministradorAcompanhamento;
668 	}
669 
670 }