
edu.stanford.protege.webprotege.individuals.CreateNamedIndividualsActionHandler Maven / Gradle / Ivy
The newest version!
package edu.stanford.protege.webprotege.individuals;
import com.google.common.collect.ImmutableSet;
import edu.stanford.protege.webprotege.access.AccessManager;
import edu.stanford.protege.webprotege.access.BuiltInAction;
import edu.stanford.protege.webprotege.change.ChangeApplicationResult;
import edu.stanford.protege.webprotege.change.HasApplyChanges;
import edu.stanford.protege.webprotege.common.ProjectId;
import edu.stanford.protege.webprotege.dispatch.AbstractProjectActionHandler;
import edu.stanford.protege.webprotege.entity.CreateNamedIndividualsAction;
import edu.stanford.protege.webprotege.entity.CreateNamedIndividualsResult;
import edu.stanford.protege.webprotege.entity.EntityNode;
import edu.stanford.protege.webprotege.entity.EntityNodeRenderer;
import edu.stanford.protege.webprotege.ipc.ExecutionContext;
import org.semanticweb.owlapi.model.OWLNamedIndividual;
import javax.annotation.Nonnull;
import javax.inject.Inject;
import java.util.Arrays;
import java.util.Set;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
import static edu.stanford.protege.webprotege.access.BuiltInAction.CREATE_INDIVIDUAL;
import static edu.stanford.protege.webprotege.access.BuiltInAction.EDIT_ONTOLOGY;
/**
* Author: Matthew Horridge
* Stanford University
* Bio-Medical Informatics Research Group
* Date: 12/09/2013
*/
public class CreateNamedIndividualsActionHandler extends AbstractProjectActionHandler {
@Nonnull
private final ProjectId projectId;
@Nonnull
private final HasApplyChanges changeApplicator;
@Nonnull
private final EntityNodeRenderer renderer;
@Nonnull
private final CreateIndividualsChangeListGeneratorFactory factory;
@Inject
public CreateNamedIndividualsActionHandler(@Nonnull AccessManager accessManager,
@Nonnull ProjectId projectId,
@Nonnull HasApplyChanges changeApplicator,
@Nonnull EntityNodeRenderer renderer,
@Nonnull CreateIndividualsChangeListGeneratorFactory factory) {
super(accessManager);
this.projectId = checkNotNull(projectId);
this.changeApplicator = checkNotNull(changeApplicator);
this.renderer = checkNotNull(renderer);
this.factory = checkNotNull(factory);
}
@Nonnull
@Override
protected Iterable getRequiredExecutableBuiltInActions(CreateNamedIndividualsAction action) {
return Arrays.asList(EDIT_ONTOLOGY, CREATE_INDIVIDUAL);
}
@Nonnull
@Override
public CreateNamedIndividualsResult execute(@Nonnull CreateNamedIndividualsAction action,
@Nonnull ExecutionContext executionContext) {
ChangeApplicationResult> result = changeApplicator.applyChanges(executionContext.userId(),
factory.create(action.types(),
action.sourceText(),
action.langTag(),
action.changeRequestId()));
ImmutableSet individualData = result.getSubject().stream()
.map(renderer::render)
.collect(toImmutableSet());
return new CreateNamedIndividualsResult(projectId,
individualData);
}
@Nonnull
@Override
public Class getActionClass() {
return CreateNamedIndividualsAction.class;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy