/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.datamanagement.commons;
import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import de.rcenvironment.core.datamodel.api.FinalWorkflowState;
/**
* Representation for a workflow run holding its related {@link ComponentInstance}s and {@link ComponentRun}s.
*
* @author Jan Flink
*/
public class WorkflowRun extends WorkflowRunDescription implements Serializable {
private static final long serialVersionUID = -6595800618979107754L;
private Map<ComponentInstance, Set<ComponentRun>> componentRuns;
private String wfFileReference;
public WorkflowRun(Long workflowRunID, String workflowTitle, String controllerID, String datamanagementID, Long startTime,
Long endtime, FinalWorkflowState finalState, Boolean hasDataReferences, Boolean markedForDeletion, Map<String, String> metaData,
String wfFileReference) {
super(workflowRunID, workflowTitle, controllerID, datamanagementID, startTime, endtime, finalState, hasDataReferences,
markedForDeletion, metaData);
this.wfFileReference = wfFileReference;
componentRuns = new HashMap<ComponentInstance, Set<ComponentRun>>();
}
private void addComponentInstance(ComponentInstance componentInstance) {
componentRuns.put(componentInstance, new HashSet<ComponentRun>());
}
/**
* Adds a {@link ComponentRun} to the tree set related to the given {@link ComponentInstance}.
*
* @param componentInstance The {@link ComponentInstance} key to add the {@link ComponentRun} to.
* @param componentRun The {@link ComponentRun} to add.
*/
public void addComponentRun(ComponentInstance componentInstance, ComponentRun componentRun) {
if (!componentRuns.containsKey(componentInstance)) {
addComponentInstance(componentInstance);
}
componentRuns.get(componentInstance).add(componentRun);
}
public Map<ComponentInstance, Set<ComponentRun>> getComponentRuns() {
return componentRuns;
}
public String getWfFileReference() {
return wfFileReference;
}
}