package br.gov.serpro.treino.view.managedbean;
import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.apache.log4j.Logger;
import br.gov.framework.demoiselle.core.message.IMessage;
import br.gov.framework.demoiselle.web.transaction.WebTransactionContext;
import br.gov.serpro.treino.exception.ErrorMessage;
import br.gov.serpro.treino.exception.TestGridException;
public class FacesUtil {
private static ResourceBundle bundle = null;
private static Logger log = Logger.getLogger(FacesUtil.class);
public static void addMessage(IMessage message) {
addMessage(message, null, null);
}
public static void addMessage(IMessage message, String[] param) {
addMessage(message, param, null);
}
public static void addMessage(IMessage message, String[] param, Throwable error) {
try {
log.debug("addMessage " + message.getKey());
if (bundle == null){
log.debug("iniciou bundle");
log.debug("locale " + FacesContext.getCurrentInstance().getViewRoot().getLocale());
bundle = ResourceBundle.getBundle("facesMessage");
}
if (message != null) {
String msg = bundle.getString(message.getKey());
if (param != null) {
MessageFormat format = new MessageFormat(msg);
msg = format.format(param);
}
FacesContext fc = FacesContext.getCurrentInstance();
switch (message.getSeverity()) {
case ERROR:
log.info(msg);
fc.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg));
break;
default:
log.info(msg);
fc.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg));
break;
}
}
if (error != null) {
log.error(message, error);
WebTransactionContext.getInstance().add(error);
}
} catch (MissingResourceException e) {
String msg = "???" + message.getKey() + "???";
FacesContext fc = FacesContext.getCurrentInstance();
log.error(msg);
fc.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg));
} catch (Exception e) {
String msg = "Erro inesperado n método addMessage. :" + e.getMessage();
FacesContext fc = FacesContext.getCurrentInstance();
log.error(msg);
fc.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg));
}
}
public static void addMessage(String message) {
FacesMessage msg = new FacesMessage("Succesful", message);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public static void handleException(Throwable e) {
if (e instanceof TestGridException) {
TestGridException exc = (TestGridException) e;
FacesUtil.addMessage(exc.getObjectMessage(), exc.getParams());
} else {
String[] param = { e.getMessage() };
FacesUtil.addMessage(ErrorMessage.UNEXPECTED, param, e);
}
}
}