View Javadoc

1   /*
2    * Criado em 14/12/2004
3    *
4    */
5   package ecar.taglib.util;
6   
7   import java.util.ArrayList;
8   import java.util.Iterator;
9   import java.util.List;
10  
11  import javax.servlet.jsp.JspException;
12  import javax.servlet.jsp.JspWriter;
13  import javax.servlet.jsp.tagext.Tag;
14  import javax.servlet.jsp.tagext.TagSupport;
15  
16  import org.apache.log4j.Logger;
17  
18  import ecar.dao.ItemEstruturaDao;
19  import ecar.dao.TipoAcompanhamentoDao;
20  import ecar.login.SegurancaECAR;
21  import ecar.permissao.ValidaPermissao;
22  import ecar.pojo.EstruturaEtt;
23  import ecar.pojo.ItemEstruturaIett;
24  import ecar.pojo.TipoAcompanhamentoTa;
25  
26  /**
27   * @author felipev
28   *  
29   */
30  public class ArvoreEstruturasTag extends TagSupport {
31  
32  	ValidaPermissao validaPermissao = new ValidaPermissao();
33  
34  	/**
35  	 * 
36  	 */
37  	private static final long serialVersionUID = -2194337577924245741L;
38  	private ItemEstruturaIett itemEstrutura;
39      private Boolean proximoNivel;
40      private Boolean exibirLinks;
41      private String contextPath;
42  	private SegurancaECAR seguranca;
43  
44      private String primeiroIettClicado; // utilizado no relatório de acompanhamento
45      private String primeiroAriClicado; // utilizado no relatório de acompanhamento
46      private String telaAnterior; //utilizado no relatório de acompanhamento
47  
48      private String codTipoAcompanhamentoSelecionado; //utilizado no relatório de acompanhamento
49      private String periodoSelecionado;
50  
51      /**
52       * Inicializa a montagem da tag para ser adicionada na tela de HTML.<br>
53       * 
54       * @author N/C
55  	 * @since N/C
56  	 * @version N/C
57  	 * @return int
58  	 * @throws JspException
59       */
60      public int doStartTag() throws JspException {
61  
62          JspWriter writer = this.pageContext.getOut();
63          String connector = "";
64          
65          try {
66              StringBuffer s = new StringBuffer();
67              List lista = new ArrayList();
68              if(getItemEstrutura() != null)
69              	lista = new ItemEstruturaDao(null).getAscendentes(getItemEstrutura());	
70                          
71              if (getItemEstrutura() != null)
72              	lista.add(getItemEstrutura());
73              
74              Iterator it = lista.iterator();
75              ItemEstruturaIett itemEstruturaP;
76              
77              
78              // para encontrar o nome do tipo de acompanhamento pelo código
79              // Serve para a árvore em monitoramento [Thaise]
80              String codTipoAcompanhamento = null;
81              TipoAcompanhamentoDao tipoAcompanhamentoDao = null; 
82              TipoAcompanhamentoTa ta = null; 
83              
84              if (this.getCodTipoAcompanhamentoSelecionado()!=null){
85  	            codTipoAcompanhamento = this.getCodTipoAcompanhamentoSelecionado();
86  	            tipoAcompanhamentoDao = new TipoAcompanhamentoDao();
87  	            ta = (TipoAcompanhamentoTa) tipoAcompanhamentoDao.buscar(
88  	            		TipoAcompanhamentoTa.class, Long.valueOf(codTipoAcompanhamento));
89  	            s.append(ta.getDescricaoTa());
90              }
91              
92              
93              
94              
95              //começa a árvore
96              s.append("<div id=\"menuemcascata\">");
97              
98              int nivel = 1;
99  
100             while (it.hasNext()) {
101             	connector = "?"; // define o primeiro conector para parametros na url
102                 itemEstruturaP = (ItemEstruturaIett) it.next();
103                 
104                 s.append("<div class=\"cascata_nivel_").append(nivel).append("\">");
105                 
106                 //testar o item selecionado
107                 if(getItemEstrutura().getCodIett() == itemEstruturaP.getCodIett()){
108                 	s.append("<div class=\"selecionado\">");
109                 }
110                 
111                 s.append("<img src=\"").append(getContextPath()).append("/images/icon_seta_ident.gif\"> ");
112                 s.append(itemEstruturaP.getEstruturaEtt().getNomeEtt());
113                 
114                 boolean possuiPermissaoConsulta = true;
115                 
116                 // se não existir o objeto seguranca significa que não interessa a permissão de consulta
117                 if(seguranca != null) {
118     				possuiPermissaoConsulta = validaPermissao.permissaoConsultarItem(
119     						itemEstruturaP,seguranca.getUsuario(),seguranca.getGruposAcesso());
120                 }
121                                                
122 				if(itemEstruturaP.getNomeIett() != null){
123                     s.append(" - ");
124 					if( (getExibirLinks() == null || getExibirLinks().booleanValue()) && possuiPermissaoConsulta){						
125 	                    s.append("<a href=\"").append(getContextPath()).append("/cadastroItens/dadosGerais/frm_con.jsp");
126 	                    s.append("?codIett=").append(itemEstruturaP.getCodIett());						
127 						s.append("\">");
128                     }     	                    
129                     s.append(itemEstruturaP.getNomeIett());
130                     if( (getExibirLinks() == null || getExibirLinks().booleanValue()) && possuiPermissaoConsulta){
131                         s.append("</a>");
132                     }
133                 }
134 
135 				
136 				if(getPrimeiroIettClicado() != null && !"".equals(getPrimeiroIettClicado()) 
137 						&& getPrimeiroIettClicado().equals(itemEstruturaP.getCodIett().toString())) {
138 					
139 					if(getTelaAnterior() != null && !"".equals(getTelaAnterior())){
140 						s.append("<a href=\"").append(getTelaAnterior());
141 					}
142 					else {
143 	                    s.append("<a href=\"").append(getContextPath()).append("/acompanhamento/posicaoGeral.jsp");
144 	                    s.append("?primeiroIettClicado=").append(getPrimeiroIettClicado());
145 	                    s.append("&primeiroAriClicado=").append(getPrimeiroAriClicado());
146 						if(getCodTipoAcompanhamentoSelecionado() != null && !"".equals(getCodTipoAcompanhamentoSelecionado())){
147 		                    s.append("&codTipoAcompanhamento=").append(getCodTipoAcompanhamentoSelecionado());
148 						}
149 						if(getPeriodoSelecionado() != null && !"".equals(getPeriodoSelecionado())){
150 		                    s.append("&periodo=").append(getPeriodoSelecionado());
151 						}
152 					}
153 					s.append("\"> ");
154 					
155 					// Se vier de demandas ou associacao de demandas, o link sera voltar para listagem
156 					Long linkCodDemanda = (Long) this.pageContext.getSession().getAttribute("linkCodDemanda");
157 			        if (linkCodDemanda != null && !"".equals(linkCodDemanda)) {
158 			        	s.append("[Ir para listagem]</a>");
159 			        } else {
160 			        	s.append("[Voltar]</a>");
161 			        }
162 					
163                     
164 				}
165                 
166                 if((getExibirLinks() == null || getExibirLinks().booleanValue())){
167                 	
168                     s.append("<a href=\"").append(getContextPath()).append("/cadastroItens/listaItem/lista.jsp");
169                     
170                     // Rogerio (28/03/2007). Mantis #9358.
171                     // Prepara o link para retorno na aba correta.
172                     
173                     if (itemEstruturaP.getItemEstruturaIett() != null) {
174                         s.append(connector + "codIettPrincipal=").append(itemEstruturaP.getItemEstruturaIett().getCodIett());
175                         connector = "&";
176                     }
177                     
178                    	s.append(connector + "ultEttSelecionado=" + itemEstruturaP.getEstruturaEtt().getCodEtt().toString() );
179                    	connector = "&";
180                     
181                     // Rogerio Fim Mantis #9358.
182                     
183                     s.append("\" >");
184                     s.append(" [Ir para listagem]</a></div>");
185                     
186                     // Rogerio (28/03/2007) Mantis #9360.
187                     // Escreve a variavel em JS que será usada para o retorno do form quando usuario clicar em cancelar.
188                     if( itemEstrutura.getEstruturaEtt() != null && getItemEstrutura().getCodIett() == itemEstruturaP.getCodIett() ) {                   	
189                     	writer.print("<script type=\"text/javascript\">var jsUltEttSelecionado = " + 
190                     			itemEstrutura.getEstruturaEtt().getCodEtt().toString() + ";</script>");
191                     } 
192                 }
193                 
194                 //testar para fechar o DIV selecionado
195                 if(itemEstrutura.getCodIett() == itemEstruturaP.getCodIett()){
196                 	s.append("</div>");
197                 }
198                 s.append("\n");
199                 nivel++;
200             }
201             
202             boolean existeNiveisAtivos=false;
203             Iterator<EstruturaEtt> itEstrutura = null;
204             if (itemEstrutura != null && itemEstrutura.getEstruturaEtt() != null){
205             	itEstrutura =  itemEstrutura.getEstruturaEtt().getEstruturaEtts().iterator();
206             }
207             
208 
209             if (itEstrutura != null){
210             	while(itEstrutura.hasNext()){
211                    	EstruturaEtt estrutura = (EstruturaEtt)itEstrutura.next();
212                 	if (estrutura.getIndAtivoEtt().equalsIgnoreCase("S") ){
213                 		existeNiveisAtivos = true;
214                 		break;
215                 	}
216                 }
217             }
218             
219             
220 
221             /* só faz o proximo nivel se nao passar o parametro (default) ou se passar como true 
222              * e se existir mais niveis ativos abaixo dele */
223             if ((getProximoNivel() == null || getProximoNivel().booleanValue()) && existeNiveisAtivos){
224                 s.append("<div class=\"cascata_nivel_").append(nivel).append("\"><img src=\"").append(getContextPath()).append("/images/icon_seta_ident.gif\">");
225                 s.append("<a href=\"" + getContextPath() + "/cadastroItens/listaItem/lista.jsp?codIettPrincipal=").append(itemEstrutura.getCodIett());
226                 s.append("\" >");
227                 s.append("Ir para o pr&oacute;ximo n&iacute;vel </a></div>");
228             }
229             
230             s.append("</div>");
231             
232             s.append("<br>");
233             writer.print(s.toString());
234         } catch (Exception e) {
235         	Logger logger = Logger.getLogger(this.getClass());
236         	logger.error(e);
237 
238         }
239         return Tag.SKIP_BODY;
240 
241     }
242 
243     /**
244      * Encerra Tag.<br>
245      * 
246      * @author N/C
247 	 * @since N/C
248 	 * @version N/C
249 	 * @return int
250 	 * @throws JspException
251      */
252     public int doEndTag() throws JspException {
253         /* processa o restante da página jsp */
254         return Tag.EVAL_PAGE;
255     }
256 
257     /**
258      * Retorna Boolean proximoNivel.<br>
259      * 
260      * @author N/C
261 	 * @since N/C
262 	 * @version N/C
263      * @return Boolean - (Returns the proximoNivel)
264      */
265     public Boolean getProximoNivel() {
266         return proximoNivel;
267     }
268     
269     /**
270      * Atribui valor especificado para Boolean proximoNivel.<br>
271      * 
272      * @author N/C
273 	 * @since N/C
274 	 * @version N/C
275      * @param Boolean proximoNivel - (The proximoNivel to set)
276      */
277     public void setProximoNivel(Boolean proximoNivel) {
278         this.proximoNivel = proximoNivel;
279     }
280     
281     /**
282      * Retorna String contextPath.<br>
283      * 
284      * @author N/C
285 	 * @since N/C
286 	 * @version N/C
287      * @return String - (Returns the contextPath)
288      */
289     public String getContextPath() {
290         return contextPath;
291     }
292     
293     /**
294      * Atribui valor especificado para String contextPath.<br>
295      * 
296      * @author N/C
297 	 * @since N/C
298 	 * @version N/C
299      * @param String contextPath - (The contextPath to set)
300      */
301     public void setContextPath(String contextPath) {
302         this.contextPath = contextPath;
303     }
304     
305     /**
306      * Retorna Boolean exibirLinks.<br>
307      * 
308      * @author N/C
309 	 * @since N/C
310 	 * @version N/C
311      * @return Boolean - (Returns the exibirLinks)
312      */
313     public Boolean getExibirLinks() {
314         return exibirLinks;
315     }
316     
317     /**
318      * Atribui valor especificado para Boolean exibirLinks.<br>
319      * 
320      * @author N/C
321 	 * @since N/C
322 	 * @version N/C
323      * @param Boolean exibirLinks - (The exibirLinks to set)
324      */
325     public void setExibirLinks(Boolean exibirLinks) {
326         this.exibirLinks = exibirLinks;
327     }
328 
329 	/**
330 	 * Retorna SegurancaECAR seguranca.<br>
331 	 * 
332 	 * @author N/C
333 	 * @since N/C
334 	 * @version N/C
335 	 * @return SegurancaECAR - (Returns the seguranca)
336 	 */
337 	public SegurancaECAR getSeguranca() {
338 		return seguranca;
339 	}
340 
341 	/**
342 	 * Atribui valor especificado para SegurancaECAR seguranca.<br>
343 	 * 
344 	 * @author N/C
345 	 * @since N/C
346 	 * @version N/C
347 	 * @param SegurancaECAR seguranca - (The seguranca to set)
348 	 */
349 	public void setSeguranca(SegurancaECAR seguranca) {
350 		this.seguranca = seguranca;
351 	}
352 
353 	/**
354 	 * Retorna String primeiroIettClicado.<br>
355 	 * 
356 	 * @author N/C
357 	 * @since N/C
358 	 * @version N/C
359 	 * @return String
360 	 */
361 	public String getPrimeiroIettClicado() {
362 		return primeiroIettClicado;
363 	}
364 
365 	/**
366 	 * Atribui valor especificado para String primeiroIettClicado.<br>
367 	 * 
368 	 * @author N/C
369 	 * @since N/C
370 	 * @version N/C
371 	 * @param String primeiroIettClicado
372 	 */
373 	public void setPrimeiroIettClicado(String primeiroIettClicado) {
374 		this.primeiroIettClicado = primeiroIettClicado;
375 	}
376 
377 	/**
378 	 * Retorna String primeiroAriClicado.<br>
379 	 * 
380 	 * @author N/C
381 	 * @since N/C
382 	 * @version N/C
383 	 * @return String
384 	 */
385 	public String getPrimeiroAriClicado() {
386 		return primeiroAriClicado;
387 	}
388 
389 	/**
390 	 * Atribui valor especificado para String primeiroAriClicado.<br>
391 	 * 
392 	 * @author N/C
393 	 * @since N/C
394 	 * @version N/C
395 	 * @param String primeiroAriClicado
396 	 */
397 	public void setPrimeiroAriClicado(String primeiroAriClicado) {
398 		this.primeiroAriClicado = primeiroAriClicado;
399 	}
400 
401 	/**
402 	 * Retorna String telaAnterior.<br>
403 	 * 
404 	 * @author N/C
405 	 * @since N/C
406 	 * @version N/C
407 	 * @return String
408 	 */
409 	public String getTelaAnterior() {
410 		return telaAnterior;
411 	}
412 
413 	/**
414 	 * Atribui valor especficado para String telaAnterior.<br>
415 	 * 
416 	 * @author N/C
417 	 * @since N/C
418 	 * @version N/C
419 	 * @param String telaAnterior
420 	 */
421 	public void setTelaAnterior(String telaAnterior) {
422 		this.telaAnterior = telaAnterior;
423 	}
424     /**
425      * Retorna ItemEstruturaIett itemEstrutura.<br>
426      * 
427      * @author N/C
428 	 * @since N/C
429 	 * @version N/C
430      * @return ItemEstruturaIett - (Returns the estrutura)
431      */
432     public ItemEstruturaIett getItemEstrutura() {
433         return itemEstrutura;
434     }
435 
436     /**
437      * Atribui valor especificado para ItemEstruturaIett itemEstrutura.<br>
438      * 
439      * @author N/C
440 	 * @since N/C
441 	 * @version N/C
442      * @param ItemEstruturaIett itemEstrutura - (The estrutura to set)
443      */
444     public void setItemEstrutura(ItemEstruturaIett itemEstrutura) {
445         this.itemEstrutura = itemEstrutura;
446     }
447 
448     /**
449      * 
450      * Retorna String codTipoAcompanhamentoSelecionado.<br>
451      * @author N/C
452 	 * @since N/C
453 	 * @version N/C
454      * @return String
455      */
456 	public String getCodTipoAcompanhamentoSelecionado() {
457 		return codTipoAcompanhamentoSelecionado;
458 	}
459 
460 	/**
461 	 * Atribui valor especificado para String codTipoAcompanhamentoSelecionado.<br>
462 	 * 
463 	 * @author N/C
464 	 * @since N/C
465 	 * @version N/C
466 	 * @param String codTipoAcompanhamentoSelecionado
467 	 */
468 	public void setCodTipoAcompanhamentoSelecionado(String codTipoAcompanhamentoSelecionado) {
469 		this.codTipoAcompanhamentoSelecionado = codTipoAcompanhamentoSelecionado;
470 	}
471 
472 	public String getPeriodoSelecionado() {
473 		return periodoSelecionado;
474 	}
475 
476 	public void setPeriodoSelecionado(String periodoSelecionado) {
477 		this.periodoSelecionado = periodoSelecionado;
478 	}
479 }