Search in sources :

Example 6 with DataSetGetMetadata

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;
}
Also used : StepDiff(org.talend.dataprep.api.preparation.StepDiff) RowMetadata(org.talend.dataprep.api.dataset.RowMetadata) DataSetGetMetadata(org.talend.dataprep.command.dataset.DataSetGetMetadata) DataSetMetadata(org.talend.dataprep.api.dataset.DataSetMetadata)

Example 7 with DataSetGetMetadata

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;
}
Also used : TDPException(org.talend.dataprep.exception.TDPException) Preparation(org.talend.dataprep.api.preparation.Preparation) ExportParameters(org.talend.dataprep.api.export.ExportParameters) TransformationMetadataCacheKey(org.talend.dataprep.cache.TransformationMetadataCacheKey) TDPException(org.talend.dataprep.exception.TDPException) DataSetMetadata(org.talend.dataprep.api.dataset.DataSetMetadata) DataSetGetMetadata(org.talend.dataprep.command.dataset.DataSetGetMetadata) NullOutputStream(org.apache.commons.io.output.NullOutputStream) VolumeMetered(org.talend.dataprep.metrics.VolumeMetered) ApiOperation(io.swagger.annotations.ApiOperation)

Aggregations

DataSetGetMetadata (org.talend.dataprep.command.dataset.DataSetGetMetadata)7 DataSetMetadata (org.talend.dataprep.api.dataset.DataSetMetadata)5 DataSet (org.talend.dataprep.api.dataset.DataSet)3 ExportParameters (org.talend.dataprep.api.export.ExportParameters)3 DataSetGet (org.talend.dataprep.command.dataset.DataSetGet)3 TDPException (org.talend.dataprep.exception.TDPException)3 JsonParser (com.fasterxml.jackson.core.JsonParser)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)2 ApiOperation (io.swagger.annotations.ApiOperation)2 InputStream (java.io.InputStream)2 InputStreamReader (java.io.InputStreamReader)2 UTF_8 (java.nio.charset.StandardCharsets.UTF_8)2 NullOutputStream (org.apache.commons.io.output.NullOutputStream)2 StringUtils (org.apache.commons.lang.StringUtils)2 Component (org.springframework.stereotype.Component)2 StreamingResponseBody (org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody)2 RowMetadata (org.talend.dataprep.api.dataset.RowMetadata)2 TransformationCacheKey (org.talend.dataprep.cache.TransformationCacheKey)2 TransformationErrorCodes (org.talend.dataprep.exception.error.TransformationErrorCodes)2 ExportFormat (org.talend.dataprep.format.export.ExportFormat)2