Package edu.stanford.bmir.protege.web.server.dispatch.handlers

Source Code of edu.stanford.bmir.protege.web.server.dispatch.handlers.LoadProjectActionHandler

package edu.stanford.bmir.protege.web.server.dispatch.handlers;

import edu.stanford.bmir.protege.web.client.dispatch.actions.LoadProjectAction;
import edu.stanford.bmir.protege.web.client.dispatch.actions.LoadProjectResult;
import edu.stanford.bmir.protege.web.server.MetaProjectManager;
import edu.stanford.bmir.protege.web.server.dispatch.ActionHandler;
import edu.stanford.bmir.protege.web.server.dispatch.ExecutionContext;
import edu.stanford.bmir.protege.web.server.dispatch.RequestContext;
import edu.stanford.bmir.protege.web.server.dispatch.RequestValidator;
import edu.stanford.bmir.protege.web.server.dispatch.validators.UserHasProjectReadPermissionValidator;
import edu.stanford.bmir.protege.web.server.logging.WebProtegeLogger;
import edu.stanford.bmir.protege.web.server.logging.WebProtegeLoggerManager;
import edu.stanford.bmir.protege.web.server.owlapi.OWLAPIProjectManager;
import edu.stanford.bmir.protege.web.server.owlapi.OWLAPIProjectMetadataManager;
import edu.stanford.bmir.protege.web.shared.permissions.Permission;
import edu.stanford.bmir.protege.web.shared.permissions.PermissionsSet;
import edu.stanford.bmir.protege.web.shared.project.ProjectDetails;
import edu.stanford.bmir.protege.web.shared.project.ProjectId;
import edu.stanford.smi.protege.server.metaproject.Operation;

import java.util.Collection;

/**
* Author: Matthew Horridge<br>
* Stanford University<br>
* Bio-Medical Informatics Research Group<br>
* Date: 05/04/2013
*/
public class LoadProjectActionHandler implements ActionHandler<LoadProjectAction, LoadProjectResult> {

    @Override
    public Class<LoadProjectAction> getActionClass() {
        return LoadProjectAction.class;
    }

    @Override
    public RequestValidator<LoadProjectAction> getRequestValidator(LoadProjectAction action, RequestContext requestContext) {
        return UserHasProjectReadPermissionValidator.get();
    }

    @Override
    public LoadProjectResult execute(final LoadProjectAction action, ExecutionContext executionContext) {
        // Load project in parallel (as we don't return it, but want it ready for further calls).
        final WebProtegeLogger webProtegeLogger = WebProtegeLoggerManager.get(LoadProjectActionHandler.class);
        long t0 = System.currentTimeMillis();
        webProtegeLogger.info("Loading project: " + action.getProjectId());
        OWLAPIProjectManager pm = OWLAPIProjectManager.getProjectManager();
        pm.getProject(action.getProjectId());
        long t1 = System.currentTimeMillis();
        webProtegeLogger.info(".... loaded project in " + (t1 - t0) + " ms");
        final ProjectId projectId = action.getProjectId();//project.getProjectId();

        final OWLAPIProjectMetadataManager manager = OWLAPIProjectMetadataManager.getManager();
        ProjectDetails projectDetails = manager.getProjectDetails(projectId);

        Collection<Operation> ops = MetaProjectManager.getManager().getAllowedOperations(projectId.getId(), executionContext.getUserId().getUserName());
        PermissionsSet.Builder builder = PermissionsSet.builder();
        for (Operation op : ops) {
            builder.addPermission(Permission.getPermission(op.getName()));
        }
        return new LoadProjectResult(executionContext.getUserId(), builder.build(), projectDetails);
    }
}
TOP

Related Classes of edu.stanford.bmir.protege.web.server.dispatch.handlers.LoadProjectActionHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.