package org.kie.dmn.core.util;
import org.kie.dmn.api.core.DMNMessage;
import org.kie.dmn.api.feel.runtime.events.FEELEvent;
import org.kie.dmn.core.api.DMNMessageManager;
import org.kie.dmn.core.impl.DMNResultImpl;
import org.kie.dmn.core.util.Msg.Message;
import org.kie.dmn.core.util.Msg.Message0;
import org.kie.dmn.core.util.Msg.Message1;
import org.kie.dmn.core.util.Msg.Message2;
import org.kie.dmn.core.util.Msg.Message3;
import org.kie.dmn.core.util.Msg.Message4;
import org.kie.dmn.api.core.DMNMessage.Severity;
import org.kie.dmn.model.v1_1.DMNElement;
import org.kie.dmn.model.v1_1.DMNModelInstrumentedBase;
import org.slf4j.Logger;
public class MsgUtil {
public static String createMessage( Message0 message) {
return MsgUtil.buildMessage(message);
}
public static String createMessage( Message1 message, Object p1) {
return MsgUtil.buildMessage(message, p1);
}
public static String createMessage( Message2 message, Object p1, Object p2) {
return MsgUtil.buildMessage(message, p1, p2);
}
public static String createMessage( Message3 message, Object p1, Object p2, Object p3) {
return MsgUtil.buildMessage(message, p1, p2, p3);
}
public static String createMessage( Message4 message, Object p1, Object p2, Object p3, Object p4) {
return MsgUtil.buildMessage(message, p1, p2, p3, p4);
}
private static String buildMessage( Message message, Object... params ) {
return String.format( message.getMask(), params );
}
public static DMNMessage reportMessage(Logger logger, Severity severity, DMNModelInstrumentedBase source, DMNMessageManager result, Throwable exception, FEELEvent event, Message0 template) {
String message = createMessage( template );
return logMessage( logger, severity, source, result, exception, event, template, message );
}
public static DMNMessage reportMessage(Logger logger, Severity severity, DMNModelInstrumentedBase source, DMNMessageManager result, Throwable exception, FEELEvent event, Message1 template, Object p1) {
String message = createMessage( template, p1 );
return logMessage( logger, severity, source, result, exception, event, template, message );
}
public static DMNMessage reportMessage(Logger logger, Severity severity, DMNModelInstrumentedBase source, DMNMessageManager result, Throwable exception, FEELEvent event, Message2 template, Object p1, Object p2) {
String message = createMessage( template, p1, p2);
return logMessage( logger, severity, source, result, exception, event, template, message );
}
public static DMNMessage reportMessage(Logger logger, Severity severity, DMNModelInstrumentedBase source, DMNMessageManager result, Throwable exception, FEELEvent event, Message3 template, Object p1, Object p2, Object p3) {
String message = createMessage( template, p1, p2, p3);
return logMessage( logger, severity, source, result, exception, event, template, message );
}
public static DMNMessage reportMessage(Logger logger, Severity severity, DMNModelInstrumentedBase source, DMNMessageManager result, Throwable exception, FEELEvent event, Message4 template, Object p1, Object p2, Object p3, Object p4) {
String message = createMessage( template, p1, p2, p3, p4);
return logMessage( logger, severity, source, result, exception, event, template, message );
}
private static DMNMessage logMessage(Logger logger, Severity severity, DMNModelInstrumentedBase source, DMNMessageManager result, Throwable exception, FEELEvent event, Message template, String message) {
switch ( severity ) {
case ERROR: logger.error( message ); break;
case WARN: logger.warn( message ); break;
default: logger.info( message );
}
if( event != null ) {
return result.addMessage(
severity,
message,
template.getType(),
source,
event );
} else {
return result.addMessage(
severity,
message,
template.getType(),
source,
exception );
}
}
}