/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.eventlog.internal.impl; import de.rcenvironment.core.eventlog.ComponentEventLogger; import de.rcenvironment.core.eventlog.EventLogger; import de.rcenvironment.core.eventlog.WorkflowEventLogger; import de.rcenvironment.core.eventlog.internal.EventLogContext; import de.rcenvironment.core.eventlog.internal.EventLogMessageType; import de.rcenvironment.core.eventlog.internal.EventLogService; /** * Internal implementation of {@link EventLogger} and its provided subinterfaces. * * @author Robert Mischke * */ public class EventLoggerImpl implements EventLogger, WorkflowEventLogger, ComponentEventLogger { /** * The shared reference to the current {@link EventLogService}; initialized with a placeholder * implementation. */ private static EventLogService eventLogService = new EventLogServiceForwardToACLImpl(); private EventLogContext context; private String sourceId; private String workflowId; private String componentId; public EventLoggerImpl(EventLogContext context, Class<?> clazz, String workflowId, String componentId) { this.context = context; this.sourceId = clazz.getName(); this.workflowId = workflowId; this.componentId = componentId; } @Override public void error(boolean localized, String message, Object... parameters) { // delegate with a "null" detail information error(null, localized, message, parameters); } @Override public void error(Throwable detailInformation, boolean localized, String message, Object... parameters) { createMessage(EventLogMessageType.ERROR, detailInformation, localized, message, parameters); } @Override public void warn(boolean localized, String message, Object... parameters) { // delegate with a "null" detail information warn(null, localized, message, parameters); } @Override public void warn(Throwable detailInformation, boolean localized, String message, Object... parameters) { createMessage(EventLogMessageType.WARNING, detailInformation, localized, message, parameters); } @Override public void info(boolean localized, String message, Object... parameters) { createMessage(EventLogMessageType.INFO, null, localized, message, parameters); } @Override public void debug(String message, Object... parameters) { // delegate with a "null" detail information debug(null, message, parameters); } @Override public void debug(Throwable detailInformation, String message, Object... parameters) { createMessage(EventLogMessageType.DEBUG_DEFAULT, detailInformation, false, message, parameters); } @Override public void debugVerbose(String message, Object... parameters) { // delegate with a "null" detail information debugVerbose(null, message, parameters); } @Override public void debugVerbose(Throwable detailInformation, String message, Object... parameters) { createMessage(EventLogMessageType.DEBUG_VERBOSE, detailInformation, false, message, parameters); } @Override public boolean isDebugVerboseEnabled() { // TODO add runtime flag/switch return true; } @Override public void stateChanged(Object oldState, Object newState) { } @Override public void stdout(String line) { createMessage(EventLogMessageType.STDOUT, null, false, line); } @Override public void stderr(String line) { createMessage(EventLogMessageType.STDERR, null, false, line); } private void createMessage(EventLogMessageType messageType, Throwable detailInformation, boolean localized, String message, Object... parameters) { EventLogMessage messageObject = new EventLogMessage(); // call-independent parameters messageObject.setContext(context); messageObject.setSourceId(sourceId); messageObject.setWorkflowId(workflowId); messageObject.setComponentId(componentId); // call-specific parameters messageObject.setMessageType(messageType); messageObject.setDetailInformation(detailInformation); messageObject.setLocalized(localized); messageObject.setMessage(message); messageObject.setParameters(parameters); // send to dispatching service eventLogService.dispatchMessage(messageObject); } }