View Javadoc

1   /*
2    * Criado em 16/02/2005
3    */ 
4   package ecar.taglib.util;
5   
6   import java.util.ArrayList;
7   import java.util.Collection;
8   import java.util.Collections;
9   import java.util.Iterator;
10  import java.util.List;
11  
12  import javax.servlet.http.HttpServletRequest;
13  import javax.servlet.jsp.JspException;
14  import javax.servlet.jsp.JspWriter;
15  import javax.servlet.jsp.tagext.Tag;
16  import javax.servlet.jsp.tagext.TagSupport;
17  
18  import comum.util.Data;
19  import comum.util.ImagemAcompanhamento;
20  import comum.util.Util;
21  
22  import ecar.dao.AbaDao;
23  import ecar.dao.AcompReferenciaItemDao;
24  import ecar.dao.ItemEstUsutpfuacDao;
25  import ecar.dao.PontoCriticoDao;
26  import ecar.dao.UsuarioDao;
27  import ecar.exception.ECARException;
28  import ecar.pojo.Aba;
29  import ecar.pojo.AcompReferenciaItemAri;
30  import ecar.pojo.AcompRelatorioArel;
31  import ecar.pojo.ItemEstUsutpfuacIettutfa;
32  import ecar.pojo.SisAtributoSatb;
33  import ecar.pojo.TipoAcompFuncAcompTafc;
34  import ecar.pojo.TipoFuncAcompTpfa;
35  import ecar.pojo.UsuarioUsu;
36  import ecar.util.Dominios;
37  
38  /** 
39   * @author felipev
40   *
41   */
42  public class BarraLinksRegAcompParecerTag extends TagSupport{
43      
44      /**
45  	 * 
46  	 */
47  	private static final long serialVersionUID = -6728974818698770839L;
48  
49  	private AcompReferenciaItemAri acompReferenciaItem;
50      private UsuarioUsu usuario;
51      private String selectedFuncao;
52      private AcompReferenciaItemAri acompReferenciaItemSubNivel;
53      private String primeiroAcomp;
54      private HttpServletRequest request;
55      
56      private String srcImg;
57      private boolean liberado = false;
58      private static final String PATH_ACOMP = "/regAcompanhamento/elabAcompanhamento/";
59  
60  
61  	/**
62       * Inicializa a montagem da tag para ser adicionada na tela de HTML.<br>
63       * 
64       * @author N/C
65  	 * @since N/C
66  	 * @version N/C
67  	 * @return int
68  	 * @throws JspException
69       */
70  	@Override
71  	public int doStartTag() throws JspException {
72  
73          JspWriter writer = this.pageContext.getOut();
74          try {
75          	StringBuffer s = new StringBuffer();
76          	srcImg = "";
77          	s.append("<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" id=\"abas\"><tr><td>");
78  			
79  			/* Aba de relação dos Itens, é fixa não está no banco */
80          	String situacaoAba = "abadesabilitada";
81              
82              String linkPrimeiro = "";
83              if(!"".equals(primeiroAcomp))
84              	linkPrimeiro = "primeiroAcomp=" + primeiroAcomp + "&";
85              
86              String link = "";
87              ItemEstUsutpfuacDao itemEstUsutpfuacDao = new ItemEstUsutpfuacDao(request);
88              List usuariosPermitidos = itemEstUsutpfuacDao.getUsuariosAcompanhamento(acompReferenciaItem.getItemEstruturaIett());
89              
90              /* Abas de Pareceres */
91              
92              List funcoesAcompanhamento = new AcompReferenciaItemDao(null).getTipoFuncAcompByAcompRefrenciaItem(acompReferenciaItem);
93              Iterator it = funcoesAcompanhamento.iterator();
94              
95              List listTipoAcompFuncAcomp = new ArrayList(getAcompReferenciaItem().getAcompReferenciaAref().getTipoAcompanhamentoTa().getTipoAcompFuncAcompTafcs());
96  
97              while(it.hasNext()){                
98                  TipoFuncAcompTpfa tipoFuncaoAcomp = (TipoFuncAcompTpfa) it.next();
99  
100 				/*
101 				 * Nova regra (mantis 11289):
102 				 * Ao exibir as abas de tipos de funções de acompanhamento:
103 				 * Para registro de posição OBRIGATÓRIO continua com está atualmente.
104 				 * Para tipo de função de acompanhamento que seja OPCIONAL o registro de posição no tipo de 
105 				 * acompanhamento selecionado (TipoAcompFuncAcompTafc.indRegistroPosicaoTafc), 
106 				 * somente apresentar a aba para o usuário que possuir permissão 
107 				 * ou que o acompanhamento esteja liberado.
108 				 */
109                 
110                 /*
111                  * Se o ari não tiver arel informado, não exibe a aba.
112                  * Se tiver, e o arel estiver liberado, exibe a aba.
113                  * Se tiver ari e arel não liberado, exibir a aba só se o usuario logado = usuario da tpfa do tafc.
114                  */
115                 
116                 if(getAcompReferenciaItem() != null && getAcompReferenciaItem().getAcompRelatorioArels() != null && !getAcompReferenciaItem().getAcompRelatorioArels().isEmpty()){
117                 
118                 	//Descobrindo o Arel da Funcao
119                 	AcompRelatorioArel arel = null;
120                 	for(Iterator itArel = getAcompReferenciaItem().getAcompRelatorioArels().iterator(); itArel.hasNext();){
121                 		AcompRelatorioArel auxArel = (AcompRelatorioArel) itArel.next();
122                 		if(auxArel.getTipoFuncAcompTpfa().equals(tipoFuncaoAcomp)){
123                 			arel = auxArel;
124                 			break;
125                 		}
126                 	}
127                 	
128                 	if(arel == null){
129                 		continue;
130                 	}
131                 	
132                 	//Descobrindo o Tafc da Funcao
133 	                TipoAcompFuncAcompTafc tafc = null;
134 					for(Iterator itTafc = listTipoAcompFuncAcomp.iterator(); itTafc.hasNext();){
135 						TipoAcompFuncAcompTafc tafcTemp = (TipoAcompFuncAcompTafc) itTafc.next();
136 						if(tafcTemp.getTipoFuncAcompTpfa().equals(tipoFuncaoAcomp)){
137 							tafc = tafcTemp;
138 							break;
139 						}
140 					}
141 					
142 					//Se estiver liberado, não entra no if e apresenta a aba
143 					if(!Dominios.SIM.equals(arel.getIndLiberadoArel())){
144 						//Se não estiver liberado...
145 						if(tafc == null){
146 							continue;
147 						}
148 						else {
149 							//Se for obrigatorio, fica como esta...(pula o if..)
150 							
151 							//Se for opcional...
152 							if(Dominios.OPCIONAL.equals(tafc.getIndRegistroPosicaoTafc())){
153 								//Verificar usuario != usuario do arel --> continue;
154 								if(usuario != null && !usuariosPermitidos.contains(usuario)){
155 									continue;
156 								}
157 							}
158 						}
159 					}
160 	                
161 	                String funcaoParecer = "ACOMP" + tipoFuncaoAcomp.getCodTpfa();
162 	                
163 	                situacaoAba = "abadesabilitada";
164 	                if(funcaoParecer.equals(selectedFuncao))                    
165 	                	situacaoAba = "abahabilitada";
166 	                
167 	                link = request.getContextPath() + PATH_ACOMP + "acompRelatorio.jsp?"+ linkPrimeiro+"funcao=SITUACAO"+ "&funcaoParecer=" + funcaoParecer + "&codTpfa=" + tipoFuncaoAcomp.getCodTpfa() + "&";
168 	                
169 	                // monta as informaçoes complementares como Dica
170 	                String titulo = "<br>";
171 					UsuarioUsu usu = null;
172 					SisAtributoSatb sisAtributoSatb = null;
173 					UsuarioDao usuDao = new UsuarioDao(null);
174 
175 				
176 					if(arel != null) {						
177 
178 						usu = arel.getUsuarioUsuUltimaManutencao();
179 						
180 						if(usu == null){
181 							List funcoes = new ItemEstUsutpfuacDao(null).getFuacOrderByFuncAcomp(acompReferenciaItem.getItemEstruturaIett());
182 							for (Iterator itUsu = funcoes.iterator(); itUsu.hasNext();) {
183 								ItemEstUsutpfuacIettutfa fuac = (ItemEstUsutpfuacIettutfa) itUsu.next();
184 								
185 								if(fuac.getTipoFuncAcompTpfa().equals(tipoFuncaoAcomp)){
186 									if (fuac.getUsuarioUsu() != null){
187 										usu = fuac.getUsuarioUsu();
188 									} else if (fuac.getSisAtributoSatb() != null){
189 										sisAtributoSatb = fuac.getSisAtributoSatb();
190 									}
191 								}
192 							}
193 						}
194 						 
195 						liberado = false;
196 						srcImg = "";
197 						if(arel.getDataUltManutArel() == null){
198 							titulo += "Aguarda elaboração do parecer <br> ";
199 						} else if(arel.getIndLiberadoArel() == null || "N".equals(arel.getIndLiberadoArel())) { 
200 							titulo += "Aguarda liberação do parecer  <br> ";
201 						} else if(arel.getIndLiberadoArel() != null || "S".equals(arel.getIndLiberadoArel())){
202 							titulo += "Parecer liberado <br>Atualização: "	+ Data.parseDate(arel.getDataUltManutArel()) + "<br>";
203 							liberado = true;
204 							srcImg = Util.getURLImagemAcompanhamento(arel.getCor(), request, arel.getTipoFuncAcompTpfa());
205 						}
206 												
207 						
208 						if(usu != null){
209 							
210 							//nome
211 							if(usu.getNomeUsu() != null && !"".equals(usu.getNomeUsu()))
212 								titulo += "Resp: " + usu.getNomeUsuSent() + "<br>";
213 							
214 							//telefone
215 							String telefone = "";
216 					        if(usu.getComercDddUsu() != null && !"".equals(usu.getComercDddUsu()))
217 					        	telefone += usu.getComercDddUsu();
218 					        
219 					        if(usu.getComercTelefoneUsu() != null && !"".equals(usu.getComercTelefoneUsu())){
220 					        	if(!"".equals(telefone))
221 					        		telefone += " ";
222 					        	
223 					        	telefone += usu.getComercTelefoneUsu();
224 					        }
225 					        titulo += "Tel: " + telefone + "<br>";
226 					        
227 					        if (usuDao.getCelularByUsuario(usu) != null && !"".equals(usuDao.getCelularByUsuario(usu)))						       
228 						        titulo += "Cel: " + usuDao.getCelularByUsuario(usu) + "<br>";
229 					        
230 					        
231 					        if(!"".equals(titulo))
232 								titulo += " <br> ";
233 							
234 					        //e-mail
235 							titulo += usu.getEmail1UsuSent();
236 						} else if (sisAtributoSatb != null){
237 							titulo += "Resp: " + sisAtributoSatb.getDescricaoSatb() + "<br>";
238 						}
239 					
240 					}
241 					else {
242 						List funcoes = new ItemEstUsutpfuacDao(null).getFuacOrderByFuncAcomp(acompReferenciaItem.getItemEstruturaIett());
243 						for (Iterator itUsu = funcoes.iterator(); itUsu.hasNext();) {
244 							ItemEstUsutpfuacIettutfa fuac = (ItemEstUsutpfuacIettutfa) itUsu.next();
245 							
246 							if(fuac.getTipoFuncAcompTpfa().equals(tipoFuncaoAcomp)){
247 								if (fuac.getUsuarioUsu() != null){
248 									usu = fuac.getUsuarioUsu();
249 								} else if (fuac.getSisAtributoSatb() != null){
250 									sisAtributoSatb = fuac.getSisAtributoSatb(); 
251 								}
252 								
253 							}
254 						}
255 						if (usu != null){
256 							titulo += usu.getNomeUsuSent() + "Aguarda elaboração do parecer <br>";
257 						} else if (sisAtributoSatb != null){
258 							titulo += sisAtributoSatb.getDescricaoSatb() + "Aguarda elaboração do parecer <br>";
259 						}
260 						
261 					}
262 					
263 	                criaAbaFuncaoAcomp(situacaoAba, link, tipoFuncaoAcomp.getLabelPosicaoTpfa(), s, titulo, usu, sisAtributoSatb);
264                 }
265             }
266             /* **** FIM - Abas de Pareceres */ 
267             
268                         
269             s.append("</td></tr></table>");
270             writer.print(s.toString());
271         } catch (Exception e) {
272         	e.printStackTrace();
273         }
274         return Tag.SKIP_BODY;
275 
276     }
277 	
278 
279 	/**
280 	 * Cria Aba com .<br>
281 	 * 
282 	 * @author N/C
283 	 * @since N/C
284 	 * @version N/C
285 	 * @param String situacaoAba
286 	 * @param String link
287 	 * @param String label
288 	 * @param StringBuffer s
289 	 * @throws ECARException
290 	 */
291 	private void criaAbaFuncaoAcomp(String situacaoAba, String link, String label, StringBuffer s, String titulo, UsuarioUsu usu, SisAtributoSatb sisAtributoSatb) throws ECARException{
292 		link += "codAri=" + acompReferenciaItem.getCodAri() + "&codAcomp=" + acompReferenciaItem.getAcompReferenciaAref().getCodAref();
293 		
294 		s.append("<table class=\"").append(situacaoAba).append("\"><tr><td nowrap>");
295 		UsuarioDao usuDAO = new UsuarioDao();
296 		if(liberado || (usu != null && usu.getCodUsu().equals(usuario.getCodUsu()))) {
297 	        s.append("<a href=\"").append(link).append("\">");
298 	        s.append(label);
299 	        s.append("</a>");
300 		} else if (sisAtributoSatb != null && usuDAO.getUsuariosBySisAtributoSatb(sisAtributoSatb).contains(usuario)){
301 			s.append("<a href=\"").append(link).append("\">");
302 	        s.append(label);
303 	        s.append("</a>");
304 		} else {
305 			s.append(label);
306 		}		
307 		
308         if ( !liberado && (srcImg == null || "".equals(srcImg.trim()))) //como estava anteriormente
309         	s.append(Util.getTagDica(label, request.getContextPath() , titulo));
310         else 
311         	s.append(Util.getTagDicaComImagemParecer(label, request.getContextPath(), srcImg, titulo));
312         s.append("</td></tr></table>");
313     }
314 
315 	/**
316 	 * Encerra Tag.<br>
317 	 * 
318 	 * @author N/C
319 	 * @since N/C
320 	 * @version N/C
321 	 * @return int
322 	 * @throws JspException
323 	 */
324     @Override
325 	public int doEndTag() throws JspException {
326         /* processa o restante da página jsp */
327         return Tag.EVAL_PAGE;
328     }
329 
330     /**
331      * Retorna AcompReferenciaItemAri acompReferenciaItem.<br>
332      * 
333      * @author N/C
334 	 * @since N/C
335 	 * @version N/C
336      * @return AcompReferenciaItemAri - (Returns the acompReferenciaItem)
337      */
338     public AcompReferenciaItemAri getAcompReferenciaItem() {
339         return acompReferenciaItem;
340     }
341     /**
342      * Atribui valor especificado para AcompReferenciaItemAri acompReferenciaItem.<br>
343      * 
344      * @author N/C
345 	 * @since N/C
346 	 * @version N/C
347      * @param AcompReferenciaItemAri acompReferenciaItem - (The acompReferenciaItem to set)
348      */
349     public void setAcompReferenciaItem(AcompReferenciaItemAri acompReferenciaItem) {
350         this.acompReferenciaItem = acompReferenciaItem;
351     }
352     
353     /**
354      * Retorna valor especificado para String selectedFuncao.<br>
355      * 
356      * @author N/C
357 	 * @since N/C
358 	 * @version N/C
359      * @return String - (Returns the selectedFuncao)
360      */
361     public String getSelectedFuncao() {
362         return selectedFuncao;
363     }
364     /**
365      * Atribui valor especificado para String selectedFuncao.<br>
366      * 
367      * @author N/C
368 	 * @since N/C
369 	 * @version N/C
370      * @param String selectedFuncao - (The selectedFuncao to set)
371      */
372     public void setSelectedFuncao(String selectedFuncao) {
373         this.selectedFuncao = selectedFuncao;
374     }
375     
376     /**
377      * Retorna UsuarioUsu usuario.<br>
378      * 
379      * @author N/C
380 	 * @since N/C
381 	 * @version N/C
382      * @return UsuarioUsu - (Returns the usuario)
383      */
384     public UsuarioUsu getUsuario() {
385         return usuario;
386     }
387     
388     /**
389      * Atribui valor especificado para UsuarioUsu usuario.<br>
390      * 
391      * @author N/C
392 	 * @since N/C
393 	 * @version N/C
394      * @param UsuarioUsu usuario - (The usuario to set)
395      */
396     public void setUsuario(UsuarioUsu usuario) {
397         this.usuario = usuario;
398     }
399 
400     /**
401      * Retorna AcompReferenciaItemAri acompReferenciaItemSubNivel.<br>
402      * 
403      * @author N/C
404 	 * @since N/C
405 	 * @version N/C
406      * @return AcompReferenciaItemAri
407      */
408 	public AcompReferenciaItemAri getAcompReferenciaItemSubNivel() {
409 		return acompReferenciaItemSubNivel;
410 	}
411 
412 	/**
413 	 * Atribui valor especificado para AcompReferenciaItemAri acompReferenciaItemSubNivel.<br>
414 	 * 
415 	 * @author N/C
416 	 * @since N/C
417 	 * @version N/C
418 	 * @param AcompReferenciaItemAri acompReferenciaItemSubNivel
419 	 */
420 	public void setAcompReferenciaItemSubNivel(AcompReferenciaItemAri acompReferenciaItemSubNivel) {
421 		this.acompReferenciaItemSubNivel = acompReferenciaItemSubNivel;
422 	}
423 
424 	/**
425 	 * Retorna String primeiroAcomp.<br>
426 	 * 
427 	 * @author N/C
428 	 * @since N/C
429 	 * @version N/C
430 	 * @return String
431 	 */
432 	public String getPrimeiroAcomp() {
433 		return primeiroAcomp;
434 	}
435 
436 	/**
437 	 * Atribui valor especificado para String primeiroAcomp.<br>
438 	 * 
439 	 * @author N/C
440 	 * @since N/C
441 	 * @version N/C
442 	 * @param String primeiroAcomp
443 	 */
444 	public void setPrimeiroAcomp(String primeiroAcomp) {
445 		this.primeiroAcomp = primeiroAcomp;
446 	}
447 	
448     /**
449      * @return HttpServletRequest
450      */
451     public HttpServletRequest getRequest() {
452 		return request;
453 	}
454 
455     /**
456      * @param request 
457      */
458     public void setRequest(HttpServletRequest request) {
459 		this.request = request;
460 	}
461 }