use of org.talend.dataprep.api.preparation.Action in project data-prep by Talend.
the class FileSystemPreparationRepositoryTest method shouldListActionThatWasAdded.
@Test
public void shouldListActionThatWasAdded() {
final List<Action> actions = PreparationTest.getSimpleAction("uppercase", "column_name", "lastname");
PreparationActions expected = new PreparationActions(actions, versionService.version().getVersionId());
repository.add(expected);
final PreparationActions actual = repository.get(expected.id(), PreparationActions.class);
assertEquals(expected, actual);
}
use of org.talend.dataprep.api.preparation.Action in project data-prep by Talend.
the class ReorderStepsUtils method renameCreatedColumns.
/**
* Renames the created columns according to their order of creation starting from the minimum created column.
*
* @param appendSteps the specified list of append steps
*/
void renameCreatedColumns(List<AppendStep> appendSteps) {
final List<String> createdColumns = appendSteps.stream().flatMap(step -> step.getDiff().getCreatedColumns().stream()).collect(Collectors.toList());
if (createdColumns.isEmpty()) {
return;
}
// retrieve the minimum index
final int firstIndex = Integer.parseInt(createdColumns.stream().min(String::compareTo).get());
// map old created column names to the new ones
final DecimalFormat format = new DecimalFormat("0000");
Map<String, String> rename = new HashMap<>();
IntStream.range(0, createdColumns.size()).forEach(i -> {
rename.put(createdColumns.get(i), format.format(i + firstIndex));
});
// walk over the list of append steps and change names (id) of created columns
appendSteps.stream().forEach(step -> {
// first for created columns
List<String> renamedCreatedColumns = step.getDiff().getCreatedColumns().stream().map(s -> {
if (rename.containsKey(s)) {
return rename.get(s);
} else {
return s;
}
}).collect(Collectors.toList());
// then within actions
step.getDiff().setCreatedColumns(renamedCreatedColumns);
for (Action action : step.getActions()) {
final Map<String, String> parameters = action.getParameters();
final String columnId = parameters.get(ImplicitParameters.COLUMN_ID.getKey());
if (rename.containsKey(columnId)) {
parameters.put(ImplicitParameters.COLUMN_ID.getKey(), rename.get(columnId));
}
}
});
}
use of org.talend.dataprep.api.preparation.Action in project data-prep by Talend.
the class EntityBuilder method action.
public static Action action(String secondActionName, MixedContentMap secondActionParams) {
Action secondAction = new Action();
secondAction.setName(secondActionName);
secondAction.setParameters(secondActionParams);
return secondAction;
}
use of org.talend.dataprep.api.preparation.Action in project data-prep by Talend.
the class ReorderStepsUtilsTest method createAppendStep.
private static AppendStep createAppendStep(String usedColumnId, List<String> createdColumns) {
AppendStep firstStep = new AppendStep();
StepDiff firstStepDiff = new StepDiff();
firstStepDiff.setCreatedColumns(createdColumns);
firstStep.setDiff(firstStepDiff);
Action firstStepAction = new Action();
MixedContentMap parameters = new MixedContentMap();
parameters.put(ImplicitParameters.COLUMN_ID.getKey(), usedColumnId);
firstStepAction.setParameters(parameters);
firstStep.setActions(asList(firstStepAction));
return firstStep;
}
use of org.talend.dataprep.api.preparation.Action in project data-prep by Talend.
the class BaseExportStrategy method getActions.
/**
* Returns the actions for the preparation with <code>preparationId</code> between <code>startStepId</code> and
* <code>endStepId</code>.
*
* @param preparationId The preparation id, if <code>null</code> or blank, returns <code>{actions: []}</code>
* @param startStepId A step id that must exist in given preparation id.
* @param endStepId A step id that must exist in given preparation id.
* @return The actions that can be parsed by ActionParser.
* @see org.talend.dataprep.transformation.api.action.ActionParser
*/
protected String getActions(String preparationId, String startStepId, String endStepId) {
if (Step.ROOT_STEP.id().equals(startStepId)) {
return getActions(preparationId, endStepId);
}
String actions;
if (StringUtils.isBlank(preparationId)) {
actions = "{\"actions\": []}";
} else {
try {
final PreparationGetActions startStepActions = applicationContext.getBean(PreparationGetActions.class, preparationId, startStepId);
final PreparationGetActions endStepActions = applicationContext.getBean(PreparationGetActions.class, preparationId, endStepId);
final StringWriter actionsAsString = new StringWriter();
final Action[] startActions = mapper.readValue(startStepActions.execute(), Action[].class);
final Action[] endActions = mapper.readValue(endStepActions.execute(), Action[].class);
if (endActions.length > startActions.length) {
final Action[] filteredActions = (Action[]) ArrayUtils.subarray(endActions, startActions.length, endActions.length);
LOGGER.debug("Reduced actions list from {} to {} action(s)", endActions.length, filteredActions.length);
mapper.writeValue(actionsAsString, filteredActions);
} else {
LOGGER.debug("Unable to reduce list of actions (has {})", endActions.length);
mapper.writeValue(actionsAsString, endActions);
}
return "{\"actions\": " + actionsAsString + '}';
} catch (IOException e) {
final ExceptionContext context = ExceptionContext.build().put("id", preparationId).put("version", endStepId);
throw new TDPException(UNABLE_TO_READ_PREPARATION, e, context);
}
}
return actions;
}
Aggregations