private Stream<InputColumn<?>> getInputColumns(ComponentJob componentJob, ConfiguredPropertyDescriptor property) { final Object value = componentJob.getConfiguration().getProperty(property); if (value instanceof InputColumn) { return Arrays.stream(new InputColumn[] { (InputColumn<?>) value }); } if (value instanceof InputColumn[]) { Arrays.stream((InputColumn[]) value); } if (value instanceof List) { @SuppressWarnings("unchecked") final List<InputColumn<?>> list = (List<InputColumn<?>>) value; return list.stream(); } return Stream.empty(); } }
@SuppressWarnings("unchecked") private static <T> List<T> getProperties(final ComponentJob component, final ConfiguredPropertyDescriptor descriptor) { if (descriptor.isArray()) { return Arrays.asList(((T[]) component.getConfiguration().getProperty(descriptor))); } else { return Collections.singletonList((T) component.getConfiguration().getProperty(descriptor)); } }
/** * Gets the identifying input column of an {@link ComponentJob}, if there is * such a column. With an identifying input column, a externalizable * reference to the {@link ComponentJob} can be build, based on the * descriptor name, component name and the identifying column. * * @param componentJob * @return */ public static InputColumn<?> getIdentifyingInputColumn(final ComponentJob componentJob) { final ComponentDescriptor<?> descriptor = componentJob.getDescriptor(); final Set<ConfiguredPropertyDescriptor> inputProperties = descriptor.getConfiguredPropertiesForInput(false); if (inputProperties.size() != 1) { return null; } final ConfiguredPropertyDescriptor inputProperty = inputProperties.iterator().next(); final Object input = componentJob.getConfiguration().getProperty(inputProperty); if (input instanceof InputColumn) { return (InputColumn<?>) input; } else if (input instanceof InputColumn[]) { final InputColumn<?>[] inputColumns = (InputColumn[]) input; if (inputColumns.length != 1) { return null; } return inputColumns[0]; } return null; }
final LifeCycleHelper lch = new LifeCycleHelper((DataCleanerConfiguration) null, (AnalysisJob) null, false); lch.assignConfiguredProperties(descriptor, c, job.getConfiguration()); final String suggestedLabel = c.getSuggestedLabel(); if (!StringUtils.isNullOrEmpty(suggestedLabel)) {
/** * 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; }
componentJob.getConfiguration().getProperty(inputColumnProperty); final Object newInputColumnValue = findImportedInputColumns(originalInputColumnValue, componentBuilders, sourceColumnFinder);
.getConfiguration().getProperty(componentJob.getDescriptor().getConfiguredProperty( "Group column")) == null)) { logger.warn("Pattern finder analyzer doesn't support metrics if it has a Group column configured.");
private static void executeInternal(final RowProcessingConsumer consumer, final RowProcessingPublisher publisher, final LifeCycleHelper lifeCycleHelper) { // we synchronize to avoid a race condition where initialization // is on-going in one stream and therefore skipped in the other synchronized (consumer) { final int publisherCount = consumer.onPublisherInitialized(publisher); if (publisherCount == 1) { final ComponentConfiguration configuration = consumer.getComponentJob().getConfiguration(); final ComponentDescriptor<?> descriptor = consumer.getComponentJob().getDescriptor(); final Object component = consumer.getComponent(); lifeCycleHelper.assignConfiguredProperties(descriptor, component, configuration); lifeCycleHelper.assignProvidedProperties(descriptor, component); lifeCycleHelper.validate(descriptor, component); final Collection<ActiveOutputDataStream> activeOutputDataStreams = consumer.getActiveOutputDataStreams(); for (final ActiveOutputDataStream activeOutputDataStream : activeOutputDataStreams) { activeOutputDataStream.initialize(); final RowProcessingPublisher outputDataStreamPublisher = activeOutputDataStream.getPublisher(); for (final RowProcessingConsumer outputDataStreamConsumer : outputDataStreamPublisher .getConsumers()) { final LifeCycleHelper outputDataStreamLifeCycleHelper = outputDataStreamPublisher.getPublishers().getConsumerSpecificLifeCycleHelper(consumer); executeInternal(outputDataStreamConsumer, outputDataStreamPublisher, outputDataStreamLifeCycleHelper); } } lifeCycleHelper.initialize(descriptor, component); } } }