Search in sources :

Example 16 with PreparationActions

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));
}
Also used : InjectMocks(org.mockito.InjectMocks) Preparation(org.talend.dataprep.api.preparation.Preparation) Arrays(java.util.Arrays) TqlBuilder(org.talend.tql.api.TqlBuilder) Mock(org.mockito.Mock) BaseMaintenanceTest(org.talend.dataprep.maintenance.BaseMaintenanceTest) PersistentStep(org.talend.dataprep.preparation.store.PersistentStep) Test(org.junit.Test) Step(org.talend.dataprep.api.preparation.Step) PreparationRepository(org.talend.dataprep.preparation.store.PreparationRepository) ArrayList(java.util.ArrayList) Mockito(org.mockito.Mockito) List(java.util.List) Stream(java.util.stream.Stream) PreparationActions(org.talend.dataprep.api.preparation.PreparationActions) Action(org.talend.dataprep.api.preparation.Action) Collections(java.util.Collections) PersistentStep(org.talend.dataprep.preparation.store.PersistentStep) Action(org.talend.dataprep.api.preparation.Action) Preparation(org.talend.dataprep.api.preparation.Preparation) ArrayList(java.util.ArrayList) PreparationActions(org.talend.dataprep.api.preparation.PreparationActions) PersistentStep(org.talend.dataprep.preparation.store.PersistentStep) Step(org.talend.dataprep.api.preparation.Step) BaseMaintenanceTest(org.talend.dataprep.maintenance.BaseMaintenanceTest) Test(org.junit.Test)

Example 17 with PreparationActions

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();
    }
}
Also used : StepRowMetadata(org.talend.dataprep.api.preparation.StepRowMetadata) PreparationActions(org.talend.dataprep.api.preparation.PreparationActions) PersistentStep(org.talend.dataprep.preparation.store.PersistentStep) Step(org.talend.dataprep.api.preparation.Step)

Aggregations

PreparationActions (org.talend.dataprep.api.preparation.PreparationActions)17 Test (org.junit.Test)14 Action (org.talend.dataprep.api.preparation.Action)13 Step (org.talend.dataprep.api.preparation.Step)11 ArrayList (java.util.ArrayList)8 PersistentStep (org.talend.dataprep.preparation.store.PersistentStep)8 PreparationRepository (org.talend.dataprep.preparation.store.PreparationRepository)8 Preparation (org.talend.dataprep.api.preparation.Preparation)7 List (java.util.List)5 Stream (java.util.stream.Stream)5 Arrays (java.util.Arrays)4 Collections (java.util.Collections)4 InjectMocks (org.mockito.InjectMocks)4 Mock (org.mockito.Mock)4 Mockito (org.mockito.Mockito)4 BaseMaintenanceTest (org.talend.dataprep.maintenance.BaseMaintenanceTest)4 TqlBuilder (org.talend.tql.api.TqlBuilder)4 ServiceBaseTest (org.talend.ServiceBaseTest)3 RowMetadata (org.talend.dataprep.api.dataset.RowMetadata)2 DataSetRow (org.talend.dataprep.api.dataset.row.DataSetRow)2