/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.workflow.execution.internal;
import java.text.SimpleDateFormat;
import java.util.Date;
import de.rcenvironment.core.component.execution.api.ConsoleRow;
import de.rcenvironment.core.utils.common.StringUtils;
/**
* Converts {@link ConsoleRow} entries to log file entries.
*
* NOTE: This class is NOT thread-safe (for performance reasons).
*
* @author Robert Mischke
*/
public final class ConsoleRowFormatter {
private final SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss,SSS");
/**
* Returns a log entry to use in log files for a single, specific workflow execution.
*
* @param row the {@link ConsoleRow} to format
* @return the generated log entry
*/
public String toSingleWorkflowLogFileFormat(ConsoleRow row) {
String componentName = row.getComponentName();
if (componentName == null || componentName.isEmpty()) {
componentName = "-";
}
return StringUtils.format("[%s] [%s] [%s] %s%n", timeFormat.format(new Date(row.getTimestamp())), row.getType(), componentName,
row.getPayload());
}
/**
* Returns a log entry to use in a combined log file for multiple workflow executions.
*
* @param row the {@link ConsoleRow} to format
* @return the generated log entry
*/
public String toCombinedLogFileFormat(ConsoleRow row) {
return StringUtils.format("[%s] [%s] [%s] [%s] %s%n", new Date(row.getTimestamp()), row.getWorkflowName(), row.getComponentName(),
row.getType(), row.getPayload());
}
/**
* Returns a log entry to use in an error log file for one single workflow execution.
*
* @param row the {@link ConsoleRow} to format
* @return the generated log entry
*/
public String toWorkflowErrorLogFileFormat(ConsoleRow row) {
if (row.getType().equals(ConsoleRow.Type.WORKFLOW_ERROR)) {
return StringUtils.format("%s %s: %s", timeFormat.format(row.getTimestamp()),
row.getType().getDisplayName(), row.getPayload());
} else {
if (row.getComponentRun() > 0) {
return StringUtils.format("%s %s - %s [run %d]: %s", timeFormat.format(row.getTimestamp()),
row.getType().getDisplayName(), row.getComponentName(), row.getComponentRun(), row.getPayload());
} else {
return StringUtils.format("%s %s - %s: %s", timeFormat.format(row.getTimestamp()),
row.getType().getDisplayName(), row.getComponentName(), row.getPayload());
}
}
}
/**
* Returns a log entry to use in a complete log file for one single component execution.
*
* @param row the {@link ConsoleRow} to format
* @return the generated log entry
*/
public String toComponentCompleteLogFileFormat(ConsoleRow row) {
return StringUtils.format("[%d] %s %s: %s", row.getSequenzNumber(), timeFormat.format(row.getTimestamp()),
row.getType().getDisplayName(), row.getPayload());
}
/**
* Returns a log entry to use in a complete log file for one single component execution.
*
* @param row the {@link ConsoleRow} to format
* @return the generated log entry
*/
public String toComponentErrorLogFileFormat(ConsoleRow row) {
return StringUtils.format("%s %s: %s", timeFormat.format(row.getTimestamp()),
row.getType().getDisplayName(), row.getPayload());
}
}