Search in sources :

Example 6 with Action

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);
}
Also used : Action(org.talend.dataprep.api.preparation.Action) PreparationActions(org.talend.dataprep.api.preparation.PreparationActions) PreparationTest(org.talend.dataprep.preparation.PreparationTest) PreparationRepositoryTest(org.talend.dataprep.preparation.store.PreparationRepositoryTest) Test(org.junit.Test)

Example 7 with Action

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));
            }
        }
    });
}
Also used : IntStream(java.util.stream.IntStream) ImplicitParameters(org.talend.dataprep.transformation.actions.common.ImplicitParameters) StringUtils(org.apache.commons.lang.StringUtils) DecimalFormat(java.text.DecimalFormat) Set(java.util.Set) HashMap(java.util.HashMap) DeleteColumn(org.talend.dataprep.transformation.actions.column.DeleteColumn) Collectors(java.util.stream.Collectors) List(java.util.List) Component(org.springframework.stereotype.Component) AppendStep(org.talend.dataprep.api.preparation.AppendStep) Map(java.util.Map) Action(org.talend.dataprep.api.preparation.Action) Action(org.talend.dataprep.api.preparation.Action) HashMap(java.util.HashMap) DecimalFormat(java.text.DecimalFormat)

Example 8 with Action

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;
}
Also used : Action(org.talend.dataprep.api.preparation.Action)

Example 9 with Action

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;
}
Also used : Action(org.talend.dataprep.api.preparation.Action) StepDiff(org.talend.dataprep.api.preparation.StepDiff) MixedContentMap(org.talend.dataprep.api.preparation.MixedContentMap) AppendStep(org.talend.dataprep.api.preparation.AppendStep)

Example 10 with Action

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;
}
Also used : TDPException(org.talend.dataprep.exception.TDPException) Action(org.talend.dataprep.api.preparation.Action) StringWriter(java.io.StringWriter) ExceptionContext(org.talend.daikon.exception.ExceptionContext) PreparationGetActions(org.talend.dataprep.command.preparation.PreparationGetActions) IOException(java.io.IOException)

Aggregations

Action (org.talend.dataprep.api.preparation.Action)27 Test (org.junit.Test)14 PreparationActions (org.talend.dataprep.api.preparation.PreparationActions)12 ArrayList (java.util.ArrayList)9 List (java.util.List)7 PreparationRepository (org.talend.dataprep.preparation.store.PreparationRepository)7 Preparation (org.talend.dataprep.api.preparation.Preparation)6 Step (org.talend.dataprep.api.preparation.Step)6 PersistentStep (org.talend.dataprep.preparation.store.PersistentStep)6 IOException (java.io.IOException)4 Collections (java.util.Collections)4 Stream (java.util.stream.Stream)4 ActionDefinition (org.talend.dataprep.api.action.ActionDefinition)4 RunnableAction (org.talend.dataprep.transformation.actions.common.RunnableAction)4 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)3 Arrays (java.util.Arrays)3 HashMap (java.util.HashMap)3 StringUtils (org.apache.commons.lang.StringUtils)3 InjectMocks (org.mockito.InjectMocks)3 Mock (org.mockito.Mock)3