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.pojo.ItemEstruturaIett;
20  
21  /**
22   * @author cristiano
23   *  
24   */
25  public class ArvoreEstruturaElabAcompTag extends TagSupport {
26  
27  	/**
28  	 * 
29  	 */
30  	private static final long serialVersionUID = 8136547080998871299L;
31  
32  	private Logger logger = Logger.getLogger(this.getClass());
33  
34  	private ItemEstruturaIett itemEstrutura;
35      private String contextPath;
36      private String codigoAcomp;
37      private String primeiroItemAriClicado;
38      private String codItemClicadoSubNiveis;
39      private List listaParaArvore; // lista de strings contendo a concatenação de iett_ari relacionada na aba relações
40      private String nivelPrimeiroIettClicado;
41      private String abaAtual;
42      private String primeiroAcomp;
43      
44      public static String ABA_DADOS_BASICOS = "ABA_DADOS_BASICOS";
45      public static String ABA_REALIZADO_FISICO = "ABA_REALIZADO_FISICO";
46      public static String ABA_ACOMPANHAMENTOS = "ABA_ACOMPANHAMENTOS";
47      public static String PATH_ACOMP = "/regAcompanhamento/elabAcompanhamento/";
48  
49      /**
50       * Inicializa a montagem da tag para ser adicionada na tela de HTML.<br>
51       * 
52       * @author N/C
53  	 * @since N/C
54  	 * @version N/C
55  	 * @return int
56  	 * @throws JspException
57       */
58  	public int doStartTag() throws JspException {
59  
60          JspWriter writer = this.pageContext.getOut();
61          
62          try {
63              StringBuffer s = new StringBuffer();
64              List lista = new ArrayList();
65  
66              if(getItemEstrutura() != null)
67              	lista = new ItemEstruturaDao(null).getAscendentes(getItemEstrutura());	
68                          
69              if (getItemEstrutura() != null)
70              	lista.add(getItemEstrutura());
71  
72              Iterator it = lista.iterator();
73              ItemEstruturaIett itemEstruturaP;
74  
75              s.append("<div id=\"menuemcascata\">");
76              
77              int nivel = 1;
78  
79              String linkPrimeiro = "";
80              if(!"".equals(primeiroAcomp)){
81              	linkPrimeiro = "primeiroAcomp="+primeiroAcomp+"&";
82              }
83              
84              while (it.hasNext()) {
85                  itemEstruturaP = (ItemEstruturaIett) it.next();
86                  
87                  s.append("<div class=\"cascata_nivel_" + nivel + "\">");
88                  
89                  //testar o item selecionado
90                  if(getItemEstrutura().getCodIett() == itemEstruturaP.getCodIett()){
91                  	s.append("<div class=\"selecionado\">");
92                  }
93                  
94                  s.append("<img src=\"" + getContextPath() + "/images/icon_seta_ident.gif\"> ");
95  
96                  s.append(itemEstruturaP.getEstruturaEtt().getNomeEtt().trim());
97                  s.append(" - ");
98                  
99                  if(ABA_ACOMPANHAMENTOS.equals(this.getAbaAtual())) {
100                     s.append(itemEstruturaP.getNomeIett().trim());
101                     s.append("</div>");                    
102                 }
103                 else {
104                     String codAri = "";
105                     
106                     if(itemEstrutura.getCodIett() == itemEstruturaP.getCodIett()){
107     	                Long codAriIett = getCodAri(itemEstruturaP.getCodIett());
108     	                
109     	                if(codAriIett != null) {
110     	                	codAri = "?"+linkPrimeiro+"codAri=" + codAriIett;
111     	                }
112                     }
113                 	
114                     if("".equals(codAri)) {
115                         s.append(itemEstruturaP.getNomeIett().trim());
116                 	}
117                 	else {
118                         if(ABA_DADOS_BASICOS.equals(this.getAbaAtual())) {
119                         	s.append("<a href=\"" + getContextPath() + PATH_ACOMP + "dadosGerais/frm_con.jsp");
120                         }
121                         else {
122                         	s.append("<a href=\"" + getContextPath() + PATH_ACOMP + "realizadoFisico.jsp");
123                         }
124                         s.append(codAri + "&codAcomp=" + getCodigoAcomp()); 
125                         s.append("\">");
126                         s.append(itemEstruturaP.getNomeIett().trim());
127                         s.append("</a>");
128                 	}
129                 
130     				if(getCodItemClicadoSubNiveis() != null && getPrimeiroItemAriClicado() != null
131     						&& !"".equals(getCodItemClicadoSubNiveis()) && !"".equals(getPrimeiroItemAriClicado())  
132     						&& Long.parseLong(getCodItemClicadoSubNiveis()) == itemEstruturaP.getCodIett().longValue()) {
133     					
134                         s.append("<a href=\"" + getContextPath() + PATH_ACOMP + "realizadoFisico.jsp");
135                         s.append("?"+linkPrimeiro+"codAri=" + getPrimeiroItemAriClicado());
136                         s.append("&codAcomp=" + getCodigoAcomp());
137     					s.append("\">");
138                         s.append("[Voltar]</a>");
139     				}
140     				else {
141     					if(nivel == Integer.parseInt(this.getNivelPrimeiroIettClicado())) {
142 	                        s.append("<a href=\"" + getContextPath() + PATH_ACOMP + "listaItens.jsp");
143 	                        s.append("?"+linkPrimeiro+"codAcomp=" + getCodigoAcomp() + "&sinalizarItem=" + itemEstruturaP.getCodIett() + "#ancoraItem" + itemEstruturaP.getCodIett());
144 	    					s.append("\">");
145 	   						s.append("[Ir para Relação]");
146 	                        s.append("</a>");
147     					}
148     				}
149                     
150                     s.append("</div>");                    
151                 }
152 				
153                 //testar para fechar o DIV selecionado
154                 if(itemEstrutura.getCodIett() == itemEstruturaP.getCodIett()){
155                 	s.append("</div>");
156                 }
157                 
158                 s.append("\n");
159                 nivel++;
160             }
161 
162             
163             s.append("</div>");
164             
165             s.append("<br>");
166             writer.print(s.toString());
167         } catch (Exception e) {
168         	logger.error(e);
169         }
170         return Tag.SKIP_BODY;
171 
172     }
173 
174 	/**
175 	 * Encerra Tag.<br>
176 	 * 
177 	 * @author N/C
178 	 * @since N/C
179 	 * @version N/C
180 	 * @return int
181 	 * @throws JspException
182 	 */
183     public int doEndTag() throws JspException {
184         /* processa o restante da página jsp */
185         return Tag.EVAL_PAGE;
186     }
187     
188     /**
189      * Recupera o código de um ARI através do codIett apresentado na relação.<br>
190      * 
191      * @author N/C
192 	 * @since N/C
193 	 * @version N/C
194      * @param Long codIett
195      * @return Long
196      */
197     private Long getCodAri(Long codIett) {
198     	Iterator it = getListaParaArvore().iterator();
199     	
200     	while(it.hasNext()) {
201     		String str = (String)it.next();
202     		int indiceUnderline = str.indexOf("_");
203     		String item = str.substring(0, indiceUnderline);
204     		String ari = str.substring(indiceUnderline + 1);
205     		
206     		if(Long.parseLong(item) == codIett.longValue()) {
207     			return Long.valueOf(ari); 
208     		}
209     	}
210     	
211     	return null;
212     }
213 
214     /**
215      * Retorna String codigoAcomp.<br>
216      * 
217      * @author N/C
218 	 * @since N/C
219 	 * @version N/C
220      * @return String
221      */
222 	public String getCodigoAcomp() {
223 		return codigoAcomp;
224 	}
225 
226 	/**
227 	 * Atribui valor especificado para String codigoAcomp.<br>
228 	 * 
229 	 * @author N/C
230 	 * @since N/C
231 	 * @version N/C
232 	 * @param String codigoAcomp
233 	 */
234 	public void setCodigoAcomp(String codigoAcomp) {
235 		this.codigoAcomp = codigoAcomp;
236 	}
237 
238 	/**
239 	 * Retorna String codItemClicadoSubNiveis.<br>
240 	 * 
241 	 * @author N/C
242 	 * @since N/C
243 	 * @version N/C
244 	 * @return String
245 	 */
246 	public String getCodItemClicadoSubNiveis() {
247 		return codItemClicadoSubNiveis;
248 	}
249 
250 	/**
251 	 * Atribui valor especificado para String codItemClicadoSubNiveis.<br>
252 	 * 
253 	 * @author N/C
254 	 * @since N/C
255 	 * @version N/C
256 	 * @param String codItemClicadoSubNiveis
257 	 */
258 	public void setCodItemClicadoSubNiveis(String codItemClicadoSubNiveis) {
259 		this.codItemClicadoSubNiveis = codItemClicadoSubNiveis;
260 	}
261 
262 	/**
263 	 * Retorna String contextPath.<br>
264 	 * 
265 	 * @author N/C
266 	 * @since N/C
267 	 * @version N/C
268 	 * @return String
269 	 */
270 	public String getContextPath() {
271 		return contextPath;
272 	}
273 
274 	/**
275 	 * Atribui valor especificado para String contextPath.<br>
276 	 * 
277 	 * @author N/C
278 	 * @since N/C
279 	 * @version N/C
280 	 * @param String contextPath
281 	 */
282 	public void setContextPath(String contextPath) {
283 		this.contextPath = contextPath;
284 	}
285 
286 	/**
287 	 * Retorna valor ItemEstruturaIett itemEstrutura.<br>
288 	 * 
289 	 * @author N/C
290 	 * @since N/C
291 	 * @version N/C
292 	 * @return ItemEstruturaIett
293 	 */
294 	public ItemEstruturaIett getItemEstrutura() {
295 		return itemEstrutura;
296 	}
297 
298 	/**
299 	 * Atribui valor especificado para ItemEstruturaIett itemEstrutura.<br>
300 	 * 
301 	 * @author N/C
302 	 * @since N/C
303 	 * @version N/C
304 	 * @param ItemEstruturaIett itemEstrutura
305 	 */
306 	public void setItemEstrutura(ItemEstruturaIett itemEstrutura) {
307 		this.itemEstrutura = itemEstrutura;
308 	}
309 
310 	/**
311 	 * Retorna List listaParaArvore.<br>
312 	 * 
313 	 * @author N/C
314 	 * @since N/C
315 	 * @version N/C
316 	 * @return List
317 	 */
318 	public List getListaParaArvore() {
319 		return listaParaArvore;
320 	}
321 
322 	/**
323 	 * Atribui valor especificado para List listaParaArvore.<br>
324 	 * 
325 	 * @author N/C
326 	 * @since N/C
327 	 * @version N/C
328 	 * @param List listaParaArvore
329 	 */
330 	public void setListaParaArvore(List listaParaArvore) {
331 		this.listaParaArvore = listaParaArvore;
332 	}
333 
334 	/**
335 	 * Retorna String nivelPrimeiroIettClicado.<br>
336 	 * 
337 	 * @author N/C
338 	 * @since N/C
339 	 * @version N/C
340 	 * @return String
341 	 */
342 	public String getNivelPrimeiroIettClicado() {
343 		return nivelPrimeiroIettClicado;
344 	}
345 
346 	/**
347 	 * Atribui valor especificado para String nivelPrimeiroIettClicado.<br>
348 	 * 
349 	 * @author N/C
350 	 * @since N/C
351 	 * @version N/C
352 	 * @param String nivelPrimeiroIettClicado
353 	 */
354 	public void setNivelPrimeiroIettClicado(String nivelPrimeiroIettClicado) {
355 		this.nivelPrimeiroIettClicado = nivelPrimeiroIettClicado;
356 	}
357 
358 	/**
359 	 * Retorna String primeiroItemAriClicado.<br>
360 	 * 
361 	 * @author N/C
362 	 * @since N/C
363 	 * @version N/C
364 	 * @return String
365 	 */
366 	public String getPrimeiroItemAriClicado() {
367 		return primeiroItemAriClicado;
368 	}
369 
370 	/**
371 	 * Atribui valor especificado para String primeiroItemAriClicado.<br>
372 	 * 
373 	 * @author N/C
374 	 * @since N/C
375 	 * @version N/C
376 	 * @param String primeiroItemAriClicado
377 	 */
378 	public void setPrimeiroItemAriClicado(String primeiroItemAriClicado) {
379 		this.primeiroItemAriClicado = primeiroItemAriClicado;
380 	}
381 
382 	/**
383 	 * Retorna String abaAtual.<br>
384 	 * 
385 	 * @author N/C
386 	 * @since N/C
387 	 * @version N/C
388 	 * @return String
389 	 */
390 	public String getAbaAtual() {
391 		return abaAtual;
392 	}
393 
394 	/**
395 	 * Atribui valor especificado para String abaAtual.<br>
396 	 * 
397 	 * @author N/C
398 	 * @since N/C
399 	 * @version N/C
400 	 * @param String abaAtual
401 	 */
402 	public void setAbaAtual(String abaAtual) {
403 		this.abaAtual = abaAtual;
404 	}
405 
406 	/**
407 	 * Retorna String primeiroAcomp.<br>
408 	 * 
409 	 * @author N/C
410 	 * @since N/C
411 	 * @version N/C
412 	 * @return String
413 	 */
414 	public String getPrimeiroAcomp() {
415 		return primeiroAcomp;
416 	}
417 
418 	/**
419 	 * Atribui valor especificado para String primeiroAcomp.<br>
420 	 * 
421 	 * @author N/C
422 	 * @since N/C
423 	 * @version N/C
424 	 * @param String primeiroAcomp
425 	 */
426 	public void setPrimeiroAcomp(String primeiroAcomp) {
427 		this.primeiroAcomp = primeiroAcomp;
428 	}
429 }