public TransformerComponentBuilder<?> getOriginatingTransformer(final InputColumn<?> outputColumn) { final SourceColumnFinder finder = new SourceColumnFinder(); finder.addSources(this); final InputColumnSourceJob source = finder.findInputColumnSource(outputColumn); if (source instanceof TransformerComponentBuilder) { return (TransformerComponentBuilder<?>) source; } return null; }
private Set<Column> findOriginatingColumnsOfInputColumn(final InputColumn<?> inputColumn) { final Set<Column> cachedOriginatingColumns = originatingColumnsOfInputColumnCache.get(inputColumn); if (cachedOriginatingColumns != null) { return cachedOriginatingColumns; } final Set<Column> originatingColumns = new HashSet<>(); if (inputColumn != null) { if (inputColumn.isPhysicalColumn()) { originatingColumns.add(inputColumn.getPhysicalColumn()); } else { final InputColumnSourceJob source = findInputColumnSource(inputColumn); originatingColumns.addAll(findOriginatingColumnsOfSource(source)); } } originatingColumnsOfInputColumnCache.put(inputColumn, originatingColumns); return originatingColumns; }
private Table findOriginatingTable(final InputColumn<?> inputColumn, final Set<Object> resolvedSet) { if (!resolvedSet.add(inputColumn)) { logger.debug(LOG_MESSAGE_RECURSIVE_TRAVERSAL); return null; } if (inputColumn == null) { logger.warn("InputColumn was null, no originating table found"); return null; } if (inputColumn.isPhysicalColumn()) { return inputColumn.getPhysicalColumn().getTable(); } final InputColumnSourceJob inputColumnSource = findInputColumnSource(inputColumn); if (!resolvedSet.add(inputColumnSource)) { logger.debug(LOG_MESSAGE_RECURSIVE_TRAVERSAL); return null; } return findOriginatingTableOfSource(inputColumnSource, resolvedSet); }
final InputColumnSourceJob originalSourceJob = sourceColumnFinder.findInputColumnSource(originalInputColumn); if (originalSourceJob == null) { throw new IllegalStateException(
final InputColumn<?>[] inputColumns = ((InputColumnSinkJob) job).getInput(); for (final InputColumn<?> inputColumn : inputColumns) { final InputColumnSourceJob source = findInputColumnSource(inputColumn); if (source != null) { final boolean added = result.add(source);
/** * Gets all available {@link InputColumn}s of a particular type to map to a * particular {@link ComponentBuilder} * * @param componentBuilder * @param dataType * @return */ public List<InputColumn<?>> getAvailableInputColumns(final ComponentBuilder componentBuilder, final Class<?> dataType) { List<InputColumn<?>> result = getAvailableInputColumns(dataType); final SourceColumnFinder finder = new SourceColumnFinder(); finder.addSources(this); result = CollectionUtils.filter(result, inputColumn -> { if (inputColumn.isPhysicalColumn()) { return true; } final InputColumnSourceJob origin = finder.findInputColumnSource(inputColumn); if (origin == null) { return true; } if (origin == componentBuilder) { // exclude columns from the component itself return false; } final Set<Object> sourceComponents = finder.findAllSourceJobs(origin); return !sourceComponents.contains(componentBuilder); }); return result; }
final InputColumnSourceJob source = scf.findInputColumnSource(inputColumn); if (source != null) { addNodes(graph, scf, linkFactory, source, recurseCount); final InputColumn<?> inputColumn = (InputColumn<?>) vertex; if (inputColumn.isVirtualColumn()) { final InputColumnSourceJob source = scf.findInputColumnSource(inputColumn); if (source != null) { addNodes(graph, scf, linkFactory, source, recurseCount);