/*******************************************************************************
* Copyright (c) 2013 MEDEVIT <office@medevit.at>.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MEDEVIT <office@medevit.at> - initial API and implementation
******************************************************************************/
package ch.elexis.core.data.interfaces.events;
import org.eclipse.core.runtime.IStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.elexis.core.data.events.ElexisEventDispatcher;
/**
*
* @since 3.0.0
*/
public class MessageEvent {
private static Logger logger = LoggerFactory.getLogger(MessageEvent.class);
public enum MessageType {
INFO, WARN, ERROR
}
final public String title;
final public String message;
final public MessageType mt;
final public IStatus status;
public MessageEvent(MessageType mt, String title, String message){
this(mt, title, message, null);
}
public MessageEvent(MessageType mt, String title, String message, IStatus status){
this.title = title;
this.message = message;
this.mt = mt;
this.status = status;
}
/**
* Fire this message
*/
public void fire(){
ElexisEventDispatcher.getInstance().fireMessageEvent(this);
}
public static void fireError(String title, String message){
fire(MessageType.ERROR, title, message, null, null, false);
}
public static void fireError(String title, String message, Exception ex){
fire(MessageType.ERROR, title, message, null, ex, false);
}
public static void fireLoggedError(String title, String message){
fire(MessageType.ERROR, title, message, null, null, true);
}
public static void fireLoggedError(String title, String message, Exception ex){
fire(MessageType.ERROR, title, message, null, ex, true);
}
public static void fireInformation(String title, String message){
fire(MessageType.INFO, title, message, null, null, true);
}
private static void fire(MessageType mt, String title, String message, IStatus status,
Exception ex, boolean log){
if (log) {
String logMsg = title + " - " + message;
switch (mt) {
case ERROR:
if (ex == null) {
logger.error(logMsg);
} else {
logger.error(logMsg, ex);
}
break;
case WARN:
if (ex == null) {
logger.warn(logMsg);
} else {
logger.warn(logMsg, ex);
}
break;
case INFO:
if (ex == null) {
logger.info(logMsg);
} else {
logger.info(logMsg, ex);
}
break;
}
}
new MessageEvent(mt, title, message, status).fire();
}
}