use of org.talend.dataprep.command.dataset.DataSetGetMetadata in project data-prep by Talend.
the class TransformationService method getCreatedColumns.
/**
* Compare the results of 2 sets of actions, and return the diff metadata Ex : the created columns ids
*/
private StepDiff getCreatedColumns(final PreviewParameters previewParameters) {
final DataSetGetMetadata dataSetGetMetadata = context.getBean(DataSetGetMetadata.class, previewParameters.getDataSetId());
DataSetMetadata dataSetMetadata = dataSetGetMetadata.execute();
StepDiff stepDiff;
if (dataSetGetMetadata.isSuccessfulExecution() && dataSetMetadata != null) {
RowMetadata metadataBase = dataSetMetadata.getRowMetadata();
RowMetadata metadataAfter = metadataBase.clone();
applyActionsOnMetadata(metadataBase, previewParameters.getBaseActions());
applyActionsOnMetadata(metadataAfter, previewParameters.getNewActions());
metadataAfter.diff(metadataBase);
List<String> createdColumnIds = metadataAfter.getColumns().stream().filter(c -> Flag.NEW.getValue().equals(c.getDiffFlagValue())).map(ColumnMetadata::getId).collect(Collectors.toList());
stepDiff = new StepDiff();
stepDiff.setCreatedColumns(createdColumnIds);
} else {
stepDiff = null;
// maybe throw an exception...
}
return stepDiff;
}
use of org.talend.dataprep.command.dataset.DataSetGetMetadata in project data-prep by Talend.
the class TransformationService method executeMetadata.
@RequestMapping(value = "/apply/preparation/{preparationId}/{stepId}/metadata", method = GET)
@ApiOperation(value = "Run the transformation given the provided export parameters", notes = "This operation transforms the dataset or preparation using parameters in export parameters.")
@VolumeMetered
@AsyncOperation(//
conditionalClass = GetPrepMetadataAsyncCondition.class, //
resultUrlGenerator = PrepMetadataGetContentUrlGenerator.class, executionIdGeneratorClass = PrepMetadataExecutionIdGenerator.class)
public DataSetMetadata executeMetadata(@PathVariable("preparationId") @AsyncParameter String preparationId, @PathVariable("stepId") @AsyncParameter String stepId) {
LOG.debug("getting preparation metadata for #{}, step {}", preparationId, stepId);
final Preparation preparation = getPreparation(preparationId);
if (preparation.getSteps().size() > 1) {
String headId = "head".equalsIgnoreCase(stepId) ? preparation.getHeadId() : stepId;
final TransformationMetadataCacheKey cacheKey = cacheKeyGenerator.generateMetadataKey(preparationId, headId, HEAD);
// No metadata in cache, recompute it
if (!contentCache.has(cacheKey)) {
try {
LOG.debug("Metadata not available for preparation '{}' at step '{}'", preparationId, headId);
ExportParameters parameters = new ExportParameters();
parameters.setPreparationId(preparationId);
parameters.setExportType("JSON");
parameters.setStepId(headId);
parameters.setFrom(HEAD);
// we regenerate cache
parameters = exportParametersUtil.populateFromPreparationExportParameter(parameters);
preparationExportStrategy.performPreparation(parameters, new NullOutputStream());
} catch (Exception e) {
throw new TDPException(TransformationErrorCodes.METADATA_NOT_FOUND, e);
}
}
// }
if (contentCache.has(cacheKey)) {
try (InputStream stream = contentCache.get(cacheKey)) {
return mapper.readerFor(DataSetMetadata.class).readValue(stream);
} catch (IOException e) {
throw new TDPException(CommonErrorCodes.UNEXPECTED_EXCEPTION, e);
}
}
} else {
LOG.debug("No step in preparation '{}', falls back to get dataset metadata (id: {})", preparationId, preparation.getDataSetId());
DataSetGetMetadata getMetadata = context.getBean(DataSetGetMetadata.class, preparation.getDataSetId());
return getMetadata.execute();
}
return null;
}
Aggregations