use of org.talend.dataprep.api.preparation.Preparation in project data-prep by Talend.
the class OptimizedExportStrategyTest method testAcceptKO_noStepId.
@Test
public void testAcceptKO_noStepId() throws Exception {
// Given
preparationRepository.add(new Preparation("prep-1234", "1234", Step.ROOT_STEP.id(), "0.1"));
ExportParameters exportParameters = new ExportParameters();
exportParameters.setPreparationId("prep-1234");
// Then
assertFalse(optimizedExportStrategy.accept(exportParameters));
}
use of org.talend.dataprep.api.preparation.Preparation in project data-prep by Talend.
the class OptimizedExportStrategy method performOptimizedTransform.
private void performOptimizedTransform(ExportParameters parameters, OutputStream outputStream) throws IOException {
// Initial check
final OptimizedPreparationInput optimizedPreparationInput = new OptimizedPreparationInput(parameters).invoke();
if (optimizedPreparationInput == null) {
throw new IllegalStateException("Unable to use this strategy (call accept() before calling this).");
}
final String preparationId = parameters.getPreparationId();
final String dataSetId = optimizedPreparationInput.getDataSetId();
final TransformationCacheKey transformationCacheKey = optimizedPreparationInput.getTransformationCacheKey();
final DataSetMetadata metadata = optimizedPreparationInput.getMetadata();
final String previousVersion = optimizedPreparationInput.getPreviousVersion();
final String version = optimizedPreparationInput.getVersion();
final ExportFormat format = getFormat(parameters.getExportType());
// Get content from previous step
try (JsonParser parser = mapper.getFactory().createParser(new InputStreamReader(contentCache.get(transformationCacheKey), UTF_8))) {
// Create dataset
final DataSet dataSet = mapper.readerFor(DataSet.class).readValue(parser);
dataSet.setMetadata(metadata);
// get the actions to apply (no preparation ==> dataset export ==> no actions)
final String actions = getActions(preparationId, previousVersion, version);
final PreparationMessage preparation = getPreparation(preparationId);
preparation.setSteps(getMatchingSteps(preparation.getSteps(), previousVersion, version));
LOGGER.debug("Running optimized strategy for preparation {} @ step #{}", preparationId, version);
// create tee to broadcast to cache + service output
final TransformationCacheKey key = //
cacheKeyGenerator.generateContentKey(//
dataSetId, //
preparationId, //
version, //
parameters.getExportType(), //
parameters.getFrom(), //
parameters.getArguments(), //
parameters.getFilter());
LOGGER.debug("Cache key: " + key.getKey());
LOGGER.debug("Cache key details: " + key.toString());
try (final TeeOutputStream tee = new TeeOutputStream(outputStream, contentCache.put(key, ContentCache.TimeToLive.DEFAULT))) {
final Configuration configuration = //
Configuration.builder().args(//
parameters.getArguments()).outFilter(//
rm -> filterService.build(parameters.getFilter(), rm)).sourceType(parameters.getFrom()).format(//
format.getName()).actions(//
actions).preparation(//
preparation).stepId(//
version).volume(//
Configuration.Volume.SMALL).output(//
tee).limit(//
limit).build();
factory.get(configuration).buildExecutable(dataSet, configuration).execute();
tee.flush();
} catch (Throwable e) {
// NOSONAR
contentCache.evict(key);
throw e;
}
} catch (TDPException e) {
throw e;
} catch (Exception e) {
throw new TDPException(TransformationErrorCodes.UNABLE_TO_TRANSFORM_DATASET, e);
}
}
use of org.talend.dataprep.api.preparation.Preparation in project data-prep by Talend.
the class PreparationExportStrategyTest method configurePreparation.
private void configurePreparation(Preparation preparation, String preparationId, String stepId) throws IOException {
final StringWriter preparationAsString = new StringWriter();
mapper.writerFor(Preparation.class).writeValue(preparationAsString, preparation);
when(preparationDetailsGet.execute()).thenReturn(new ByteArrayInputStream(preparationAsString.toString().getBytes()));
when(applicationContext.getBean(eq(PreparationDetailsGet.class), eq(preparationId), eq(stepId))).thenReturn(preparationDetailsGet);
}
use of org.talend.dataprep.api.preparation.Preparation in project data-prep by Talend.
the class AddAllPreparationsTaskToHome method run.
/**
* @see UpgradeTask#run()
*/
@Override
public void run() {
final Stream<Preparation> preparations = preparationRepository.list(Preparation.class);
final String homeId = folderRepository.getHome().getId();
preparations.forEach(p -> {
folderRepository.addFolderEntry(new FolderEntry(FolderContentType.PREPARATION, p.id()), homeId);
LOG.debug("preparation #{} added to home", p.getId());
});
LOG.debug("All preparations were added to the home folder.");
}
use of org.talend.dataprep.api.preparation.Preparation in project data-prep by Talend.
the class PreparationCleanerTest method removeOrphanSteps_should_not_remove_step_that_still_belongs_to_a_preparation.
@Test
public void removeOrphanSteps_should_not_remove_step_that_still_belongs_to_a_preparation() {
// given
final String version = "1.2.3";
final Step firstStep = new Step(Step.ROOT_STEP.id(), "first", version);
final Step secondStep = new Step(firstStep.id(), "second", version);
final Step thirdStep = new Step(secondStep.id(), "third", version);
when(repository.list(eq(Step.class))).thenReturn(Stream.of(firstStep, secondStep, thirdStep));
when(repository.list(eq(PersistentStep.class))).thenReturn(Stream.of(firstStep, secondStep, thirdStep).map(s -> {
final PersistentStep persistentStep = new PersistentStep();
persistentStep.setId(s.id());
persistentStep.setContent(s.getContent());
return persistentStep;
}));
final Preparation firstPreparation = new Preparation("#458", "1", firstStep.id(), version);
firstPreparation.setSteps(Collections.singletonList(firstStep));
final Preparation secondPreparation = new Preparation("#5428", "2", thirdStep.id(), version);
secondPreparation.setSteps(Arrays.asList(thirdStep, secondStep, firstStep));
when(repository.list(eq(Preparation.class))).thenReturn(Stream.of(firstPreparation, secondPreparation));
// when
cleaner.removeOrphanSteps();
// then
verify(repository, never()).remove(eq(firstStep));
verify(repository, never()).remove(eq(secondStep));
verify(repository, never()).remove(eq(thirdStep));
}
Aggregations