private boolean isAlwaysSatisfiedRequirement() { final ComponentRequirement componentRequirement = _hasComponentRequirement.getComponentRequirement(); if (componentRequirement == null) { return false; } if (componentRequirement instanceof AnyComponentRequirement) { return true; } return false; }
private boolean isAlwaysSatisfiedForConsume() { final ComponentRequirement componentRequirement = _hasComponentRequirement.getComponentRequirement(); if (_sourceJobsOfInputColumns.isEmpty() && (componentRequirement == null || componentRequirement instanceof AnyComponentRequirement)) { return true; } return false; }
private boolean satisfiedOutcomesForConsume(final HasComponentRequirement component, final InputRow row, final FilterOutcomes outcomes) { boolean isSatisfiedOutcomes = false; final ComponentRequirement componentRequirement = component.getComponentRequirement(); if (componentRequirement == null) { isSatisfiedOutcomes = true; } else { isSatisfiedOutcomes = componentRequirement.isSatisfied(row, outcomes); } return isSatisfiedOutcomes; }
private Collection<FilterOutcome> getProcessingDependencyFilterOutcomes(final HasComponentRequirement item) { final ComponentRequirement componentRequirement = item.getComponentRequirement(); if (componentRequirement == null) { return Collections.emptyList(); } return componentRequirement.getProcessingDependencies(); }
private static Set<HasComponentRequirement> buildSourceJobsOfInputColumns( final InputColumnSinkJob inputColumnSinkJob, final SourceColumnFinder sourceColumnFinder) { final Set<HasComponentRequirement> result = new HashSet<>(); final Set<Object> sourceJobsOfInputColumns = sourceColumnFinder.findAllSourceJobs(inputColumnSinkJob); for (final Iterator<Object> it = sourceJobsOfInputColumns.iterator(); it.hasNext(); ) { final Object sourceJob = it.next(); if (sourceJob instanceof HasComponentRequirement && sourceJob instanceof InputColumnSourceJob) { final HasComponentRequirement sourceOutcomeSinkJob = (HasComponentRequirement) sourceJob; final ComponentRequirement componentRequirement = sourceOutcomeSinkJob.getComponentRequirement(); if (componentRequirement != null) { result.add(sourceOutcomeSinkJob); } } } return result; }
private boolean satisfiedInputsForConsume(final InputRow row, final FilterOutcomes outcomes) { if (_alwaysSatisfiedForConsume) { return _alwaysSatisfiedForConsume; } final ComponentRequirement componentRequirement = _hasComponentRequirement.getComponentRequirement(); if (componentRequirement == null) { for (final Object sourceJobsOfInputColumn : _sourceJobsOfInputColumns) { // if any of the source jobs is satisfied, then continue if (sourceJobsOfInputColumn instanceof HasComponentRequirement) { final HasComponentRequirement hasComponentRequirement = (HasComponentRequirement) sourceJobsOfInputColumn; final boolean satisfiedOutcomesForConsume = satisfiedOutcomesForConsume(hasComponentRequirement, row, outcomes); if (satisfiedOutcomesForConsume) { return true; } } } return false; } return true; }
final ComponentRequirement componentRequirement = hasComponentRequirement.getComponentRequirement(); final Collection<FilterOutcome> requirements = getProcessingDependencies(componentRequirement); for (final FilterOutcome outcome : requirements) {
private Set<Column> findOriginatingColumnsOfSource(final Object source) { final Set<Column> cachedOriginatingColumns = originatingColumnsOfSourceCache.get(source); if (cachedOriginatingColumns != null) { return cachedOriginatingColumns; } final Set<Column> originatingColumns = new HashSet<>(); if (source != null) { if (source instanceof InputColumnSinkJob) { final InputColumn<?>[] input = ((InputColumnSinkJob) source).getInput(); if (input != null) { for (final InputColumn<?> inputColumn : input) { originatingColumns.addAll(findOriginatingColumnsOfInputColumn(inputColumn)); } } } if (source instanceof HasComponentRequirement) { final HasComponentRequirement hasComponentRequirement = (HasComponentRequirement) source; final ComponentRequirement componentRequirement = hasComponentRequirement.getComponentRequirement(); final Collection<FilterOutcome> requirements = getProcessingDependencies(componentRequirement); for (final FilterOutcome outcome : requirements) { originatingColumns.addAll(findOriginatingColumnsOfOutcome(outcome)); } } } originatingColumnsOfSourceCache.put(source, originatingColumns); return originatingColumns; }
public boolean validateRequirementCandidate(final FilterOutcome requirement) { if (requirement == null) { return true; } final HasFilterOutcomes source = requirement.getSource(); if (source == this) { return false; } if (source instanceof HasComponentRequirement) { final ComponentRequirement componentRequirement = ((HasComponentRequirement) source).getComponentRequirement(); if (componentRequirement != null) { final Collection<FilterOutcome> requirements = componentRequirement.getProcessingDependencies(); for (final FilterOutcome transitiveRequirement : requirements) { final boolean transitiveValidation = validateRequirementCandidate(transitiveRequirement); if (!transitiveValidation) { return false; } } } } return true; }
/** * Ensures that ALL outcomes are available */ @Override public final boolean satisfiedForFlowOrdering(final FilterOutcomes outcomes) { if (isAlwaysSatisfiedRequirement()) { return true; } final ComponentRequirement componentRequirement = _hasComponentRequirement.getComponentRequirement(); if (componentRequirement == null) { return true; } final Collection<FilterOutcome> dependencies = componentRequirement.getProcessingDependencies(); for (final FilterOutcome filterOutcome : dependencies) { final boolean contains = outcomes.contains(filterOutcome); if (!contains) { return false; } } return componentRequirement.isSatisfied(null, outcomes); }
final ComponentRequirement requirement = hasComponentRequirement.getComponentRequirement(); findAllSourceJobs(requirement, result);
if (source != null) { addNodes(graph, scf, linkFactory, source, recurseCount); addEdge(graph, linkFactory, source, vertex, hasComponentRequirement.getComponentRequirement(), filterOutcome);