/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.workflow.execution.api;
import java.util.HashMap;
import java.util.Map;
import de.rcenvironment.core.communication.common.InstanceNodeSessionId;
import de.rcenvironment.core.communication.common.LogicalNodeId;
import de.rcenvironment.core.component.workflow.model.api.WorkflowNode;
import de.rcenvironment.core.utils.common.StringUtils;
/**
* Container for a workflow description validation result. It contains, whether the validation succeeded. If it didn't, it contains the
* {@link InstanceNodeSessionId} of the {@link WorkflowNode}s, which are not available (might be extended, if the validation covers others
* things as well).
*
* @author Doreen Seider
*/
public class WorkflowDescriptionValidationResult {
private boolean succeeded;
private LogicalNodeId missingControllerNodeId = null;
private Map<String, LogicalNodeId> missingComponentsNodeIds = new HashMap<>();
public WorkflowDescriptionValidationResult(boolean validationSucceeded, LogicalNodeId missingControllerNodeId,
Map<String, LogicalNodeId> missingComponentsNodeIds) {
this.succeeded = validationSucceeded;
this.missingControllerNodeId = missingControllerNodeId;
this.missingComponentsNodeIds = missingComponentsNodeIds;
}
public boolean isSucceeded() {
return succeeded;
}
public LogicalNodeId getMissingControllerNodeId() {
return missingControllerNodeId;
}
public Map<String, LogicalNodeId> getMissingComponentsNodeIds() {
return missingComponentsNodeIds;
}
@Override
public String toString() {
StringBuffer causeLogMsg = new StringBuffer();
if (missingControllerNodeId != null) {
causeLogMsg
.append(StringUtils.format("target instance for workflow controller unknown: %s", missingControllerNodeId));
}
for (String compName : missingComponentsNodeIds.keySet()) {
if (causeLogMsg.length() > 0) {
causeLogMsg.append(", ");
}
causeLogMsg.append(StringUtils.format("target instance for component unknown: %s -> %s", compName,
missingComponentsNodeIds.get(compName)));
}
return causeLogMsg.toString().trim();
}
/**
* Creates {@link WorkflowDescriptionValidationResult} instance in case of failure.
*
* @param missingControllerNodeId {@link InstanceNodeSessionId} if the controller {@link InstanceNodeSessionId} is not available
* @param missingComponentsNodeIds all of the component's {@link InstanceNodeSessionId}s which are not available (workflow node id ->
* {@link InstanceNodeSessionId})
* @return {@link WorkflowDescriptionValidationResult} instance, initiated properly
*/
public static WorkflowDescriptionValidationResult createResultForFailure(LogicalNodeId missingControllerNodeId,
Map<String, LogicalNodeId> missingComponentsNodeIds) {
return new WorkflowDescriptionValidationResult(false, missingControllerNodeId, missingComponentsNodeIds);
}
/**
* Creates {@link WorkflowDescriptionValidationResult} instance in case of success.
*
* @return {@link WorkflowDescriptionValidationResult} instance, initiated properly
*/
public static WorkflowDescriptionValidationResult createResultForSuccess() {
return new WorkflowDescriptionValidationResult(true, null, null);
}
}