use of org.talend.dataprep.preparation.store.PreparationRepository in project data-prep by Talend.
the class PreparationConversions method toStudioPreparation.
private PreparationSummary toStudioPreparation(Preparation source, PreparationSummary target, ApplicationContext applicationContext) {
if (target.getOwner() == null) {
final Security security = applicationContext.getBean(Security.class);
Owner owner = new Owner(security.getUserId(), security.getUserDisplayName(), StringUtils.EMPTY);
target.setOwner(owner);
}
final PreparationRepository preparationRepository = applicationContext.getBean(PreparationRepository.class);
final ActionRegistry actionRegistry = applicationContext.getBean(ActionRegistry.class);
// Get preparation actions
PreparationActions prepActions = preparationRepository.get(source.getHeadId(), PreparationActions.class);
if (prepActions != null) {
List<Action> actions = prepActions.getActions();
boolean allowDistributedRun = true;
for (Action action : actions) {
final ActionDefinition actionDefinition = actionRegistry.get(action.getName());
if (actionDefinition.getBehavior().contains(ActionDefinition.Behavior.FORBID_DISTRIBUTED)) {
// Disallow distributed run
allowDistributedRun = false;
break;
}
}
target.setAllowDistributedRun(allowDistributedRun);
}
return target;
}
use of org.talend.dataprep.preparation.store.PreparationRepository in project data-prep by Talend.
the class PreparationConversions method toPreparationMessage.
private PreparationMessage toPreparationMessage(Preparation source, PreparationMessage target, ApplicationContext applicationContext) {
final PreparationRepository preparationRepository = applicationContext.getBean(PreparationRepository.class);
final ActionRegistry actionRegistry = applicationContext.getBean(ActionRegistry.class);
// Steps diff metadata
final List<StepDiff> diffs = //
source.getSteps().stream().filter(//
step -> !Step.ROOT_STEP.id().equals(step.id())).map(//
Step::getDiff).collect(toList());
target.setDiff(diffs);
// Actions
if (source.getHeadId() != null) {
// Get preparation actions
final String headId = source.getHeadId();
final Step head = preparationRepository.get(headId, Step.class);
if (head != null) {
final PreparationActions prepActions = preparationRepository.get(head.getContent(), PreparationActions.class);
if (prepActions != null) {
final List<Action> actions = prepActions.getActions();
target.setActions(prepActions.getActions());
// Allow distributed run
boolean allowDistributedRun = true;
for (Action action : actions) {
final ActionDefinition actionDefinition = actionRegistry.get(action.getName());
if (actionDefinition.getBehavior().contains(ActionDefinition.Behavior.FORBID_DISTRIBUTED)) {
allowDistributedRun = false;
break;
}
}
target.setAllowDistributedRun(allowDistributedRun);
// no need to have lock information (and may also break StandAlonePreparationParser...)
target.setLock(null);
// Actions metadata
if (actionRegistry == null) {
LOGGER.debug("No action metadata available, unable to serialize action metadata for preparation {}.", source.id());
} else {
List<ActionForm> actionDefinitions = //
actions.stream().map(a -> //
actionRegistry.get(a.getName()).adapt(//
ScopeCategory.from(a.getParameters().get(ImplicitParameters.SCOPE.getKey())))).map(//
a -> a.getActionForm(getLocale())).map(//
PreparationConversions::disallowColumnCreationChange).collect(Collectors.toList());
target.setMetadata(actionDefinitions);
}
}
} else {
LOGGER.warn("Head step #{} for preparation #{} does not exist.", headId, source.id());
target.setActions(Collections.emptyList());
target.setSteps(Collections.singletonList(Step.ROOT_STEP));
target.setMetadata(Collections.emptyList());
}
} else {
target.setActions(Collections.emptyList());
target.setSteps(Collections.singletonList(Step.ROOT_STEP));
target.setMetadata(Collections.emptyList());
}
return target;
}
use of org.talend.dataprep.preparation.store.PreparationRepository in project data-prep by Talend.
the class ActionNewColumnToggleCommonTest method shouldNotUpdateSteps.
@Test
public void shouldNotUpdateSteps() {
// given
final PreparationRepository repository = mock(PreparationRepository.class);
final PreparationActions actions = mock(PreparationActions.class);
final PersistentStep step = mock(PersistentStep.class);
final Action action = mock(Action.class);
List<Action> actionsList = new ArrayList<>();
actionsList.add(action);
when(step.id()).thenReturn("step-1");
when(actions.getActions()).thenReturn(actionsList);
when(action.getName()).thenReturn("action");
when(repository.list(eq(PreparationActions.class))).thenReturn(Stream.of(actions));
// Twice "action-1" to pass root preparation action filter.
// same id
when(actions.id()).thenReturn("actions-1", "actions-1", "actions-1");
when(repository.list(eq(PersistentStep.class), any())).thenReturn(Stream.of(step));
// when
ActionNewColumnToggleCommon.upgradeActions(repository);
// then
verify(repository, times(1)).add(eq(actions));
verify(repository, never()).add(eq(step));
verify(step, never()).setContent(any());
}
use of org.talend.dataprep.preparation.store.PreparationRepository in project data-prep by Talend.
the class ActionNewColumnToggleCommonTest method shouldNotUpdateRootStep.
@Test
public void shouldNotUpdateRootStep() {
// given
final PreparationRepository repository = mock(PreparationRepository.class);
final PreparationActions actions = mock(PreparationActions.class);
final PersistentStep step = mock(PersistentStep.class);
final Action action = mock(Action.class);
List<Action> actionsList = new ArrayList<>();
actionsList.add(action);
// Listed step is root step
when(step.id()).thenReturn(Step.ROOT_STEP.id());
when(actions.getActions()).thenReturn(actionsList);
when(action.getName()).thenReturn("action");
when(repository.list(eq(PreparationActions.class))).thenReturn(Stream.of(actions));
when(actions.id()).thenReturn("actions-1", "actions-2");
when(repository.list(eq(PersistentStep.class), any())).thenReturn(Stream.of(step));
// when
ActionNewColumnToggleCommon.upgradeActions(repository);
// then
verify(repository, times(1)).add(eq(actions));
verify(repository, never()).add(eq(step));
verify(step, never()).setContent(any());
}
use of org.talend.dataprep.preparation.store.PreparationRepository in project data-prep by Talend.
the class ActionNewColumnToggleCommonTest method shouldUpdateSteps.
@Test
public void shouldUpdateSteps() {
// given
final PreparationRepository repository = mock(PreparationRepository.class);
final PreparationActions actions = mock(PreparationActions.class);
final PersistentStep step = mock(PersistentStep.class);
final Action action = mock(Action.class);
List<Action> actionsList = new ArrayList<>();
actionsList.add(action);
when(step.id()).thenReturn("step-1");
when(actions.getActions()).thenReturn(actionsList);
when(action.getName()).thenReturn("action");
when(repository.list(eq(PreparationActions.class))).thenReturn(Stream.of(actions));
// Twice "action-1" to pass root preparation action filter.
when(actions.id()).thenReturn("actions-1", "actions-1", "actions-2");
when(repository.list(eq(PersistentStep.class), any())).thenReturn(Stream.of(step));
// when
ActionNewColumnToggleCommon.upgradeActions(repository);
// then
verify(repository, times(1)).add(eq(actions));
verify(repository, times(1)).add(eq(step));
verify(step, times(1)).setContent(eq("actions-2"));
}
Aggregations