use of org.talend.dataprep.api.export.ExportParameters in project data-prep by Talend.
the class PreparationGetContentUrlGenerator method generateResultUrl.
@Override
public AsyncExecutionResult generateResultUrl(Object... args) {
// check pre-condition
Validate.notNull(args);
Validate.isTrue(args.length == 1);
Validate.isInstanceOf(ExportParameters.class, args[0]);
ExportParameters param = (ExportParameters) args[0];
URIBuilder builder = new URIBuilder();
builder.setPath("/api/preparations/" + param.getPreparationId() + "/content");
if (StringUtils.isNotEmpty(param.getStepId())) {
builder.setParameter("version", param.getStepId());
}
if (param.getFrom() != null) {
builder.setParameter("from", param.getFrom().name());
}
return new AsyncExecutionResult(builder.toString());
}
use of org.talend.dataprep.api.export.ExportParameters in project data-prep by Talend.
the class ExportParametersTest method noDataSetIdNorPreparationId.
@Test
public void noDataSetIdNorPreparationId() {
// given parameters without preparation not dataset id
ExportParameters params = new ExportParameters();
// when
Set<ConstraintViolation<ExportParameters>> constraintViolations = validator.validate(params);
// then 2 violations (dataset & preparation id are missing & column id is empty)
Assert.assertEquals(2, constraintViolations.size());
}
use of org.talend.dataprep.api.export.ExportParameters 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;
}
use of org.talend.dataprep.api.export.ExportParameters in project data-prep by Talend.
the class TransformationService method addPreparationInCache.
/**
* Add the following preparation in cache.
*
* @param preparation the preparation to cache.
* @param stepId the preparation step id.
*/
private void addPreparationInCache(Preparation preparation, String stepId) {
final ExportParameters exportParameters = new ExportParameters();
exportParameters.setPreparationId(preparation.getId());
exportParameters.setExportType("JSON");
exportParameters.setStepId(stepId);
exportParameters.setDatasetId(preparation.getDataSetId());
final StreamingResponseBody streamingResponseBody = executeSampleExportStrategy(exportParameters);
try {
// the result is not important here as it will be cached !
streamingResponseBody.writeTo(new NullOutputStream());
} catch (IOException e) {
throw new TDPException(UNEXPECTED_EXCEPTION, e);
}
}
use of org.talend.dataprep.api.export.ExportParameters in project data-prep by Talend.
the class ApplyPreparationExportStrategy method execute.
@Override
public StreamingResponseBody execute(ExportParameters parameters) {
final String formatName = parameters.getExportType();
final ExportFormat format = getFormat(formatName);
//
ExportUtils.setExportHeaders(//
parameters.getExportName(), //
parameters.getArguments().get(ExportFormat.PREFIX + CSVFormat.ParametersCSV.ENCODING), format);
return outputStream -> executeApplyPreparation(parameters, outputStream);
}
Aggregations