package edu.harvard.iq.dataverse.util; import java.util.Locale; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; /** * Utility class for common JSF tasks. * @author michael */ public class JsfHelper { private static final Logger logger = Logger.getLogger(JsfHelper.class.getName()); public static final JsfHelper JH = new JsfHelper(); public static void addSuccessMessage(String message) { FacesContext.getCurrentInstance().getExternalContext().getFlash().put("successMsg", message); } public static void addFlashMessage(String message) { addSuccessMessage(message); } public static void addErrorMessage(String message) { FacesContext.getCurrentInstance().getExternalContext().getFlash().put("errorMsg", message); } public static void addInfoMessage(String message) { FacesContext.getCurrentInstance().getExternalContext().getFlash().put("infoMsg", message); } public static void addWarningMessage(String message) { FacesContext.getCurrentInstance().getExternalContext().getFlash().put("warningMsg", message); } public void addMessage( FacesMessage.Severity s, String summary, String details ) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(s, summary, details)); } public void addMessage( FacesMessage.Severity s, String summary ) { addMessage(s, summary, ""); } public <T extends Enum<T>> T enumValue( String param, Class<T> enmClass, T defaultValue ) { if ( param == null ) return defaultValue; param = param.trim(); try { return Enum.valueOf(enmClass, param); } catch ( IllegalArgumentException iar ) { logger.log(Level.WARNING, "Illegal value for enum {0}: ''{1}''", new Object[]{enmClass.getName(), param}); return defaultValue; } } /** * @deprecated Localization applies not only to the front end (JSF) but also * the API so consider using the newer, more flexible BundleUtil methods * instead. */ @Deprecated public String localize( String messageKey ) { FacesContext facesContext = FacesContext.getCurrentInstance(); String messageBundleName = facesContext.getApplication().getMessageBundle(); Locale locale = facesContext.getViewRoot().getLocale(); ResourceBundle bundle = ResourceBundle.getBundle("Bundle", locale); return bundle.getString(messageKey); } }