*
* @param id
* @param dependency
*/
public void addDependencies(String id, List<String> dependency) {
FlowNode node = flowItems.get(id);
if (node == null) {
node = new FlowNode(id);
flowItems.put(id, node);
}
if (node.getDependencies() != null) {
errorMessages.add("Job " + id + " has multiple dependency entries in this flow.");
}
HashSet<String> set = new HashSet<String>();
set.addAll(dependency);
node.setDependencies(set);
// Go through the node's dependencies and add the node as a dependent.
for (String dep: dependency) {
if (dep.equals(id)) {
errorMessages.add("Job " + id + " has defined itself as a dependency.");
continue;
}
FlowNode parentNode = flowItems.get(dep);
if (parentNode == null) {
parentNode = new FlowNode(dep);
flowItems.put(dep, parentNode);
}
parentNode.addDependent(id);
}
}