All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.stanford.protege.webprotege.bulkop.MoveToParentActionHandler Maven / Gradle / Ivy

The newest version!
package edu.stanford.protege.webprotege.bulkop;

import com.google.common.collect.ImmutableSet;
import edu.stanford.protege.webprotege.access.AccessManager;
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 org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLEntity;

import javax.annotation.Nonnull;
import javax.inject.Inject;

import static com.google.common.collect.ImmutableSet.toImmutableSet;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 25 Sep 2018
 */
public class MoveToParentActionHandler extends AbstractProjectChangeHandler {

    @Nonnull
    private final MoveClassesChangeListGeneratorFactory factory;

    @Inject
    public MoveToParentActionHandler(@Nonnull AccessManager accessManager,
                                     @Nonnull HasApplyChanges applyChanges,
                                     @Nonnull MoveClassesChangeListGeneratorFactory factory) {
        super(accessManager, applyChanges);
        this.factory = factory;
    }

    @Nonnull
    @Override
    public Class getActionClass() {
        return MoveEntitiesToParentAction.class;
    }

    @Override
    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());
        }
        return null;
    }

    @Override
    protected MoveEntitiesToParentResult createActionResult(ChangeApplicationResult changeApplicationResult,
                                                            MoveEntitiesToParentAction action,
                                                            ExecutionContext executionContext) {
        return new MoveEntitiesToParentResult();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy