diff --git a/src/main/java/edu/stanford/protege/webprotege/bulkop/MoveToParentActionHandler.java b/src/main/java/edu/stanford/protege/webprotege/bulkop/MoveToParentActionHandler.java index 4181f9771..ee972a8db 100644 --- a/src/main/java/edu/stanford/protege/webprotege/bulkop/MoveToParentActionHandler.java +++ b/src/main/java/edu/stanford/protege/webprotege/bulkop/MoveToParentActionHandler.java @@ -2,21 +2,16 @@ import com.google.common.collect.ImmutableSet; import edu.stanford.protege.webprotege.access.AccessManager; -import edu.stanford.protege.webprotege.dispatch.AbstractProjectActionHandler; -import edu.stanford.protege.webprotege.icd.ReleasedClassesChecker; -import edu.stanford.protege.webprotege.icd.hierarchy.ClassHierarchyRetiredClassDetector; +import edu.stanford.protege.webprotege.change.ChangeApplicationResult; +import edu.stanford.protege.webprotege.change.ChangeListGenerator; +import edu.stanford.protege.webprotege.change.HasApplyChanges; +import edu.stanford.protege.webprotege.dispatch.AbstractProjectChangeHandler; import edu.stanford.protege.webprotege.ipc.ExecutionContext; -import edu.stanford.protege.webprotege.linearization.LinearizationManager; -import edu.stanford.protege.webprotege.project.chg.ChangeManager; -import org.jetbrains.annotations.NotNull; -import org.semanticweb.owlapi.model.*; -import org.slf4j.*; +import org.semanticweb.owlapi.model.OWLClass; +import org.semanticweb.owlapi.model.OWLEntity; import javax.annotation.Nonnull; import javax.inject.Inject; -import java.util.Set; -import java.util.concurrent.ExecutionException; -import java.util.stream.Stream; import static com.google.common.collect.ImmutableSet.toImmutableSet; @@ -25,39 +20,17 @@ * Stanford Center for Biomedical Informatics Research * 25 Sep 2018 */ -public class MoveToParentActionHandler extends AbstractProjectActionHandler { - - - private final Logger logger = LoggerFactory.getLogger(MoveToParentActionHandler.class); +public class MoveToParentActionHandler extends AbstractProjectChangeHandler { @Nonnull private final MoveClassesChangeListGeneratorFactory factory; - @Nonnull - private final ReleasedClassesChecker releasedClassesChecker; - - @Nonnull - private final ClassHierarchyRetiredClassDetector retiredAncestorDetector; - - @Nonnull - private final ChangeManager changeManager; - - @Nonnull - private final LinearizationManager linearizationManager; - @Inject public MoveToParentActionHandler(@Nonnull AccessManager accessManager, - @Nonnull MoveClassesChangeListGeneratorFactory factory, - @Nonnull ReleasedClassesChecker releasedClassesChecker, - @Nonnull ClassHierarchyRetiredClassDetector retiredAncestorDetector, - @Nonnull ChangeManager changeManager, - @Nonnull LinearizationManager linearizationManager) { - super(accessManager); + @Nonnull HasApplyChanges applyChanges, + @Nonnull MoveClassesChangeListGeneratorFactory factory) { + super(accessManager, applyChanges); this.factory = factory; - this.releasedClassesChecker = releasedClassesChecker; - this.retiredAncestorDetector = retiredAncestorDetector; - this.changeManager = changeManager; - this.linearizationManager = linearizationManager; } @Nonnull @@ -66,45 +39,19 @@ public Class getActionClass() { return MoveEntitiesToParentAction.class; } - @NotNull @Override - public MoveEntitiesToParentResult execute(@NotNull MoveEntitiesToParentAction action, @NotNull ExecutionContext executionContext) { - if (isNotOwlClass(action.entity())) { - return new MoveEntitiesToParentResult(false); + protected ChangeListGenerator getChangeListGenerator(MoveEntitiesToParentAction action, ExecutionContext executionContext) { + if(action.entity().isOWLClass()) { + ImmutableSet clses = action.entities().stream().map(OWLEntity::asOWLClass).collect(toImmutableSet()); + return factory.create(action.changeRequestId(), clses, action.entity().asOWLClass(), action.commitMessage()); } - var isDestinationRetiredClass = false; - - var isAnyClassReleased = action.entities().stream().anyMatch(releasedClassesChecker::isReleased); - - if (isAnyClassReleased) { - isDestinationRetiredClass = this.retiredAncestorDetector.isRetired(action.entity().asOWLClass()); - if (isDestinationRetiredClass) { - return new MoveEntitiesToParentResult(isDestinationRetiredClass); - } - } - - ImmutableSet clses = action.entities().stream().map(OWLEntity::asOWLClass).collect(toImmutableSet()); - var changeListGenerator = factory.create(action.changeRequestId(), clses, action.entity().asOWLClass(), action.commitMessage()); - changeManager.applyChanges(executionContext.userId(), changeListGenerator); - - clses.stream() - .flatMap(cls -> Stream.of(linearizationManager.mergeLinearizationsFromParents(cls.getIRI(), Set.of(action.entity().getIRI()), action.projectId(), executionContext))) - .forEach(completableFuture -> { - try { - completableFuture.get(); - } catch (InterruptedException | ExecutionException e) { - logger.error("MergeLinearizationsError: " + e); - } - }); - - return new MoveEntitiesToParentResult(isDestinationRetiredClass); - } - - private boolean isEntityAnOwlClass(OWLEntity entity) { - return entity.isOWLClass(); + return null; } - private boolean isNotOwlClass(OWLEntity entity) { - return !isEntityAnOwlClass(entity); + @Override + protected MoveEntitiesToParentResult createActionResult(ChangeApplicationResult changeApplicationResult, + MoveEntitiesToParentAction action, + ExecutionContext executionContext) { + return new MoveEntitiesToParentResult(); } }