Skip to content

Commit

Permalink
reverted original MoveToParentActionHandler to how it is on main branch.
Browse files Browse the repository at this point in the history
  • Loading branch information
soimugeo committed Jan 20, 2025
1 parent 8688f55 commit b820055
Showing 1 changed file with 20 additions and 73 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -25,39 +20,17 @@
* Stanford Center for Biomedical Informatics Research
* 25 Sep 2018
*/
public class MoveToParentActionHandler extends AbstractProjectActionHandler<MoveEntitiesToParentAction, MoveEntitiesToParentResult> {


private final Logger logger = LoggerFactory.getLogger(MoveToParentActionHandler.class);
public class MoveToParentActionHandler extends AbstractProjectChangeHandler<Boolean, MoveEntitiesToParentAction, MoveEntitiesToParentResult> {

@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
Expand All @@ -66,45 +39,19 @@ public Class<MoveEntitiesToParentAction> 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<Boolean> getChangeListGenerator(MoveEntitiesToParentAction action, ExecutionContext executionContext) {
if(action.entity().isOWLClass()) {
ImmutableSet<OWLClass> 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<OWLClass> 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<Boolean> changeApplicationResult,
MoveEntitiesToParentAction action,
ExecutionContext executionContext) {
return new MoveEntitiesToParentResult();
}
}

0 comments on commit b820055

Please sign in to comment.