package com.fp.common.exception; import java.text.MessageFormat; import java.util.Locale; import java.util.ResourceBundle; /** * Clase que se encarga del manejo de excepciones. * @author Jorge Vaca. * @version 2.1 */ public abstract class ExceptionManager { /**Bundle que maneja los texto de error por idioma, locale*/ private ResourceBundle messages; /**Locale con el cual se obtiene el bundle.*/ private Locale locale; /** * Metodoq ue entrega el mensaje de usuario dada la Excepcion. * @param pException Excepcion utilizada para obtener el mensaje de usuario. * @return String */ abstract public String getUserMessage(Throwable pException); /** * Metodo que entrega el codigo de excepcion. * @param pException Excepcion utilizada para obtener el codigo de excepcion. * @return String */ abstract public String getCode(Throwable pException); /** * Metodo que fija el Locale, que sirve para obtener el bundel que maneja los textos de la excepcion. * @param pLocale */ public void setLocale(Locale pLocale) { locale = pLocale; messages = ResourceBundle.getBundle("userMessages", locale); } /** * Entrega el mensaje del bundle. * @param pKey Codigo de mensaje del bundle. * @return */ protected String getMessage(String pKey) { try { return messages.getString(pKey); } catch (Throwable e) { return null; } } /** * Entrega el mensaje del bundle. * @param pKey Codigo de mensaje del bundle. * @param pParameters Parametros con los que se cpmpleta el mensaje definido en el bundle. * @return String */ protected String getMessage(String pKey, Object... pParameters) { try { String msg = this.getMessage(pKey); if(msg == null){ msg = pKey; } return MessageFormat.format(msg, pParameters); } catch (Throwable e) { return null; } } }