protected boolean isProvidingColumn(final TransformedInputColumn<?> transformedInputColumn, final TransformerComponentBuilder<?> transformer) { for (final Object outputColumn : transformer.getOutputColumns()) { if (outputColumn.equals(transformedInputColumn)) { return true; } } return false; }
@Override public MutableInputColumn<?>[] getOutput() { return getOutputColumns().toArray(new MutableInputColumn<?>[0]); }
@Override public void onRemove(final TransformerComponentBuilder<?> transformerJobBuilder) { final List<MutableInputColumn<?>> outputColumns = transformerJobBuilder.getOutputColumns(); for (final MutableInputColumn<?> column : outputColumns) { handleRemovedColumn(column); } }
private List<MutableInputColumn<?>> safeGetOutputColumns( final TransformerComponentBuilder<?> transformerJobBuilder) { try { return _componentBuilder.getOutputColumns(); } catch (final Exception e) { logger.warn("Could not get outputColumns for transformer {}", transformerJobBuilder.getName(), e); return Collections.emptyList(); } }
@Override public void onRemove(final TransformerComponentBuilder<?> transformerJobBuilder) { final List<MutableInputColumn<?>> outputColumns = transformerJobBuilder.getOutputColumns(); for (final MutableInputColumn<?> column : outputColumns) { handleRemovedColumn(column); } }
/** * Gets an output column by name. * * @see #getOutputColumns() * * @param name * name of the output column * @return output column */ public MutableInputColumn<?> getOutputColumnByName(final String name) { if (StringUtils.isNullOrEmpty(name)) { return null; } final List<MutableInputColumn<?>> outputColumns = getOutputColumns(); for (final MutableInputColumn<?> inputColumn : outputColumns) { if (name.equals(inputColumn.getName())) { return inputColumn; } } return null; }
public List<InputColumn<?>> getAvailableInputColumns() { final List<InputColumn<?>> availableInputColumns = getAnalysisJobBuilder().getAvailableInputColumns(Object.class); if (getComponentBuilder() instanceof TransformerComponentBuilder) { // remove all the columns that are generated by the transformer // itself! final TransformerComponentBuilder<?> tjb = (TransformerComponentBuilder<?>) getComponentBuilder(); final List<MutableInputColumn<?>> outputColumns = tjb.getOutputColumns(); availableInputColumns.removeAll(outputColumns); } availableInputColumns.removeAll(_pickedInputColumns); return availableInputColumns; }
@Override public void onConfigurationChanged() { super.onConfigurationChanged(); // trigger getOutputColumns which will notify consumers in the case of // output changes if (isConfigured()) { getOutputColumns(); } final List<TransformerChangeListener> listeners = getAllListeners(); for (final TransformerChangeListener listener : listeners) { listener.onConfigurationChanged(this); } }
@Override protected void configure(final AnalysisJobBuilder analysisJobBuilder, final ComponentBuilder componentBuilder) { final Component component = componentBuilder.getComponentInstance(); if (component instanceof PrecedingComponentConsumer) { final LifeCycleHelper helper = new LifeCycleHelper(analysisJobBuilder.getConfiguration(), null, true); helper.assignProvidedProperties(componentBuilder.getDescriptor(), component); ((PrecedingComponentConsumer) component) .configureForTransformedData(analysisJobBuilder, _transformerJobBuilder.getDescriptor()); } final Set<ConfiguredPropertyDescriptor> inputProperties = componentBuilder.getDescriptor().getConfiguredPropertiesForInput(false); if (!inputProperties.isEmpty()) { final ConfiguredPropertyDescriptor property = inputProperties.iterator().next(); final List<InputColumn<?>> inputColumnsToAdd = new ArrayList<>(); inputColumnsToAdd.addAll(_transformerJobBuilder.getInputColumns()); final List<MutableInputColumn<?>> outputColumns = _transformerJobBuilder.getOutputColumns(); for (final MutableInputColumn<?> outputColumn : outputColumns) { if (!outputColumn.isHidden()) { inputColumnsToAdd.add(outputColumn); } } componentBuilder.addInputColumns(inputColumnsToAdd, property); } }
final TransformerType transformerType = (TransformerType) unconfiguredTransformerKey; final List<MutableInputColumn<?>> outputColumns = transformerBuilder.getOutputColumns(); final List<OutputType> output = transformerType.getOutput();
public TransformerJob toTransformerJob(final boolean validate, final AnalysisJobImmutabilizer immutabilizer) { if (validate && !isConfigured(true)) { throw new IllegalStateException("Transformer job is not correctly configured"); } final ComponentRequirement componentRequirement = immutabilizer.load(getComponentRequirement()); final OutputDataStreamJob[] outputDataStreamJobs = immutabilizer.load(getOutputDataStreamJobs(), validate); return new ImmutableTransformerJob(getName(), getDescriptor(), new ImmutableComponentConfiguration(getConfiguredProperties()), getOutputColumns(), componentRequirement, getMetadataProperties(), outputDataStreamJobs); }
final Table originatingTable = sourceColumnFinder.findOriginatingTable(tjb.getOutputColumns().get(0)); tables.remove(originatingTable); for (final Table otherTable : tables) { .addInputColumns(tjb.getInputColumns()).addInputColumns(tjb.getOutputColumns());
/** * Creates a component builder similar to the incoming {@link ComponentJob}. * Note that input (columns and requirements) will not be mapped since these * depend on the context of the {@link FilterJob} and may not be matched in * the {@link AnalysisJobBuilder}. * * @param componentJob * * @return the builder object for the specific component */ protected ComponentBuilder addComponent(final ComponentJob componentJob) { final ComponentDescriptor<?> descriptor = componentJob.getDescriptor(); final ComponentBuilder builder = addComponent(descriptor); builder.setName(componentJob.getName()); builder.setConfiguredProperties(componentJob.getConfiguration()); builder.setMetadataProperties(componentJob.getMetadataProperties()); if (componentJob instanceof InputColumnSourceJob) { final InputColumn<?>[] output = ((InputColumnSourceJob) componentJob).getOutput(); final TransformerComponentBuilder<?> transformerJobBuilder = (TransformerComponentBuilder<?>) builder; final List<MutableInputColumn<?>> outputColumns = transformerJobBuilder.getOutputColumns(); assert output.length == outputColumns.size(); for (int i = 0; i < output.length; i++) { final MutableInputColumn<?> mutableOutputColumn = outputColumns.get(i); mutableOutputColumn.setName(output[i].getName()); } } return builder; }
@SuppressWarnings("unchecked") final MutableInputColumn<String> customerNumberAsStringColumn = (MutableInputColumn<String>) ajb.addTransformer(ConvertToStringTransformer.class) .addInputColumn(customerNumberColumn).getOutputColumns().get(0);