use of org.talend.dataprep.api.preparation.PreparationActions in project data-prep by Talend.
the class PreparationCleanerTest method shouldRemovePreparationActions_noPreparation.
@Test
public void shouldRemovePreparationActions_noPreparation() throws Exception {
// given
final String version = "1.2.3";
final PreparationActions content = new PreparationActions();
List<Action> actions = new ArrayList<>();
content.append(actions);
content.setAppVersion(version);
when(repository.list(PreparationActions.class)).thenReturn(Stream.of(content));
when(repository.get(content.id(), PreparationActions.class)).thenReturn(content);
// 2 preparations, with each, one step that shares the same action
final Step stepFirstPreparation = new Step(Step.ROOT_STEP.getId(), content.getId(), version);
final Step stepSecondPreparation = new Step(Step.ROOT_STEP.getId(), content.getId(), version);
// add the steps to the repository
when(repository.list(Step.class)).thenReturn(Stream.of(stepFirstPreparation, stepSecondPreparation));
when(repository.list(eq(PersistentStep.class))).thenReturn(Stream.of(stepFirstPreparation, stepSecondPreparation).map(s -> {
final PersistentStep persistentStep = new PersistentStep();
persistentStep.setId(s.id());
persistentStep.setContent(s.getContent());
return persistentStep;
}));
Preparation firstPreparation = new Preparation("1", null, stepFirstPreparation.getId(), version);
firstPreparation.setSteps(Collections.singletonList(stepFirstPreparation));
Preparation secondPreparation = new Preparation("2", null, stepSecondPreparation.getId(), version);
secondPreparation.setSteps(Collections.singletonList(stepSecondPreparation));
// when
when(repository.exist(eq(PersistentStep.class), eq(TqlBuilder.eq("contentId", content.id())))).thenReturn(false);
// Remove first and second preparations
when(repository.list(Preparation.class)).thenReturn(Stream.empty());
cleaner.removeOrphanSteps();
// then
// 2 steps content
verify(repository, times(2)).remove(eq(content));
}
use of org.talend.dataprep.api.preparation.PreparationActions in project data-prep by Talend.
the class PreparationCleaner method removeCurrentOrphanSteps.
/**
* Remove all orphan steps in preparation repository.
*/
public void removeCurrentOrphanSteps() {
securityProxy.asTechnicalUser();
try {
getCurrentOrphanSteps().forEach(step -> {
// Remove step
final Step stepToRemove = new Step();
stepToRemove.setId(step.getId());
repository.remove(stepToRemove);
// Remove actions linked to step
// if this step re-use an existing actions we don't delete the actions
boolean criterion = repository.exist(PersistentStep.class, eq("contentId", step.getContent()));
if (criterion) {
LOGGER.debug("Don't removing step content {} it still used by another step.", step.getContent());
} else {
LOGGER.debug("Removing step content {}.", step.getContent());
final PreparationActions preparationActionsToRemove = new PreparationActions();
preparationActionsToRemove.setId(step.getContent());
repository.remove(preparationActionsToRemove);
}
// Remove metadata linked to step
final StepRowMetadata stepRowMetadataToRemove = new StepRowMetadata();
stepRowMetadataToRemove.setId(stepToRemove.getRowMetadata());
repository.remove(stepRowMetadataToRemove);
});
} finally {
securityProxy.releaseIdentity();
}
}
Aggregations