private void failIfJobIsUnsupported(final AnalysisJob job) throws UnsupportedOperationException { try (AnalysisJobBuilder jobBuilder = new AnalysisJobBuilder(_configuration, job)) { if (!jobBuilder.isDistributable()) { throw new UnsupportedOperationException("Job is not distributable!"); } } } }
@Provides public AnalysisJobBuilder getAnalysisJobBuilder(final DataCleanerConfiguration configuration) { AnalysisJobBuilder ajb = _analysisJobBuilderRef.get(); if (ajb == null && _analysisJobBuilderRef instanceof MutableRef) { ajb = new AnalysisJobBuilder(configuration); final MutableRef<AnalysisJobBuilder> ref = (MutableRef<AnalysisJobBuilder>) _analysisJobBuilderRef; ref.set(ajb); } return ajb; }
public AnalysisJobBuilder withoutListeners() { final MutableAnalysisJobMetadata metadataClone = new MutableAnalysisJobMetadata(getAnalysisJobMetadata()); return new AnalysisJobBuilder(_configuration, _datastore, _datastoreConnection, metadataClone, _sourceColumns, _defaultRequirement, _transformedColumnIdGenerator, _transformerComponentBuilders, _filterComponentBuilders, _analyzerComponentBuilders, _parentBuilder); }
public static AnalysisJobBuilder copy(final AnalysisJobBuilder original) { final AnalysisJob analysisJob = original.getRootJobBuilder().withoutListeners().toAnalysisJob(false); return new AnalysisJobBuilder(original.getConfiguration(), analysisJob); }
final AnalysisJob jobCopy = analysisJobBuilder.toAnalysisJob(false); final AnalysisJobBuilder jobBuilderCopy = new AnalysisJobBuilder(analysisJobBuilder.getConfiguration(), jobCopy);
assert _outputDataStreams.contains(outputDataStream); final Table table = outputDataStream.getTable(); analysisJobBuilder = new AnalysisJobBuilder(_analysisJobBuilder.getConfiguration(), _analysisJobBuilder); analysisJobBuilder.setDatastore(new OutputDataStreamDatastore(outputDataStream)); analysisJobBuilder.addSourceColumns(table.getColumns());
public AnalysisJobBuilder create(final JobType job, final SourceColumnMapping sourceColumnMapping, final Map<String, String> variableOverrides) throws NoSuchDatastoreException { if (job == null) { throw new IllegalArgumentException("Job cannot be null"); } if (sourceColumnMapping != null && !sourceColumnMapping.isSatisfied()) { throw new IllegalArgumentException("Source column mapping is not satisfied!"); } final Map<String, String> variables = getVariables(job); overrideVariables(variables, variableOverrides); final JobMetadataType metadata = job.getJobMetadata(); if (metadata != null) { logger.info("Job name: {}", metadata.getJobName()); logger.info("Job version: {}", metadata.getJobVersion()); logger.info("Job description: {}", metadata.getJobDescription()); logger.info("Author: {}", metadata.getAuthor()); logger.info("Created date: {}", metadata.getCreatedDate()); logger.info("Updated date: {}", metadata.getUpdatedDate()); logger.info("Job metadata properties: {}", getMetadataProperties(metadata)); } final AnalysisJobBuilder builder = new AnalysisJobBuilder(_configuration); try { return create(job, sourceColumnMapping, metadata, variables, variableOverrides, builder); } catch (final RuntimeException e) { FileHelper.safeClose(builder); throw e; } }
@Override public void actionPerformed(final ActionEvent event) { final AnalysisJobBuilder ajb = new AnalysisJobBuilder(_configuration); ajb.setDatastore(_datastore); ajb.addSourceColumns(getColumns()); final QuickAnalysisStrategy quickAnalysisStrategy = QuickAnalysisStrategy.loadFromUserPreferences(_userPreferences); quickAnalysisStrategy.configureAnalysisJobBuilder(ajb); try { if (!ajb.isConfigured(true)) { throw new IllegalStateException("Unknown job configuration issue!"); } final Injector injector = Guice.createInjector(new DCModuleImpl(_dcModule, ajb)); final RunAnalysisActionListener actionListener = injector.getInstance(RunAnalysisActionListener.class); actionListener.actionPerformed(event); } catch (final Exception e) { WidgetUtils.showErrorMessage("Error", "Could not perform quick analysis on table " + _table.getName(), e); } }
@Override protected void run(final AnalysisJobBuilder analysisJobBuilder, final Action<AnalysisJobBuilder> executeAction, final AnalysisJobBuilderWindow analysisJobBuilderWindow) throws Exception { final DataCleanerConfiguration baseConfiguration = analysisJobBuilder.getConfiguration(); final DataCleanerConfigurationImpl configuration = new DataCleanerConfigurationImpl(baseConfiguration) .withEnvironment(new DataCleanerEnvironmentImpl(baseConfiguration.getEnvironment()) .withTaskRunner(new SingleThreadedTaskRunner())); final AnalysisJob jobCopy = analysisJobBuilder.toAnalysisJob(false); final AnalysisJobBuilder jobBuilderCopy = new AnalysisJobBuilder(configuration, jobCopy); executeAction.run(jobBuilderCopy); } });
private ActionListener createWriteDataActionListener(final Class<? extends Analyzer<?>> analyzerClass, final String filenameExtension) { return e -> { final AnalysisJob copyAnalysisJob = _analysisJobBuilder.toAnalysisJob(false); final AnalysisJobBuilder copyAnalysisJobBuilder = new AnalysisJobBuilder(_analysisJobBuilder.getConfiguration(), copyAnalysisJob); final AnalyzerComponentBuilder<? extends Analyzer<?>> analyzer = copyAnalysisJobBuilder.addAnalyzer(analyzerClass); analyzer.addInputColumns(copyAnalysisJobBuilder.getAvailableInputColumns(Object.class)); final String formattedDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); final FileResource resource = createResource("datacleaner-" + formattedDate + "-output", filenameExtension); if (analyzerClass == CreateExcelSpreadsheetAnalyzer.class) { final File file = resource.getFile(); analyzer.setConfiguredProperty("File", file); } else { analyzer.setConfiguredProperty("File", resource); } final ConfiguredPropertyDescriptor sheetNameProperty = analyzer.getDescriptor().getConfiguredProperty("Sheet name"); if (sheetNameProperty != null) { analyzer.setConfiguredProperty(sheetNameProperty, "data"); } final RunAnalysisActionListener runAnalysis = new RunAnalysisActionListener(_dcModule, copyAnalysisJobBuilder); ExecuteJobWithoutAnalyzersDialog.this.close(); runAnalysis.run(); }; }
@Override public void actionPerformed(final ActionEvent e) { final AnalysisJobBuilder ajb = new AnalysisJobBuilder(_configuration); ajb.setDatastore(_datastore); ajb.addSourceColumns(_table.getColumns());
@Override public void actionPerformed(final ActionEvent e) { final AnalysisJobBuilder ajb = new AnalysisJobBuilder(_configuration); ajb.setDatastore(_datastore); ajb.addSourceColumns(_table.getColumns());
/** * Creates a slave job by copying the original job and adding a * {@link MaxRowsFilter} as a default requirement. * * @param job * @param firstRow * @param maxRows * @return */ private AnalysisJob buildSlaveJob(final AnalysisJob job, final int slaveJobIndex, final int firstRow, final int maxRows) { logger.info("Building slave job {} with firstRow={} and maxRow={}", slaveJobIndex + 1, firstRow, maxRows); try (AnalysisJobBuilder jobBuilder = new AnalysisJobBuilder(_configuration, job)) { final FilterComponentBuilder<MaxRowsFilter, Category> maxRowsFilter = jobBuilder.addFilter(MaxRowsFilter.class); maxRowsFilter.getComponentInstance().setFirstRow(firstRow); maxRowsFilter.getComponentInstance().setMaxRows(maxRows); final boolean naturalRecordOrderConsistent = jobBuilder.getDatastore().getPerformanceCharacteristics().isNaturalRecordOrderConsistent(); if (!naturalRecordOrderConsistent) { final InputColumn<?> orderColumn = findOrderByColumn(jobBuilder); maxRowsFilter.getComponentInstance().setOrderColumn(orderColumn); } jobBuilder.setDefaultRequirement(maxRowsFilter, MaxRowsFilter.Category.VALID); // in assertion/test mode do an early validation assert jobBuilder.isConfigured(true); return jobBuilder.toAnalysisJob(); } }
_analysisJobBuilder = new AnalysisJobBuilder(_configuration); } else { _analysisJobBuilder = analysisJobBuilder;