View Javadoc

1   /*
2    *
3    */
4   package ecar.taglib.util;
5   
6   import java.io.IOException;
7   import java.util.ArrayList;
8   import java.util.Collection;
9   import java.util.HashSet;
10  import java.util.Iterator;
11  import java.util.List;
12  import java.util.Set;
13  
14  import javax.servlet.http.HttpServletRequest;
15  import javax.servlet.jsp.JspException;
16  import javax.servlet.jsp.JspWriter;
17  import javax.servlet.jsp.PageContext;
18  import javax.servlet.jsp.tagext.Tag; 
19  
20  import org.apache.log4j.Logger;
21  
22  import comum.database.Dao;
23  import comum.util.Pagina;
24  import comum.util.Util;
25  
26  import ecar.dao.SisGrupoAtributoDao;
27  import ecar.exception.ECARException;
28  import ecar.login.SegurancaECAR;
29  import ecar.pojo.AtributoLivre;
30  import ecar.pojo.DemAtributoDema;
31  import ecar.pojo.EntidadeEnt;
32  import ecar.pojo.LocalItemLit;
33  import ecar.pojo.ObjetoDemanda;
34  import ecar.pojo.OrgaoOrg;
35  import ecar.pojo.PrioridadePrior;
36  import ecar.pojo.RegDemandaRegd;
37  import ecar.pojo.SisAtributoSatb;
38  import ecar.pojo.SisGrupoAtributoSga;
39  import ecar.pojo.SitDemandaSitd;
40  /** 
41   * Tag para preencher a tela de formulário de demanda.<br>
42   * 
43   *  @author José, Fernandes
44   */
45  public class FormRegDemandaTag implements Tag {
46  
47  	private ObjetoDemanda atributo;
48  	private RegDemandaRegd regDemanda;
49      private Boolean desabilitar;
50  	private SegurancaECAR seguranca;	 
51      private String contextPath = null;
52      
53      private String acao;
54      private HttpServletRequest request;
55      
56      private PageContext page = null;
57         
58      /**
59       * Inicializa a montagem da tag para ser adicionada na tela de HTML.<br>
60       * 
61       * @author N/C
62  	 * @since N/C
63  	 * @version N/C
64  	 * @return int
65  	 * @throws JspException
66       */
67      public int doStartTag() throws JspException {
68          try {           	
69              	String nomeMetodo = "geraHTML" + Util.primeiraLetraToUpperCase(atributo.iGetNome());
70              	if(atributo.iGetGrupoAtributosLivres() != null){
71              		nomeMetodo = "geraHTMLAtributoLivre";
72              	}
73              	            	
74              	this.getClass().getMethod(nomeMetodo, null).invoke(this, null);
75              		
76          } catch (Exception e) {
77          	// não é necessário lançar exceção aqui
78          }
79          return Tag.EVAL_BODY_INCLUDE;
80      }
81  
82      public int doEndTag() throws JspException {
83       return Tag.EVAL_PAGE;
84      }
85  	  /**
86  	  * 
87  	  * @author N/C
88  		 * @since N/C
89  		 * @version N/C
90  	  */
91  	public void release() {
92  	
93  	}
94  
95  	public ObjetoDemanda getAtributo() {
96  		return atributo;
97  	}
98  
99  	public void setAtributo(ObjetoDemanda atributo) {
100 		this.atributo = atributo;
101 	}
102 
103 	public RegDemandaRegd getRegDemanda() {
104 		return regDemanda;
105 	}
106 
107 	public void setRegDemanda(RegDemandaRegd regDemanda) {
108 		this.regDemanda = regDemanda;
109 	}
110 
111 	public Boolean getDesabilitar() {
112 		return desabilitar;
113 	}
114 
115 	public void setDesabilitar(Boolean desabilitar) {
116 		this.desabilitar = desabilitar;
117 	}
118 
119 	public SegurancaECAR getSeguranca() {
120 		return seguranca;
121 	}
122 
123 	public void setSeguranca(SegurancaECAR seguranca) {
124 		this.seguranca = seguranca;
125 	}
126 
127 	public PageContext getPage() {
128 		return page;
129 	}
130 
131 	public void setPage(PageContext page) {
132 		this.page = page;
133 	}
134 
135 	public String getContextPath() {
136 		return contextPath;
137 	}
138 
139 	public void setContextPath(String contextPath) {
140 		this.contextPath = contextPath;
141 	}
142 
143 	public Tag getParent() {
144 		return null;
145 	}
146 
147 	public void setPageContext(PageContext arg0) {
148 		this.page = arg0;
149 	}
150 
151 	public void setParent(Tag arg0) {	
152 	}
153 	
154 	/**
155      * Gera html de DescricaoRegd.<br>
156      *
157      * @author N/C
158 	 * @since N/C
159 	 * @version N/C
160      */
161     public void geraHTMLDescricaoRegd() {
162         try {
163         	if (atributo.iGetTamanhoConteudoAtbdem() > ObjetoDemanda.DEFAULT_TAMANHO_CAMPO_TEXT) {
164         		criaTextArea("descricaoRegd", atributo.iGetLabel(), "4", "60", 
165         				atributo.iGetValor(getRegDemanda()), atributo.iGetDica());
166         	} else {
167                 criaInputText(atributo.iGetNome(), atributo.iGetLabel(), 
168                 		atributo.iGetTamanhoConteudoAtbdem().toString(), 
169                 		atributo.iGetTamanhoConteudoAtbdem().toString(), 
170                 		atributo.iGetValor(getRegDemanda()), atributo.iGetDica());
171         	}
172         } catch (ECARException e) {
173         	Logger logger = Logger.getLogger(this.getClass());
174         	logger.error(e);
175         }
176     }
177     
178     /**
179      * Gera html de DataLimiteRegd.<br>
180      * 
181      * @author N/C
182 	 * @since N/C
183 	 * @version N/C
184      */
185     public void geraHTMLDataLimiteRegd() {
186         try {
187             if(getBloquearCampo()){
188                 criaInputHidden(atributo.iGetNome(), atributo.iGetValor(getRegDemanda()));        	
189                 criaInputTextData(atributo.iGetNome()+"Disabled", atributo.iGetLabel(), atributo.iGetValor(getRegDemanda()), atributo.iGetDica());            	
190             } else {
191                 criaInputTextData(atributo.iGetNome(), atributo.iGetLabel(), atributo.iGetValor(getRegDemanda()), atributo.iGetDica());            	
192             }
193         	
194         } catch (ECARException e) {
195         	Logger logger = Logger.getLogger(this.getClass());
196         	logger.error(e);
197         }
198     }
199     
200     /**
201      * Gera HTML de OrgaoOrg.<br>
202      * 
203      * @author N/C
204 	 * @since N/C
205 	 * @version N/C
206      */
207 //    public void geraHTMLOrgaoOrg() {
208 //        OrgaoOrg orgao = new OrgaoOrg();
209 //        orgao.setIndAtivoOrg("S");
210 //        try {
211 //            List orgaos = new Dao().pesquisar(orgao, new String[] {atributo.iGetNomeFk(), "asc" });
212 //            List options = new ArrayList();
213 //            Iterator it = orgaos.iterator();
214 //            while (it.hasNext()) {
215 //                orgao = (OrgaoOrg) it.next();
216 //                options.add(new String[] { orgao.getCodOrg().toString(), Util.invocaGet(orgao, atributo.iGetNomeFk()).toString() });
217 //            }
218 //            criaSelect(atributo.iGetNome(), atributo.iGetLabel(), atributo.iGetValorCodFk(getRegDemanda()), options, "", atributo.iGetDica(), getBloquearCampo());
219 //        } catch (ECARException e) {
220 //        	Logger logger = Logger.getLogger(this.getClass());
221 //        	logger.error(e);
222 //        }
223 //    }
224 
225     /**
226      * Gera HTML de SitDemandaSitd.<br>
227      * 
228      * @author N/C
229 	 * @since N/C
230 	 * @version N/C
231      */
232     public void geraHTMLSitDemandaSitd() {
233         SitDemandaSitd sitDemandaSitd = new SitDemandaSitd(); 
234 
235         try {
236         	List options = new ArrayList();
237         	
238         	/**
239         	 * 03909001416: Esta parte do código foi comentada devido a uma solicitação de alternativas 
240         	 * para o item 41 da Bitacora. Solicitação: na tela de filtros da classificação de demandas, 
241         	 * sejam listados todas as situações no campo status (Situação). 
242         	 */
243         	/*if (acao.equals("filtrarClassificar")){
244         		sitDemandaSitd.setIndPrimeiraSituacaoSitd("S");
245         	}*/
246         	
247         	List situacoes = new Dao().pesquisar(sitDemandaSitd, new String[] {atributo.iGetNomeFk(), "asc" });            	                        
248         	Iterator it = situacoes.iterator();
249             while (it.hasNext()) {
250             	sitDemandaSitd = (SitDemandaSitd) it.next();
251                 options.add(new String[] { sitDemandaSitd.getCodSitd().toString(), Util.invocaGet(sitDemandaSitd, atributo.iGetNomeFk()).toString() });
252             }
253             if (!acao.equals("incluir")){
254             	Boolean bloqueado = new Boolean(false);
255             	boolean telaFiltro = "filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao) ? true:false;
256             	if(!acao.equals("classificar") && !telaFiltro)
257             		bloqueado = new Boolean(true);           
258             	criaSelect(atributo.iGetNome(), atributo.iGetLabel(), atributo.iGetValorCodFk(getRegDemanda()), options, "", atributo.iGetDica(), bloqueado);            	
259             }
260             
261         } catch (ECARException e) {
262         	Logger logger = Logger.getLogger(this.getClass());
263         	logger.error(e);
264         }
265     }
266 
267     /**
268      * Gera HTML de PrioridadePrior.<br>
269      * 
270      * @author N/C
271 	 * @since N/C
272 	 * @version N/C
273      */
274     public void geraHTMLPrioridadePrior() {
275     	PrioridadePrior prioridadePrior = new PrioridadePrior();
276 
277         try {
278         	List options = new ArrayList();
279         	//List situacoes = new Dao().pesquisar(sitDemandaSitd, new String[] {atributo.iGetNomeFk(), "asc" });            	                        
280         	List prioridades = new Dao().pesquisar(prioridadePrior, new String[] {atributo.iGetNomeFk(), "asc" });
281         	Iterator it = prioridades.iterator();
282             while (it.hasNext()) {
283             	prioridadePrior = (PrioridadePrior) it.next();
284                 options.add(new String[] { prioridadePrior.getCodPrior().toString(), Util.invocaGet(prioridadePrior , atributo.iGetNomeFk()).toString() });
285             }
286             if (!acao.equals("incluir")){
287             	Boolean bloqueado = new Boolean(false);
288             	boolean telaFiltro = "filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao) ? true:false;
289             	if(!acao.equals("classificar") && !telaFiltro)
290             		bloqueado = new Boolean(true);           
291             	criaSelect(atributo.iGetNome(), atributo.iGetLabel(), atributo.iGetValorCodFk(getRegDemanda()), options, "", atributo.iGetDica(), bloqueado);
292             }
293         } catch (ECARException e) {
294         	Logger logger = Logger.getLogger(this.getClass());
295         	logger.error(e);
296         }
297     }
298 
299     /**
300      * Gera HTML de IndAtivoRegd.<br>
301      * 
302      * @author N/C
303 	 * @since N/C
304 	 * @version N/C
305      */
306     public void geraHTMLIndAtivoRegd() {
307         try {
308             List options = new ArrayList();
309             options.add(new String[] { "S", "Sim"});
310             options.add(new String[] { "N", "Não"});
311             
312             criaSelect(atributo.iGetNome(), atributo.iGetLabel(), atributo.iGetValor(getRegDemanda()), options, "", atributo.iGetDica(), getBloquearCampo());
313         } catch (ECARException e) {
314         	Logger logger = Logger.getLogger(this.getClass());
315         	logger.error(e);
316         }
317     }
318     
319     /**
320      * Gera html NumeroDocOrigemRegd.<br>
321      * 
322      * @author N/C
323 	 * @since N/C
324 	 * @version N/C
325      */
326     public void geraHTMLNumeroDocOrigemRegd() {
327         try {
328 
329             if(getBloquearCampo()){
330                 criaInputHidden(atributo.iGetNome(), atributo.iGetValor(getRegDemanda()));        	
331             	criaInputText(atributo.iGetNome()+"Disabled", atributo.iGetLabel(), 
332      	        		atributo.iGetTamanhoConteudoAtbdem().toString(), 
333 		        		atributo.iGetTamanhoConteudoAtbdem().toString(), 
334 		        		atributo.iGetValor(getRegDemanda()), atributo.iGetDica());                
335             } else {
336             	criaInputText(atributo.iGetNome(), atributo.iGetLabel(), 
337      	        		atributo.iGetTamanhoConteudoAtbdem().toString(), 
338 		        		atributo.iGetTamanhoConteudoAtbdem().toString(), 
339 		        		atributo.iGetValor(getRegDemanda()), atributo.iGetDica());            	
340             }
341         	        	
342         } catch (ECARException e) {
343         	Logger logger = Logger.getLogger(this.getClass());
344         	logger.error(e);
345         }
346     }
347 
348     /**
349      * Gera html regDemandaRegd.<br>
350      * 
351      * @author N/C
352 	 * @since N/C
353 	 * @version N/C
354      */
355     public void geraHTMLRegDemandaRegd() {
356         try {
357 			List listObjetosIgnorado = new ArrayList();
358 			if(regDemanda.getCodRegd() != null) {
359 				listObjetosIgnorado.add(regDemanda);
360 			}
361 
362 			request.getSession().removeAttribute("objetosIgnorados");
363 			request.getSession().setAttribute("objetosIgnorados", listObjetosIgnorado);
364 			
365         	criaInputHidden("regDemandaRegd",atributo.iGetValorCodFk(getRegDemanda()));
366         	criaPesquisaDemanda("demandaRelacionada", atributo.iGetLabel(), 
367      	        		atributo.iGetTamanhoConteudoAtbdem().toString(),atributo.iGetTamanhoConteudoAtbdem().toString(), 
368 		        		atributo.iGetValor(getRegDemanda()), atributo.iGetDica());
369         } catch (ECARException e) {
370         	Logger logger = Logger.getLogger(this.getClass());
371         	logger.error(e);
372         }
373     }
374 
375     /**
376      * Gera html NumeroDocOrigemRegd.<br>
377      * 
378      * @author N/C
379 	 * @since N/C
380 	 * @version N/C
381      */
382     public void geraHTMLNomeSolicitanteRegd() {
383         try {
384         	if(getBloquearCampo()){
385                 criaInputHidden(atributo.iGetNome(), atributo.iGetValor(getRegDemanda()));        	
386             	criaInputText(atributo.iGetNome()+"Disabled", atributo.iGetLabel(), 
387      	        		atributo.iGetTamanhoConteudoAtbdem().toString(), 
388 		        		atributo.iGetTamanhoConteudoAtbdem().toString(), 
389 		        		atributo.iGetValor(getRegDemanda()), atributo.iGetDica());                
390             } else {
391             	criaInputText(atributo.iGetNome(), atributo.iGetLabel(), 
392      	        		atributo.iGetTamanhoConteudoAtbdem().toString(), 
393 		        		atributo.iGetTamanhoConteudoAtbdem().toString(), 
394 		        		atributo.iGetValor(getRegDemanda()), atributo.iGetDica());            	
395             }        	
396         } catch (ECARException e) {
397         	Logger logger = Logger.getLogger(this.getClass());
398         	logger.error(e);
399         }
400     }
401     
402     /**
403      * Gera html de DataSolicitacaoRegd.<br>
404      * 
405      * @author N/C
406 	 * @since N/C
407 	 * @version N/C
408      */
409     public void geraHTMLDataSolicitacaoRegd() {
410         try {
411         	criaInputHidden("dataHoje", Pagina.trocaNullData(comum.util.Data.getDataAtual()));
412         	if(getBloquearCampo()){
413                 criaInputHidden(atributo.iGetNome(), atributo.iGetValor(getRegDemanda()));        	
414                 criaInputTextData(atributo.iGetNome()+"Disabled", atributo.iGetLabel(), atributo.iGetValor(getRegDemanda()), atributo.iGetDica());            	
415             } else {
416                 criaInputTextData(atributo.iGetNome(), atributo.iGetLabel(), atributo.iGetValor(getRegDemanda()), atributo.iGetDica());            	
417             }
418         } catch (ECARException e) {
419         	Logger logger = Logger.getLogger(this.getClass());
420         	logger.error(e);
421         }
422     }
423 
424     
425     /**
426      * Gera html de observacaoRegd.<br>
427      * 
428      * @author N/C
429 	 * @since N/C
430 	 * @version N/C
431      */
432     public void geraHTMLObservacaoRegd() {
433         try {
434         	if(getBloquearCampo()){
435                 criaInputHidden(atributo.iGetNome(), atributo.iGetValor(getRegDemanda()));        	
436             	if (atributo.iGetTamanhoConteudoAtbdem() > ObjetoDemanda.DEFAULT_TAMANHO_CAMPO_TEXT) {
437             		criaTextArea(atributo.iGetNome()+"Disabled", atributo.iGetLabel(), "4", "60", 
438             				atributo.iGetValor(getRegDemanda()), atributo.iGetDica());
439             	} else {
440                     criaInputText(atributo.iGetNome()+"Disabled", atributo.iGetLabel(), 
441                     		atributo.iGetTamanhoConteudoAtbdem().toString(), 
442                     		atributo.iGetTamanhoConteudoAtbdem().toString(), 
443                     		atributo.iGetValor(getRegDemanda()), atributo.iGetDica());
444             	}
445             } else {
446             	if (atributo.iGetTamanhoConteudoAtbdem() > ObjetoDemanda.DEFAULT_TAMANHO_CAMPO_TEXT) {
447             		criaTextArea(atributo.iGetNome(), atributo.iGetLabel(), "4", "60", 
448             				atributo.iGetValor(getRegDemanda()), atributo.iGetDica());
449             	} else {
450                     criaInputText(atributo.iGetNome(), atributo.iGetLabel(), 
451                     		atributo.iGetTamanhoConteudoAtbdem().toString(), 
452                     		atributo.iGetTamanhoConteudoAtbdem().toString(), 
453                     		atributo.iGetValor(getRegDemanda()), atributo.iGetDica());
454             	}
455             }        	        	
456         } catch (ECARException e) {
457         	Logger logger = Logger.getLogger(this.getClass());
458         	logger.error(e);
459         }
460     }
461 
462     /**
463      * Gera html de codRegd.<br>
464      * 
465      * @author N/C
466 	 * @since N/C
467 	 * @version N/C
468      */
469     public void geraHTMLCodRegd() {
470         try {
471         	if ("filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao)){
472         		criaInputText(atributo.iGetNome(), atributo.iGetLabel(),
473             			atributo.iGetTamanhoConteudoAtbdem().toString(),
474             			atributo.iGetTamanhoConteudoAtbdem().toString(), 
475             			atributo.iGetValor(getRegDemanda()), atributo.iGetDica());
476         	} else {
477 	        	if ("alterar".equals(acao) || "classificar".equals(acao)){
478 //	            	criaInputHidden(atributo.iGetNome(), atributo.iGetValor(getRegDemanda()));
479 	            	criaLabelText(atributo.iGetNome(), atributo.iGetLabel(),
480 	            			atributo.iGetTamanhoConteudoAtbdem().toString(),
481 	            			atributo.iGetTamanhoConteudoAtbdem().toString(), 
482 	            			atributo.iGetValor(getRegDemanda()), atributo.iGetDica());        		
483 	        	}
484         	}
485         } catch (ECARException e) {
486         	Logger logger = Logger.getLogger(this.getClass());
487         	logger.error(e);
488         }
489     }
490 
491     /**
492      * Gera html de usuarioUsuByCodUsuInclusaoRegd.<br>
493      * 
494      * @author N/C
495 	 * @since N/C
496 	 * @version N/C
497      */
498     public void geraHTMLUsuarioUsuByCodUsuInclusaoRegd() {
499         try {
500         	if ("filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao)){
501         		criaInputText(atributo.iGetNome(), atributo.iGetLabel(),
502             			atributo.iGetTamanhoConteudoAtbdem().toString(),
503             			atributo.iGetTamanhoConteudoAtbdem().toString(), 
504             			atributo.iGetValor(getRegDemanda()), atributo.iGetDica());
505         	} else {
506 	        	if (acao.equals("alterar") || acao.equals("classificar")) {
507 	            	criaLabelText(atributo.iGetNome(), atributo.iGetLabel(),
508 	            			atributo.iGetTamanhoConteudoAtbdem().toString(),
509 	            			atributo.iGetTamanhoConteudoAtbdem().toString(), 
510 	            			atributo.iGetValor(getRegDemanda()), atributo.iGetDica());        		
511 	        	}
512         	}
513         } catch (ECARException e) {
514         	Logger logger = Logger.getLogger(this.getClass());
515         	logger.error(e);
516         }
517     }
518 
519     /**
520      * Gera html de DataInclusaoRegd.<br>
521      * 
522      * @author N/C
523 	 * @since N/C
524 	 * @version N/C
525      */
526     public void geraHTMLDataInclusaoRegd() {
527         try {
528         	if ("filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao)){
529         		criaInputTextData(atributo.iGetNome(), atributo.iGetLabel(), atributo.iGetValor(getRegDemanda()), atributo.iGetDica());
530         	} else {
531 	        	if (acao.equals("alterar") || acao.equals("classificar")) {
532 	            	criaLabelText(atributo.iGetNome(), atributo.iGetLabel(),
533 	            			atributo.iGetTamanhoConteudoAtbdem().toString(),
534 	            			atributo.iGetTamanhoConteudoAtbdem().toString(), 
535 	            			atributo.iGetValor(getRegDemanda()), atributo.iGetDica());        		
536 	        	}
537         	}
538         } catch (ECARException e) {
539         	Logger logger = Logger.getLogger(this.getClass());
540         	logger.error(e);
541         }
542     }
543     
544     /**
545      * Gera html de DataSituacaoRegd.<br>
546      * 
547      * @author N/C
548 	 * @since N/C
549 	 * @version N/C
550      */
551     public void geraHTMLDataSituacaoRegd() {
552         try {
553         	if ("filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao)){
554         		criaInputTextData(atributo.iGetNome(), atributo.iGetLabel(), atributo.iGetValor(getRegDemanda()), atributo.iGetDica());
555         	} else {
556 	        	if (acao.equals("alterar") || acao.equals("classificar")) {
557 	            	criaLabelText(atributo.iGetNome(), atributo.iGetLabel(),
558 	            			atributo.iGetTamanhoConteudoAtbdem().toString(),
559 	            			atributo.iGetTamanhoConteudoAtbdem().toString(), 
560 	            			atributo.iGetValor(getRegDemanda()), atributo.iGetDica());        		
561 	        	}
562         	}
563         } catch (ECARException e) {
564         	Logger logger = Logger.getLogger(this.getClass());
565         	logger.error(e);
566         }
567     }
568 
569     /**
570      * Gera html de EntidadeDemandaEntds.<br>
571      * 
572      * @author N/C
573 	 * @since N/C
574 	 * @version N/C
575      */
576     public void geraHTMLEntidadeDemandaEntds() {
577         try {
578         	Set entidades = new HashSet();
579         	if (regDemanda.getEntidadeDemandaEntds() == null) {
580         		regDemanda.setEntidadeDemandaEntds(new HashSet());
581         	}
582         	entidades = regDemanda.getEntidadeDemandaEntds();
583         	//modificar depois para pegar o label do atributo.
584         	criaPesquisaEntidade(atributo.iGetNome() , atributo.iGetLabel(), entidades, atributo.iGetDica());
585 
586         } catch (Exception e) {
587         	Logger logger = Logger.getLogger(this.getClass());
588         	logger.error(e);
589         }
590     }
591     
592     /**
593      * Gera html de EntidadeOrgaoDemandaEntorgds.<br>
594      * 
595      * @author N/C
596 	 * @since N/C
597 	 * @version N/C
598      */
599     public void geraHTMLEntidadeOrgaoDemandaEntorgds() {
600         try {
601         	Set entidadeOrgaos = new HashSet();
602         	if (regDemanda.getEntidadeOrgaoDemandaEntorgds() == null) {
603         		regDemanda.setEntidadeOrgaoDemandaEntorgds(new HashSet());
604         	}
605         	entidadeOrgaos = regDemanda.getEntidadeOrgaoDemandaEntorgds();
606         	//modificar depois para pegar o label do atributo.
607         	criaPesquisaEntidadeOrgao(atributo.iGetNome() , atributo.iGetLabel(), entidadeOrgaos, atributo.iGetDica());
608 
609         } catch (Exception e) {
610         	Logger logger = Logger.getLogger(this.getClass());
611         	logger.error(e);
612         }
613     }
614 
615     /**
616      * Gera html de LocalDemandaLdems.<br>
617      * 
618      * @author N/C
619 	 * @since N/C
620 	 * @version N/C
621      */
622     public void geraHTMLLocalDemandaLdems() {
623         try {
624         	Set locais = new HashSet();
625         	if (regDemanda.getLocalDemandaLdems() == null) {
626         		regDemanda.setLocalDemandaLdems(new HashSet());
627         	}
628         	locais = regDemanda.getLocalDemandaLdems();        	
629         	criaPesquisaLocal(atributo.iGetNome(), atributo.iGetLabel(), locais, atributo.iGetDica());
630 
631         } catch (Exception e) {
632         	Logger logger = Logger.getLogger(this.getClass());
633         	logger.error(e);
634         }
635     }
636 
637     /**
638      * Cria uma linha no formulário com campo não editável para exibição de textos. <br>
639      * 
640      * @author n/c, rogerio
641      * @since 0.1, n/c
642      * @version 0.2, 22/03/2007
643      * @param String nome
644      * @param String label
645      * @param String size
646      * @param String maxlength
647      * @param String valor
648      * @param String dica
649      */
650     public void criaLabelText(String nome, String label, String size, String maxlength, String valor, String dica) {
651         JspWriter writer = this.page.getOut();
652         StringBuffer s = new StringBuffer();
653         try {
654         	s.append("<TR><TD class=\"label\">");
655             s.append(label);
656             s.append("</TD>")
657              .append("<TD>")
658              .append(valor );
659             
660             // Aplica a dica de uso da linha, caso ela exista no cadastro.
661             // Mantis #8688. Por Rogério (22/03/2007)
662             if( dica != null && !"".equals(dica) )
663             	s.append(Util.getTagDica(nome, this.getContextPath(), dica));
664             
665             s.append("</TD></TR>");
666             
667             writer.print(s.toString());
668         } catch (IOException e) {
669         	Logger logger = Logger.getLogger(this.getClass());
670         	logger.error(e);
671         }
672     }
673 
674     /**
675      * Cria linha no formulário com campo Text Area para entrada de longos textos.<br>
676      * 
677      * @author n/c, rogerio
678      * @since 0.1, n/c
679      * @version 0.3, 22/03/2007
680      * @param String nome
681      * @param String label
682      * @param String rows
683      * @param String cols
684      * @param String valor
685      * @param String dica
686      */
687     public void criaTextArea(String nome, String label, String rows, String cols, String valor, String dica) {
688         JspWriter writer = this.page.getOut();
689         StringBuffer s = new StringBuffer();
690         
691         try {
692         	s.append("<TR><TD class=\"label\">");
693         	boolean telaFiltro = "filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao) ? true:false;
694             if (!telaFiltro && atributo.iGetObrigatorio() != null && atributo.iGetObrigatorio().booleanValue() == true)
695                 s.append("* ");
696             
697             s.append(label)
698              .append("</TD>");
699              
700             s.append("<TD>")
701              .append("<div style=\"float: left;\">")
702              .append("<textarea name=\"")
703              .append(nome)
704              .append("\" rows=\"")
705              .append(rows)
706              .append("\" cols=\"")
707              .append(cols);
708             
709             String tam = "2000";
710             if(atributo.iGetTamanhoConteudoAtbdem() != null){
711             	tam = String.valueOf(atributo.iGetTamanhoConteudoAtbdem().intValue());
712             }
713             s.append("\" onkeyup=\"return validaTamanhoLimite(this, " + tam + ");\"");
714             if (getBloquearCampo()) {
715                 s.append(" style=\"background-color:#FFF;color:#999999;\" readonly=\"readonly\"");
716             }
717             s.append(">")
718              .append(valor)
719              .append("</textarea>")
720              .append("</div><div style=\"float: left;\"><br><br>");
721 
722             // Aplica a dica de uso da linha, caso ela exista no cadastro.
723             // Mantis #8688. Por Rogério (22/03/2007)
724             if( dica != null && !"".equals(dica) )
725             	s.append(Util.getTagDica(nome, this.getContextPath(), dica));
726             
727             s.append("</div>")
728              .append("</TD></TR>");
729             
730             writer.print(s.toString());
731         } catch (IOException e) {
732         	Logger logger = Logger.getLogger(this.getClass());
733         	logger.error(e);
734         }
735     }
736     
737     /**
738      * Cria uma linha na tabela contendo um campo texto com label.<br>
739      * 
740      * @author n/c, rogerio
741      * @since 0.1, n/c
742      * @version 0.2, 21/03/2007
743      * @param String nome - nome do campo
744      * @param String label - texto a ser colocado antes do campo no formulario
745      * @param String size - tamanho do campo
746      * @param String maxlength - maximo de caracteres no campo
747      * @param String valor - conteudo do campo
748      * @param String dica - dica para uso do campo
749 	 *
750      */
751     public void criaInputText(String nome, String label, String size, String maxlength, String valor, String dica) {
752         JspWriter writer = this.page.getOut();
753         StringBuffer s   = new StringBuffer();
754         
755         try {        	
756         	
757         	if(atributo.iGetTamanhoConteudoAtbdem() != null){
758         		maxlength = String.valueOf(atributo.iGetTamanhoConteudoAtbdem().intValue());
759         	}
760         	
761         	// inicia a linha
762         	s.append("<TR><TD class=\"label\">");
763         	
764         	boolean telaFiltro = "filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao) ? true:false;
765         	
766             if (!telaFiltro && atributo.iGetObrigatorio() != null && atributo.iGetObrigatorio().booleanValue() == true)
767                 s.append("* ");
768             
769             // adiciona o texto
770             s.append(label);
771             
772             s.append("</TD>")
773              .append("<TD nowrap>")
774              .append("<input type=\"text\" name=\"")
775              .append(nome)
776              .append("\" size=\"")
777              .append(size)
778              .append("\" value=\"")
779              .append(valor)
780              .append("\" maxlength=\"")
781              .append(maxlength)
782              .append("\"");
783             
784             if (getBloquearCampo())
785             	s.append(" disabled");
786             	            
787             s.append(">");
788 
789             // Aplica a dica de uso da linha, caso ela exista no cadastro.
790             // Mantis #8688. Por Rogério (21/03/2007)
791             if( dica != null && !"".equals(dica) )
792             	s.append(Util.getTagDica(nome, this.getContextPath(), dica));
793             
794             s.append("</TD></TR>");
795             writer.print(s.toString());
796         } catch (IOException e) {
797         	Logger logger = Logger.getLogger(this.getClass());
798         	logger.error(e);
799         }
800     }
801 
802     /**
803      * Cria uma linha no formulário com campo text para receber datas. <br>
804      * 
805      * @author n/c, 
806      * @since 0.1, n/c
807      * @version 0.2, 22/03/2007
808      * @param String nome
809      * @param String label
810      * @param String valor
811      * @param String dica
812      */
813     public void criaInputTextData(String nome, String label, String valor, String dica) {
814         JspWriter writer = this.page.getOut();
815         StringBuffer s = new StringBuffer();
816         try {            
817         	if ("filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao)){
818         		            
819 	       		s.append("<TR><TD class=\"label\">");          
820 	            s.append(label);
821 	            s.append("</TD>")
822 	             .append("<TD nowrap>")
823 	             .append("<input type=\"text\" name=\"")
824 	             .append(nome+"_Inicio")
825 	             .append("\" size=\"11\" value=\"")
826 	             .append(valor)
827 	             .append("\" maxlength=\"10\" onkeyup=\"mascaraData(event, this);\"");
828 	            if (getBloquearCampo())
829 	                s.append(" disabled");
830 	            
831 	            s.append(">");
832 	            
833 	            //Limite superior para tratar datas como intervalo
834 	            s.append("<!--/TD>");
835 	            s.append("<TD class=\"label\" colspan=\"3\"-->");
836 	            s.append(" a ");
837 	            s.append("<!--/TD>")
838 	            .append("<TD nowrap-->")
839 	            .append("<input type=\"text\" name=\"")
840 	            .append(nome+"_Fim")
841 	            .append("\" size=\"11\" value=\"")
842 	            .append(valor)
843 	            .append("\" maxlength=\"10\" onkeyup=\"mascaraData(event, this);\"");
844 	           if (getBloquearCampo())
845 	               s.append(" disabled");
846 	           
847 	           s.append(">");
848 	        // Aplica a dica de uso da linha, caso ela exista no cadastro.
849 	            // Mantis #8688. Por Rogério (22/03/2007)
850 	            if( dica != null && !"".equals(dica) )
851 	            	s.append(Util.getTagDica(nome, this.getContextPath(), dica));
852 	           s.append("</TD>");
853 	            	            
854 	            s.append("</TR>");
855     	    
856         	} else {
857         		
858         	
859 	       		s.append("<TR><TD class=\"label\">");          
860 	            if (atributo.iGetObrigatorio() != null && atributo.iGetObrigatorio().booleanValue() == true)
861 	                s.append("* ");
862 	            s.append(label);
863 	            s.append("</TD>")
864 	             .append("<TD nowrap>")
865 	             .append("<input type=\"text\" name=\"")
866 	             .append(nome)
867 	             .append("\" size=\"11\" value=\"")
868 	             .append(valor)
869 	             .append("\" maxlength=\"10\" onkeyup=\"mascaraData(event, this);\"");
870 	            if (getBloquearCampo())
871 	                s.append(" disabled");
872 	            
873 	            s.append(">");
874 	            
875 	            // Aplica a dica de uso da linha, caso ela exista no cadastro.
876 	            // Mantis #8688. Por Rogério (22/03/2007)
877 	            if( dica != null && !"".equals(dica) )
878 	            	s.append(Util.getTagDica(nome, this.getContextPath(), dica));
879 	            
880 	            s.append("</TD></TR>");
881         	}
882             writer.print(s.toString());
883         } catch (IOException e) {
884         	Logger logger = Logger.getLogger(this.getClass());
885         	logger.error(e);
886         }
887     }
888 
889     /**
890      * Cria uma linha no formulário com um campo SELECT. <br>
891      * 
892      * @author n/c, 
893      * @since 0.1, n/c
894      * @version 0.2, 22/03/2007
895      * @param String nome
896      * @param String label
897      * @param String valor
898      * @param Collection opcoes
899      * @param String scripts
900      * @param String dica
901      * @param Boolean bloqueado
902      */
903     public void criaSelect(String nome, String label, String valor, Collection opcoes, String scripts, String dica, Boolean bloqueado) {
904         
905     	JspWriter writer = this.page.getOut();
906         StringBuffer s = new StringBuffer();
907         
908         try {
909         	// Inicia a linha
910         	s.append("<TR><TD class=\"label\">");
911         	// Aplica a marca de campo obrigatório
912         	boolean telaFiltro = "filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao) ? true:false;
913             if (!telaFiltro && atributo.iGetObrigatorio() != null && atributo.iGetObrigatorio().booleanValue() == true)
914                 s.append("* ");            
915             // Aplica o label do campo
916             s.append(label);            
917             s.append("</TD>");
918             
919             s.append("<TD>");
920             s.append("<select name=\"").append(nome).append("\" ").append(scripts);          	
921             if(bloqueado)
922             	s.append(" disabled");
923             s.append(">");
924             
925             if (!nome.equals("sitDemandaSitd") || telaFiltro)
926             	s.append("<option value=\"\"></option>");
927             
928             if (opcoes != null) {
929                 Iterator it = opcoes.iterator();
930                 while (it.hasNext()) {
931                     String[] chaveValor = (String[]) it.next();
932                     s.append("<option value=\"").append(chaveValor[0]).append("\"");
933                     if (chaveValor[0].equals(valor))
934                         s.append(" selected ");
935                     s.append(">");
936                     s.append(chaveValor[1]);
937                     s.append("</option>");
938                 }
939             }
940             s.append("</select>");
941             s.append("");
942             // Aplica a dica de uso da linha, caso ela exista no cadastro.
943             // Mantis #8688. Por Rogério (22/03/2007)
944             if( dica != null && !"".equals(dica) )
945             	s.append(Util.getTagDica(nome, this.getContextPath(), dica));
946             
947             s.append("</TD></TR>");
948             
949             writer.print(s.toString());
950         } catch (IOException e) {
951         	Logger logger = Logger.getLogger(this.getClass());
952         	logger.error(e);
953         }
954     }
955 
956     /**
957      * Gera uma linha do formulário, contendo campo de pesquisa para Demanda. <br>
958      * 
959      * @author n/c, 
960      * @since 0.1, n/c
961      * @version 0.2, 
962      * @param String nome
963      * @param String label
964      * @param String size, String valor
965      * @param String maxlength
966      * @param String dica
967      */
968     public void criaPesquisaDemanda(String nome, String label, String size, String maxlength, String valor,String dica) {
969         JspWriter writer = this.page.getOut();
970         StringBuffer s = new StringBuffer();
971         
972         try {
973        		// Cria a linha
974         	s.append("<TR><TD class=\"label\">");
975 
976             // Aplica a marca de campo obrigatório
977         	boolean telaFiltro = "filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao) ? true:false;
978         	if (!telaFiltro && atributo.iGetObrigatorio() != null && atributo.iGetObrigatorio().booleanValue() == true)
979                 s.append("* "); 
980         	
981             // Aplica o label do campo
982         	s.append(label);
983             s.append("</TD>")
984              .append("<TD>")
985              .append("<input type=\"text\" disabled name=\"")
986              .append(nome)
987              .append("\" size=\"")
988              .append(size)
989              .append("\" value=\"")
990              .append(valor)
991              .append("\" maxlength=\"")
992              .append(maxlength)
993              .append("\"")
994              .append(">");
995             
996             // Adiciona o botão Pesquisar e Limpar
997             if (!getBloquearCampo()) {
998             	s.append("&nbsp;&nbsp;<input type=\"button\" name=\"buttonPesquisar\" value=\"Pesquisar\" class=\"botao\" ");            
999             	s.append(" onclick=\"pesquisar();\">")
1000             		.append("&nbsp;<input type=\"button\" name=\"buttonLimpar\" value=\"Limpar\" class=\"botao\" ")
1001             		.append("onclick=\"limpaCampos();\"");
1002             	s.append(">");
1003             }
1004             
1005 
1006             
1007             if( dica != null && !"".equals(dica) )
1008             	s.append(Util.getTagDica(nome, this.getContextPath(), dica));
1009             
1010             s.append("</TD></TR>");
1011             writer.print(s.toString());
1012             
1013         } catch (Exception e) {
1014         	Logger logger = Logger.getLogger(this.getClass());
1015         	logger.error(e);
1016         }
1017     }    
1018 
1019     /**
1020      * Gera uma linha do formulário, contendo os links de inclusão e exclusão para Entidade. <br>
1021      * 
1022      * @author n/c, 
1023      * @since 0.1, n/c
1024      * @version 0.2, 
1025      * @param String label
1026      * @param String entidades
1027      */
1028     public void criaPesquisaEntidade(String nome, String label, Set entidades, String dica) {
1029         JspWriter writer = this.page.getOut();
1030         StringBuffer s = new StringBuffer();
1031         
1032         try {
1033         	
1034         	int quantidade = 0;
1035         	if (entidades!=null){
1036         		quantidade = entidades.size();
1037         	}
1038 
1039         	
1040         	s.append("\n<input type=\"hidden\" id=\"contEntidade\" name=\"contEntidade\" value=\"" + quantidade +"\">");
1041         	s.append("\n<input type=\"hidden\" id=\"contadorEntidadeReal\" name=\"contadorEntidadeReal\" value=\"" + quantidade +"\">");
1042         	
1043         	// Cria a linha
1044         	s.append("<tr id=\"labelEntidade\">");
1045                     	
1046         	s.append("<td class=\"label\">");            
1047         	// Aplica a marca de campo obrigatório
1048         	boolean telaFiltro = "filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao) ? true:false;
1049         	if (!telaFiltro && atributo.iGetObrigatorio() != null && atributo.iGetObrigatorio().booleanValue() == true)
1050                 s.append("* ");        	
1051         	// Aplica o label do campo        	
1052         	s.append(label);
1053         	s.append("</td>");
1054         	s.append("<td>");
1055         	if(!this.getBloquearCampo()){
1056         		s.append("<a href=\"#\" onClick=\"popup_pesquisa('ecar.popup.PopUpEntidade', 'adicionaEntidade');\"> Adicionar </a>");
1057         		s.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
1058         		s.append("<a href=\"#\" onClick=\"removeEntidade()\"> Excluir </a>");
1059         	}
1060         	if( dica != null && !"".equals(dica) )
1061             	s.append(Util.getTagDica(nome, this.getContextPath(), dica));
1062         	s.append("</td>");
1063         	s.append("</tr>");
1064         	s.append("<tr><td>&nbsp;</td><td id=\"entidade\" colspan=\"2\"></td></tr>");
1065         	s.append("<tr><td class=\"label\" colspan=\"2\">");        	
1066         	s.append("</td></tr>");
1067 
1068         	//Cria o script que apresenta as entidades da demanda
1069         	Iterator itEnt = entidades.iterator();
1070         	EntidadeEnt entid = new EntidadeEnt();        	
1071         	s.append("\n<script>");
1072         	while (itEnt.hasNext())	{
1073         		entid = (EntidadeEnt) itEnt.next();
1074         		s.append("adicionaEntidade(\"" + entid.getCodEnt().toString().trim() + "\", \"" + entid.getNomeEnt().trim() + "\");\n");
1075         	}
1076         	s.append("</script>");        	        	
1077         	writer.print(s.toString());
1078         	
1079 	    } catch (Exception e) {
1080 		    	Logger logger = Logger.getLogger(this.getClass());
1081 		    	logger.error(e);
1082 		    }    	
1083     }
1084     
1085     
1086     /**
1087      * Gera uma linha do formulário, contendo os links de inclusão e exclusão para EntidadeOrgao. <br>
1088      * 
1089      * @author n/c, 
1090      * @since 0.1, n/c
1091      * @version 0.2, 
1092      * @param String label
1093      * @param String entidadeOrgaos
1094      */
1095     public void criaPesquisaEntidadeOrgao(String nome, String label, Set entidadeOrgaos, String dica) {
1096         JspWriter writer = this.page.getOut();
1097         StringBuffer s = new StringBuffer();
1098         
1099         try {
1100         	
1101         	int quantidade = 0;
1102         	if (entidadeOrgaos!=null){
1103         		quantidade = entidadeOrgaos.size();
1104         	}
1105 
1106         	s.append("\n<input type=\"hidden\" id=\"contEntidadeOrgao\" name=\"contEntidadeOrgao\" value=\"" + quantidade +"\">");
1107         	s.append("\n<input type=\"hidden\" id=\"contadorEntidadeOrgaoReal\" name=\"contadorEntidadeOrgaoReal\" value=\"" + quantidade + "\">");
1108         	
1109         	// Cria a linha
1110         	s.append("<tr id=\"labelEntidadeOrgao\">");
1111                     	
1112         	s.append("<td class=\"label\">");            
1113         	// Aplica a marca de campo obrigatório
1114         	boolean telaFiltro = "filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao) ? true:false;
1115         	if (!telaFiltro && atributo.iGetObrigatorio() != null && atributo.iGetObrigatorio().booleanValue() == true)
1116                 s.append("* ");        	
1117         	// Aplica o label do campo        	
1118         	s.append(label);
1119         	s.append("</td>");
1120         	s.append("<td>");
1121         	if(!this.getBloquearCampo()){
1122         		s.append("<a href=\"#\" onClick=\"popup_pesquisa('ecar.popup.PopUpEntidadeOrgao', 'adicionaEntidadeOrgao');\"> Adicionar </a>");
1123         		s.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
1124         		s.append("<a href=\"#\" onClick=\"removeEntidadeOrgao()\"> Excluir </a>");
1125         	}
1126         	if( dica != null && !"".equals(dica) )
1127             	s.append(Util.getTagDica(nome, this.getContextPath(), dica));
1128         	s.append("</td>");
1129         	s.append("</tr>");
1130         	s.append("<tr><td>&nbsp;</td><td id=\"entidadeOrgao\" colspan=\"2\"></td></tr>");
1131         	s.append("<tr><td class=\"label\" colspan=\"2\">");        	
1132         	s.append("</td></tr>");
1133 
1134         	//Cria o script que apresenta as entidades da demanda
1135         	Iterator itEnt = entidadeOrgaos.iterator();
1136         	EntidadeEnt entid = new EntidadeEnt();        	
1137         	s.append("\n<script>");
1138         	while (itEnt.hasNext())	{
1139         		entid = (EntidadeEnt) itEnt.next();
1140         		s.append("adicionaEntidadeOrgao(\"" + entid.getCodEnt().toString().trim() + "\", \"" + entid.getNomeEnt().trim() + "\");\n");
1141         	}
1142         	s.append("</script>");        	        	
1143         	writer.print(s.toString());
1144         	
1145 	    } catch (Exception e) {
1146 		    	Logger logger = Logger.getLogger(this.getClass());
1147 		    	logger.error(e);
1148 		    }    	
1149     }
1150 
1151     /**
1152      * Gera uma linha do formulário, contendo os links de inclusão e exclusão para Local. <br>
1153      * formRegDemanda 
1154      * @author n/c, 
1155      * @since 0.1, n/c
1156      * @version 0.2, 
1157      * @param String label
1158      * @param String entidades
1159      */
1160     public void criaPesquisaLocal(String nome, String label, Set locais, String dica) {
1161         JspWriter writer = this.page.getOut();
1162         StringBuffer s = new StringBuffer();
1163         
1164         try {
1165         	
1166         	int quantidade = 0;
1167         	if (locais!=null){
1168         		quantidade = locais.size();
1169         	}
1170 
1171         	
1172         	s.append("\n<input type=\"hidden\" id=\"contLocal\" name=\"contLocal\" value=\"" + quantidade +"\">");
1173         	s.append("\n<input type=\"hidden\" id=\"contadorLocalReal\" name=\"contadorLocalReal\" value=\"" + quantidade +"\">");
1174 
1175         	// Cria a linha
1176         	s.append("<tr id=\"labelLocais\">");
1177                     	
1178         	s.append("<td class=\"label\">");
1179         	// Aplica a marca de campo obrigatório
1180         	boolean telaFiltro = "filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao) ? true:false;
1181         	if (!telaFiltro && atributo.iGetObrigatorio() != null && atributo.iGetObrigatorio().booleanValue() == true)
1182                 s.append("* ");        	
1183             // Aplica o label do campo
1184         	s.append(label);
1185         	s.append("</td>");
1186         	s.append("<td>");
1187         	if(!this.getBloquearCampo()){
1188         		s.append("<a href=\"#\" onClick=\"abreJanela('popUpLocal.jsp','500', '300', 'LocalItem')\"> Adicionar </a>");
1189         		s.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
1190         		s.append("<a href=\"#\" onClick=\"removeLocal()\"> Excluir </a>");
1191         	}
1192         	if( dica != null && !"".equals(dica) )
1193             	s.append(Util.getTagDica(nome, this.getContextPath(), dica));
1194         	s.append("</td>");
1195         	s.append("</tr>");
1196         	s.append("<tr><td>&nbsp;</td><td id=\"local\" colspan=\"2\">");        	
1197         	s.append("</td></tr>");
1198 
1199         	//Cria o script que apresenta os locais da demanda
1200         	Iterator itLoc = locais.iterator();
1201         	LocalItemLit loc = new LocalItemLit();
1202         	
1203         	
1204         	s.append("\n<script>");
1205         	while (itLoc.hasNext())	{
1206         		loc = (LocalItemLit) itLoc.next(); 
1207         		
1208         		// verifica se o local tem um pai
1209         		if(loc.getLocalItemHierarquiaLithsByCodLit() != null && !loc.getLocalItemHierarquiaLithsByCodLit().isEmpty()) {
1210 		
1211 					// se tiver imprime na tela o nome do registro com o nome do pai -> diferenciar cidades que sejam de regiões diferentes -> aplica-se para todos os registros
1212 					Iterator itListaLocalPai = loc.getLocalItemHierarquiaLithsByCodLit().iterator();
1213 					LocalItemLit pai = null;
1214 				
1215 					if(itListaLocalPai.hasNext()) {
1216 						pai = (LocalItemLit) itListaLocalPai.next();
1217 						s.append("adicionaLocal(\"" + loc.getCodLit().toString().trim() + "\", \"" + loc.getIdentificacaoLit().trim() + " - " + pai.getIdentificacaoLit().trim() + "\");\n");	
1218 					} else 
1219 						s.append("adicionaLocal(\"" + loc.getCodLit().toString().trim() + "\", \"" + loc.getIdentificacaoLit().trim() + "\");\n");
1220 		
1221         		} else {	
1222         		
1223         			s.append("adicionaLocal(\"" + loc.getCodLit().toString().trim() + "\", \"" + loc.getIdentificacaoLit().trim() + "\");\n");
1224         		}
1225         		
1226         	}
1227         	s.append("</script>");       	
1228             writer.print(s.toString());
1229         
1230         	        	        	
1231 	    } catch (Exception e) {
1232 		    	Logger logger = Logger.getLogger(this.getClass());
1233 		    	logger.error(e); 
1234 		    }    	
1235     }
1236 
1237     /**
1238 	 * Verifica se a interface deve apresentar o campo bloqueado ou desbloqueado.
1239 	 * True caso deva bloquear o campo e false caso deva desbloquear
1240 	 * 
1241 	 * @return
1242 	 */
1243 	public Boolean getBloquearCampo() {
1244 		// Primeiro verifica se a interface é de consulta. neste caso, deve aparecer bloqueado.
1245 		if (getDesabilitar() != null && getDesabilitar()) {
1246 			return true;
1247 		}
1248 		// Por default, o campo pode ser editado.
1249 		return false;
1250 	}
1251 	
1252     /**
1253      * Cria campo do tipo hidden no formulário. <br>
1254      * 
1255      * @author n/c
1256      * @since 0.1, n/c
1257      * @version 0.1, n/c
1258      * @param String nome
1259      * @param String valor
1260      */
1261     public void criaInputHidden(String nome,String valor) {
1262         JspWriter writer = this.page.getOut();
1263         StringBuffer s = new StringBuffer();
1264         try {            
1265             s.append("<input type=\"hidden\" name=\"").append(nome).append("\" value=\"").append(valor).append("\">");
1266             writer.print(s.toString());
1267         } catch (IOException e) {
1268         	Logger logger = Logger.getLogger(this.getClass());
1269         	logger.error(e);
1270         }
1271     }
1272 
1273 	public String getAcao() {
1274 		return acao;
1275 	}
1276 
1277     /**
1278      * Gera Atributo Livre
1279      * 
1280      * @author 
1281      * @since 
1282      * @version 
1283      * @throws ECARException
1284      */
1285     public void geraHTMLAtributoLivre() throws ECARException, JspException{
1286     	boolean telaFiltro = "filtrarClassificar".equals(acao) || "filtrarCadastro".equals(acao) ? true:false;
1287     	if(atributo.iGetGrupoAtributosLivres() != null 
1288     			&& (atributo.iGetGrupoAtributosLivres().getIndAtivoSga()!=null 
1289     			&&  atributo.iGetGrupoAtributosLivres().getIndAtivoSga().equals("S")) ){
1290     		if (atributo.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().intValue() != Input.IMAGEM || !telaFiltro){    			
1291 	        	JspWriter writer = this.page.getOut();
1292 	
1293 	        	SisGrupoAtributoSga grupoAtributo = atributo.iGetGrupoAtributosLivres(); 
1294 	            	
1295 	        	Input input = new Input(writer);
1296 	        	input.setLabel(atributo.iGetLabel());
1297 	        	input.setTipo(grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().intValue());
1298 	        	input.setObrigatorio(!telaFiltro && atributo.iGetObrigatorio().booleanValue() ? "S" : "N"); //Obrigatoriedade está no atributo
1299 	        	
1300 	        	input.setPathRaiz(this.getContextPath());
1301 	        	input.setLabelObrigatorio("*");
1302 	        	input.setSize(atributo.iGetTamanhoConteudoAtbdem().toString());
1303 	        	if (telaFiltro){
1304 	        		input.setTelaFiltro(new Boolean(true));
1305 	        	} else {
1306 	        		input.setTelaFiltro(new Boolean(false));
1307 	        	}
1308 	        	
1309 	        	
1310 	        	if (getBloquearCampo()) {
1311 	        		input.setDisabled("S");
1312 	        	}
1313 	        	input.setNome("a" + grupoAtributo.getCodSga().toString());
1314 	        	input.setClassLabel("label");
1315 	        	input.setContexto(this.getContextPath());
1316 	        	
1317 	        	List aributosLivresSelecionados = new ArrayList();
1318 	        	
1319 	        	if(regDemanda.getDemAtributoDemas() != null){
1320 	    	    	Iterator itAtribLivres = regDemanda.getDemAtributoDemas().iterator();
1321 	    	    	while(itAtribLivres.hasNext()){
1322 	    	    		DemAtributoDema atributo = (DemAtributoDema) itAtribLivres.next();
1323 	    	    		AtributoLivre atributoLivre = new AtributoLivre();
1324 	    	    		atributoLivre.setInformacao(atributo.getInformacao());
1325 	    	    		atributoLivre.setSisAtributoSatb(atributo.getSisAtributoSatb());
1326 	    	    		aributosLivresSelecionados.add(atributoLivre);
1327 	    	    	}
1328 	        	}
1329 	        	
1330 	        	input.setSelecionados(aributosLivresSelecionados);
1331 	        	input.setSisAtributo((SisAtributoSatb)grupoAtributo.getSisAtributoSatbs().iterator().next());
1332 	        	if(atributo.iGetDica() != null)
1333 	        		input.setDica(atributo.iGetDica());
1334 	        	
1335 	        	input.doStartTag();
1336 	        	
1337 	        	Options options = new Options(writer);
1338 	        	
1339 	    		List opcoes = new ArrayList();
1340 	    		String selectedCodSapadrao = "";
1341 	    		if(grupoAtributo.getCodSga() != null && grupoAtributo.getCodSga().longValue() != 1){
1342 	    			if(grupoAtributo.getSisTipoOrdenacaoSto() != null){
1343 	    				opcoes = new SisGrupoAtributoDao(null).getAtributosOrdenados(grupoAtributo);
1344 	    				if (!opcoes.isEmpty()){
1345 	    					Iterator itOpcoes = opcoes.iterator();
1346 	    					while (itOpcoes.hasNext()){
1347 	    						if (((SisAtributoSatb) itOpcoes.next()).getIndAtivoSatb().equals("N")){
1348 	    							itOpcoes.remove();
1349 	    						}
1350 	    					}
1351 	    				}
1352 	    			}
1353 	    		} 
1354 	    		
1355 	        	
1356 	    		if(!opcoes.isEmpty()) {
1357 	    	    	options.setOptions(opcoes);
1358 	    	    	options.setValor("codSatb");
1359 	    	    	options.setLabel("descricaoSatb");
1360 	    	    	options.setDica(atributo.iGetDica());
1361 	    	    	options.setNome("a" + grupoAtributo.getCodSga().toString());
1362 	    	    	options.setContexto(this.getContextPath());
1363 	    	    	//options.setImagem(getContextPath() + "/images/relAcomp/");
1364 	    	    	options.setParent(input);	    	    	
1365 	    	    	options.doStartTag();
1366 	    		}
1367 	    		
1368 	    		input.doEndTag();
1369     		}
1370     	}
1371     }
1372     
1373     /**
1374      * Cria input para separar datas/valores
1375      * 
1376      * @author 
1377      * @since 
1378      * @version 
1379      * @throws ECARException
1380      */
1381     public void criaInputSeparadorDatasValores(){
1382         JspWriter writer = this.page.getOut();
1383         StringBuffer s = new StringBuffer();
1384         try {            
1385             s.append(" a ");
1386             writer.print(s.toString());
1387         } catch (IOException e) {
1388         	Logger logger = Logger.getLogger(this.getClass());
1389         	logger.error(e);
1390         }
1391     }
1392 
1393 	public void setAcao(String acao) {
1394 		this.acao = acao;
1395 	}
1396 
1397 	public HttpServletRequest getRequest() {
1398 		return request;
1399 	}
1400 
1401 	public void setRequest(HttpServletRequest request) {
1402 		this.request = request;
1403 	}	
1404 }