package fr.mch.mdo.restaurant.exception;
import java.util.Locale;
import fr.mch.mdo.i18n.IMessageQuery;
import fr.mch.mdo.i18n.MessageQueryResourceBundleImpl;
import fr.mch.mdo.logs.ILogger;
import fr.mch.mdo.restaurant.resources.IResources;
import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl;
public class MdoMessageManagerException extends MdoException
{
/**
* Default Serial Version UID
*/
private static final long serialVersionUID = 1L;
private static ILogger logger = LoggerServiceImpl.getInstance().getLogger(MdoMessageManagerException.class.getName());
private IMessageQuery messageQuery = new MessageQueryResourceBundleImpl(IResources.EXCEPTION_RESOURCE_BUNDLE_MESSAGES_FILE);
private Object[] params;
private Locale locale = Locale.getDefault();
public MdoMessageManagerException() {
}
public MdoMessageManagerException(Throwable cause) {
super(cause);
}
public MdoMessageManagerException(String message, Object[] params) {
super(message);
this.params = params;
}
public MdoMessageManagerException(String message, Object[] params, Throwable cause) {
super(message, cause);
this.params = params;
}
public MdoMessageManagerException(String message) {
super(message);
}
public MdoMessageManagerException(String message, Throwable cause) {
super(message, cause);
}
public MdoMessageManagerException(Locale locale, String message, Object[] params) {
super(message);
this.locale = locale;
this.params = params;
}
public MdoMessageManagerException(Locale locale, String message, Object[] params, Throwable cause) {
super(message, cause);
this.locale = locale;
this.params = params;
}
public MdoMessageManagerException(Locale locale, String message) {
super(message);
this.locale = locale;
}
public MdoMessageManagerException(Locale locale, String message, Throwable cause) {
super(message, cause);
this.locale = locale;
}
@Override
public String getLocalizedMessage() {
String result = super.getLocalizedMessage();
if (locale != null) {
messageQuery = new MessageQueryResourceBundleImpl(IResources.EXCEPTION_RESOURCE_BUNDLE_MESSAGES_FILE, locale);
}
result = processQuery(this.getMessage(), this.params);
return result;
}
protected String processQuery(final String query, final Object[] params) {
String message = query;
message = messageQuery.getMessage(message, params);
logger.debug(message);
return message;
}
}