package br.gov.mc.cadsei.util;
import java.util.Map;
import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;
import javax.faces.application.ViewHandler;
import javax.faces.component.UIViewRoot;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.primefaces.context.RequestContext;
public class JSFUtil {
public static void retornarMensagem(String idComponentePagina, String mensagem) {
FacesContext contexto = FacesContext.getCurrentInstance();
contexto.addMessage(idComponentePagina, new FacesMessage(mensagem));
}
public static void retornarMensagem(String idComponentePagina, Severity severity, String mensagem) {
FacesContext contexto = FacesContext.getCurrentInstance();
contexto.addMessage(idComponentePagina, new FacesMessage(severity, "", mensagem));
}
public static RequestContext getRequestContext() {
return RequestContext.getCurrentInstance();
}
/**
* Método que lê um parâmetro de um link ou botão passado através da TAG
* <f:param>.
*
* @param nomeDoParametro
* valor usado no atributo name da TAG "param"
* @return o valor passado no envio da requisição como uma String
*/
public static String getParametro(String nomeDoParametro) {
FacesContext context = FacesContext.getCurrentInstance();
Map map = context.getExternalContext().getRequestParameterMap();
String valor = map.get(nomeDoParametro);
return valor;
}
/**
* Método que lê um parâmetro de um link ou botão passado através da TAG
* <f:param>, convertendo o valor para Long.
*
* @param nomeDoParametro
* valor usado no atributo name da TAG "param"
* @return o valor passado no envio da requisição como um Long
*/
public static Long getParametroLong(String nomeDoParametro) {
String valor = getParametro(nomeDoParametro);
Long valorLong;
try {
valorLong = new Long(valor);
} catch (Exception e) {
valorLong = null;
}
return valorLong;
}
/**
* Método que lê um parâmetro de um link ou botão passado através da TAG
* <f:param>, convertendo o valor para Integer.
*
* @param nomeDoParametro
* valor usado no atributo name da TAG "param"
* @return o valor passado no envio da requisição como um Integer
*/
public static Integer getParametroInteger(String nomeDoParametro) {
String valor = getParametro(nomeDoParametro);
Integer valorInt;
try {
valorInt = new Integer(valor);
} catch (Exception e) {
valorInt = null;
}
return valorInt;
}
/**
* Método que pega o objeto HttpSession associado com a requisição atual.
*/
public static HttpSession getHttpSession() {
FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
return session;
}
/**
* Método que pega o objeto HttpServletRequest associado com a requisição
* atual.
*/
public static HttpServletRequest getServletRequest() {
return (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
}
/**
* Método que pega o objeto HttpServletResponse associado com a requisição
* atual.
*/
public static HttpServletResponse getServletResponse() {
return (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
}
/**
* Método que pega o objeto ExternalContext do contexto do Faces.
*/
public static ExternalContext getExternalContext() {
return FacesContext.getCurrentInstance().getExternalContext();
}
/**
* Método que pega o objeto Map do Application do contexto do Faces.
*/
public static Map getApplicationMap() {
return FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
}
/**
* Método que pega o objeto Map do Session do contexto do Faces.
*/
public static Map getSessionMap() {
return FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
}
/**
* Método que pega o objeto Map do Request do contexto do Faces.
*/
public static Map getRequestMap() {
return FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
}
/**
* Método que pega o objeto Map com os Parâmetros da requisição.
*/
public static Map getRequestParameterMap() {
return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
}
/**
* Método que pega o objeto ServletContext do contexto do Faces.
*/
public static ServletContext getServletContext() {
return (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
}
public static void limparObjetosSessao(String nomeChave) {
for (String chave : JSFUtil.getSessionMap().keySet()) {
if (chave.contains(nomeChave)) {
System.out.println("JSFUtil.limparObjetosSessao() <> " + chave);
getSessionMap().put(chave, null);
}
}
}
public static void refresh() {
FacesContext context = FacesContext.getCurrentInstance();
Application application = context.getApplication();
ViewHandler viewHandler = application.getViewHandler();
UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
context.setViewRoot(viewRoot);
context.renderResponse(); // Optional
}
}