package pt.opensoft.msg;
import pt.opensoft.http.SessionUser;
import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;
import javax.faces.component.UIComponent;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import java.util.ResourceBundle;
public class FacesRequest extends Request {
private static final long serialVersionUID = -4542685716608907875L;
private FacesContext facesContext;
public static String ADD_MESSAGE_ERROR = "error";
public static String ADD_MESSAGE_WARNING = "warning";
public static String ADD_MESSAGE_INFO = "info";
public static String SHOW_MESSAGE_ERROR = "error";
public static String SHOW_MESSAGE_WARNING = "warning";
public static String SHOWMESSAGE_INFO = "info";
public static String SHOWMESSAGE_FATAL = "fatal";
public FacesRequest(FacesContext context) {
super();
this.facesContext = context;
}
public String getMethod() {
// TODO Auto-generated method stub
return null;
}
public Session getSession() {
// TODO Auto-generated method stub
return null;
}
public Session getSession(boolean create) {
// TODO Auto-generated method stub
return null;
}
public boolean isSecure() {
// TODO Auto-generated method stub
return false;
}
public void addGlobalMessage(String message, Severity sev) {
FacesMessage m = new FacesMessage(message);
m.setSeverity(sev);
FacesContext.getCurrentInstance().addMessage(null, m);
}
public void addGlobalError(String errorMessage) {
addGlobalMessage(errorMessage, FacesMessage.SEVERITY_ERROR);
}
// se o tipo for desconhecido a mensagem � mostrada como INFO
public String addMessage(UIComponent componente, String msg, String type) {
FacesMessage message = new FacesMessage(msg);
if (type.equals("error"))
message.setSeverity(FacesMessage.SEVERITY_ERROR);
else if (type.equals("warning"))
message.setSeverity(FacesMessage.SEVERITY_WARN);
else if (type.equals("info"))
message.setSeverity(FacesMessage.SEVERITY_INFO);
else if (type.equals("fatal"))
message.setSeverity(FacesMessage.SEVERITY_FATAL);
else
message.setSeverity(FacesMessage.SEVERITY_INFO);
this.facesContext.addMessage(componente.getClientId(this.facesContext), message);
return null;
}
public ResourceBundle getLocalizedBundle() {
return ResourceBundle.getBundle("pt.opensoft.messageResource.MessageResources", facesContext
.getViewRoot().getLocale());
}
public String getMessageFromLocalizedBundle(String messageKey) {
return getLocalizedBundle().getString(messageKey);
}
public void logout() {
if (facesContext != null) {
ExternalContext externalContext = facesContext.getExternalContext();
if (externalContext != null) {
HttpSession session = (HttpSession) externalContext.getSession(false);
if (session != null) {
session.invalidate();
}
}
}
}
public FacesContext getFacesContext() {
return facesContext;
}
public SessionUser getSessionUser() {
if (facesContext == null) {
return null;
}
try {
ExternalContext exc = facesContext.getExternalContext();
if (exc == null)
return null;
if (exc.getSession(false) == null)
return null;
SessionUser sessionUserBean = (SessionUser) facesContext.getApplication().getVariableResolver()
.resolveVariable(facesContext, SessionUser.SESSION_USER_BEAN_NAME);
return sessionUserBean;
} catch (IllegalStateException e) {
return null;
}
}
}