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

edu.stanford.protege.webprotege.issues.GetEntityDiscussionThreadsHandler Maven / Gradle / Ivy

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

import com.google.common.collect.ImmutableList;
import edu.stanford.protege.webprotege.access.AccessManager;
import edu.stanford.protege.webprotege.dispatch.ProjectActionHandler;
import edu.stanford.protege.webprotege.dispatch.RequestContext;
import edu.stanford.protege.webprotege.dispatch.RequestValidator;
import edu.stanford.protege.webprotege.dispatch.validators.ProjectPermissionValidator;
import edu.stanford.protege.webprotege.entity.OWLEntityData;
import edu.stanford.protege.webprotege.ipc.ExecutionContext;
import edu.stanford.protege.webprotege.renderer.RenderingManager;

import javax.annotation.Nonnull;
import javax.inject.Inject;
import java.util.List;

import static edu.stanford.protege.webprotege.access.BuiltInAction.VIEW_OBJECT_COMMENT;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 5 Oct 2016
 */
public class GetEntityDiscussionThreadsHandler implements ProjectActionHandler {

    @Nonnull
    private final EntityDiscussionThreadRepository repository;

    @Nonnull
    private final AccessManager accessManager;

    @Nonnull
    private final RenderingManager renderingManager;

    @Inject
    public GetEntityDiscussionThreadsHandler(@Nonnull EntityDiscussionThreadRepository repository,
                                             @Nonnull AccessManager accessManager,
                                             @Nonnull RenderingManager renderingManager) {
        this.repository = repository;
        this.accessManager = accessManager;
        this.renderingManager = renderingManager;
    }

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

    @Nonnull
    @Override
    public RequestValidator getRequestValidator(@Nonnull GetEntityDiscussionThreadsAction action, @Nonnull RequestContext requestContext) {
        return new ProjectPermissionValidator(accessManager,
                                              action.projectId(),
                                              requestContext.getUserId(),
                                              VIEW_OBJECT_COMMENT.getActionId());
    }

    @Nonnull
    @Override
    public GetEntityDiscussionThreadsResult execute(@Nonnull GetEntityDiscussionThreadsAction action, @Nonnull ExecutionContext executionContext) {
        List threads = repository.findThreads(action.projectId(), action.entity());
        OWLEntityData entityData = renderingManager.getRendering(action.entity());
        return new GetEntityDiscussionThreadsResult(entityData,
                                                    ImmutableList.copyOf(threads));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy