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

edu.stanford.protege.webprotege.frame.CheckManchesterSyntaxFrameActionHandler Maven / Gradle / Ivy

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

import edu.stanford.protege.webprotege.access.AccessManager;
import edu.stanford.protege.webprotege.access.BuiltInAction;
import edu.stanford.protege.webprotege.change.ChangeGenerationContext;
import edu.stanford.protege.webprotege.change.OntologyChangeList;
import edu.stanford.protege.webprotege.dispatch.AbstractProjectActionHandler;
import edu.stanford.protege.webprotege.ipc.ExecutionContext;
import edu.stanford.protege.webprotege.mansyntax.ManchesterSyntaxChangeGenerator;
import edu.stanford.protege.webprotege.mansyntax.ManchesterSyntaxChangeGeneratorFactory;
import edu.stanford.protege.webprotege.mansyntax.ManchesterSyntaxFrameParser;
import edu.stanford.protege.webprotege.renderer.RenderingManager;
import org.semanticweb.owlapi.manchestersyntax.renderer.ParserException;

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

import static edu.stanford.protege.webprotege.frame.ManchesterSyntaxFrameParseResult.CHANGED;
import static edu.stanford.protege.webprotege.frame.ManchesterSyntaxFrameParseResult.UNCHANGED;

/**
 * @author Matthew Horridge, Stanford University, Bio-Medical Informatics Research Group, Date: 18/03/2014
 */
public class CheckManchesterSyntaxFrameActionHandler extends AbstractProjectActionHandler {

    @Nonnull
    private final ManchesterSyntaxChangeGeneratorFactory factory;

    @Nonnull
    private final RenderingManager renderer;

    @Inject
    public CheckManchesterSyntaxFrameActionHandler(@Nonnull AccessManager accessManager,
                                                   @Nonnull ManchesterSyntaxChangeGeneratorFactory factory,
                                                   @Nonnull RenderingManager renderer) {
        super(accessManager);
        this.factory = factory;
        this.renderer = renderer;
    }

    @Nullable
    @Override
    protected BuiltInAction getRequiredExecutableBuiltInAction(CheckManchesterSyntaxFrameAction action) {
        return BuiltInAction.VIEW_PROJECT;
    }

    @Nonnull
    @Override
    public CheckManchesterSyntaxFrameResult execute(@Nonnull CheckManchesterSyntaxFrameAction action,
                                                    @Nonnull ExecutionContext executionContext) {

        ManchesterSyntaxChangeGenerator changeGenerator = factory.create(
                renderer.getRendering(action.subject()),
                action.from(),
                action.to(),
                "",
                action);
        try {
            OntologyChangeList changeList = changeGenerator.generateChanges(new ChangeGenerationContext(executionContext.userId()));
            if (changeList.getChanges().isEmpty()) {
                return CheckManchesterSyntaxFrameResult.create(UNCHANGED);
            }
            else {
                return CheckManchesterSyntaxFrameResult.create(CHANGED);
            }
        } catch (ParserException e) {
            return CheckManchesterSyntaxFrameResult.create(ManchesterSyntaxFrameParser.getParseError(e));
        }
    }

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





© 2015 - 2025 Weber Informatics LLC | Privacy Policy