addGraphNodes(g, scf, inputColumn, displayColumns, displayFilterOutcomes);
addEdge(g, inputColumn, item);
} else {
// add the origin of the column
if (inputColumn.isVirtualColumn()) {
InputColumnSourceJob source = scf.findInputColumnSource(inputColumn);
if (source != null) {
addGraphNodes(g, scf, source, displayColumns, displayFilterOutcomes);
addEdge(g, source, item);
}
}
}
}
}
if (item instanceof FilterOutcome) {
OutcomeSourceJob source = scf.findOutcomeSource((FilterOutcome) item);
if (source != null) {
addGraphNodes(g, scf, source, displayColumns, displayFilterOutcomes);
addEdge(g, source, item);
}
}
if (item instanceof OutcomeSinkJob) {
Outcome[] requirements = ((OutcomeSinkJob) item).getRequirements();
if (requirements != null && requirements.length > 0) {
for (Outcome req : requirements) {
if (displayFilterOutcomes) {
// add the filter outcome itself
addGraphNodes(g, scf, req, displayColumns, displayFilterOutcomes);
addEdge(g, req, item);
} else {
// add the origin of the filter outcome
OutcomeSourceJob source = scf.findOutcomeSource(req);
if (source != null) {
addGraphNodes(g, scf, source, displayColumns, displayFilterOutcomes);
addEdge(g, source, item);
}
}
}
}
}
if (item instanceof InputColumn) {
InputColumn<?> inputColumn = (InputColumn<?>) item;
if (inputColumn.isVirtualColumn()) {
InputColumnSourceJob source = scf.findInputColumnSource(inputColumn);
if (source != null) {
addGraphNodes(g, scf, source, displayColumns, displayFilterOutcomes);
addEdge(g, source, item);
}
}