/*
* BaseBean.java
*
* Created on 12 de Outubro de 2007, 11:46
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package br.uff.ic.oceano.controller;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
public class BaseBean {
protected Logger logger;
protected SessaoDoUsuario sessao;
public static final String PAGINA_PRINCIPAL = "def:/privado/principal";
public static final String PAGINA_LOGIN = "def:/login";
/**
* Nome do logger desejado
*/
public BaseBean(final String nomeDoLogger) {
logger = Logger.getLogger(nomeDoLogger);
getSessaoDoUsuario();
}
public BaseBean(final String nomeDoLogger,SessaoDoUsuario sessao) {
logger = Logger.getLogger(nomeDoLogger);
setSessaoDoUsuario(sessao);
}
/**
* Retorna o contexto JSF
*/
protected static FacesContext getContexto() {
return FacesContext.getCurrentInstance();
}
/**
* Retorna um bean do escopo JSF
*/
@SuppressWarnings("deprecation")
protected Object getBean(final String nome) {
final FacesContext contexto = getContexto();
return contexto.getApplication().getVariableResolver().resolveVariable(contexto, nome);
}
protected void fatal(final String message) {
getContexto().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, message, ""));
}
protected void error(final String message) {
getContexto().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, ""));
}
protected void info(final String message) {
getContexto().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, message, ""));
}
protected void warn(final String message) {
getContexto().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, message, ""));
}
// // Kann - 14-01-2008
// protected String getMensagemBundled(String nome) {
// return BeanUtils.getMessageResourceString(getContexto().getApplication().getMessageBundle(), nome, null, getContexto().getViewRoot().getLocale());
// }
// Kann - 14-01-2008
public static List<SelectItem> getListaString(String nome) {
String linha = getMessageResourceString(FacesContext.getCurrentInstance().getApplication().getMessageBundle(), nome, null, FacesContext.getCurrentInstance().getViewRoot().getLocale());
String[] tokens = linha.split("#");
ArrayList<SelectItem> lista = new ArrayList<SelectItem>(tokens.length);
for (String elem : tokens) {
elem = elem.toUpperCase();
lista.add(new SelectItem(elem, elem));
}
return lista;
}
protected SessaoDoUsuario getSessaoDoUsuario() {
if (sessao == null) {
sessao = (SessaoDoUsuario) getBean("SessaoDoUsuario");
}
return sessao;
}
private void setSessaoDoUsuario(SessaoDoUsuario sessao) {
this.sessao =sessao;
}
public static String getMessageResourceString(String key,Object params[]){
String text = null;
Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
String bundleName = "br.uff.ic.oceano.messages.Mensagens";
ResourceBundle bundle = ResourceBundle.getBundle(bundleName, locale, getCurrentClassLoader(params));
try {
text = bundle.getString(key);
} catch (MissingResourceException e) {
text = "?? chave " + key + " não encontrada no arquivo de mensagens " + bundleName + " ??";
}
if (params != null) {
MessageFormat mf = new MessageFormat(text, locale);
text = mf.format(params, new StringBuffer(), null).toString();
}
return text;
}
public static String getMessageResourceString(
String bundleName,
String key,
Object params[],
Locale locale) {
String text = null;
ResourceBundle bundle =
ResourceBundle.getBundle(bundleName, locale,
getCurrentClassLoader(params));
try {
text = bundle.getString(key);
} catch (MissingResourceException e) {
text = "?? chave " + key + " não encontrada no arquivo de mensagens " + bundleName + " ??";
}
if (params != null) {
MessageFormat mf = new MessageFormat(text, locale);
text = mf.format(params, new StringBuffer(), null).toString();
}
return text;
}
protected void invalidarBean(final String nome) {
((HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false)).setAttribute(nome, null);
}
// Kann - 14-01-2008
protected static ClassLoader getCurrentClassLoader(Object defaultObject) {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
if (loader == null) {
loader = defaultObject.getClass().getClassLoader();
}
return loader;
}
public static Object getParametroRequest(String nomeParametro) {
return getContexto().getExternalContext().getRequestParameterMap().get(nomeParametro);
}
}