package com.fp.armas.portal.faces;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 * Clase que contiene utilidades para el manejo de JSF
 * @author dcruz
 * @since 1.0
 */
public class FacesUtil {
	
	private static FacesUtil instancia = null;
	
	private FacesUtil(){}
	
	public synchronized static FacesUtil getInstancia() {
		if(instancia == null){
			instancia = new FacesUtil();
		}
		return instancia;
	}

	/**
	 * Retorna el hilo {@link FacesContext}
	 * @return
	 */
	public FacesContext getFacesContext() {
		return FacesContext.getCurrentInstance();
	}
	
	/**
	 * Muestra un mensaje informativo
	 * @param message
	 */
	public void messageInfo(String message) {
		FacesContext facesContext = getFacesContext();
		facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, message, message));
	}
	
	/**
	 * Muestra un mensaje de advertencia
	 * @param message
	 */
	public void messageWarn(String message) {
		FacesContext facesContext = getFacesContext();
		facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, message, message));
	}
	
	/**
	 * Muestra un mensaje de error
	 * @param message
	 */
	public void messageError(String message) {
		FacesContext facesContext = getFacesContext();
		facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message));
	}
	
	/**
	 * Muestra un mensaje de error fatal
	 * @param message
	 */
	public  void messageFatal(String message) {
		FacesContext facesContext = FacesContext.getCurrentInstance();
		facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, message, message));
	}
	
	/**
	 * Elimina un bean de sesi&oacute;n por su nombre
	 * @param name
	 */
	public void eliminaBeanSesion(String name){
		FacesContext facesContext = getFacesContext();
		facesContext.getExternalContext().getSessionMap().remove(name);
	}
	
}
