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

edu.stanford.protege.webprotege.dispatch.handlers.GetRevisionsActionHandler Maven / Gradle / Ivy

The newest version!
package edu.stanford.protege.webprotege.dispatch.handlers;

import com.google.common.collect.ImmutableList;
import edu.stanford.protege.webprotege.access.AccessManager;
import edu.stanford.protege.webprotege.access.BuiltInAction;
import edu.stanford.protege.webprotege.dispatch.AbstractProjectActionHandler;
import edu.stanford.protege.webprotege.dispatch.actions.GetRevisionsAction;
import edu.stanford.protege.webprotege.dispatch.actions.GetRevisionsResult;
import edu.stanford.protege.webprotege.ipc.ExecutionContext;
import edu.stanford.protege.webprotege.revision.Revision;
import edu.stanford.protege.webprotege.revision.RevisionDetails;
import edu.stanford.protege.webprotege.revision.RevisionDetailsExtractor;
import edu.stanford.protege.webprotege.revision.RevisionManager;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Inject;
import java.util.function.Predicate;

import static com.google.common.base.Preconditions.checkNotNull;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 23 Apr 2018
 */
public class GetRevisionsActionHandler extends AbstractProjectActionHandler {

    private final RevisionManager revisionManager;

    private final RevisionDetailsExtractor extractor;

    @Inject
    public GetRevisionsActionHandler(@Nonnull AccessManager accessManager,
                                     @Nonnull RevisionManager revisionManager, RevisionDetailsExtractor extractor) {
        super(accessManager);
        this.revisionManager = checkNotNull(revisionManager);
        this.extractor = extractor;
    }

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

    @Nullable
    @Override
    protected BuiltInAction getRequiredExecutableBuiltInAction(GetRevisionsAction action) {
        return BuiltInAction.VIEW_CHANGES;
    }

    @Nonnull
    @Override
    public GetRevisionsResult execute(@Nonnull GetRevisionsAction action,
                                      @Nonnull ExecutionContext executionContext) {
        long fromIndex = action.getFrom().getValue() - 1;
        long skip = fromIndex;
        long limit = action.getTo().getValue() - fromIndex;
        Predicate byAuthor = rev -> !action.getAuthor().isPresent() || action.getAuthor().get().equals(rev.getUserId());
        ImmutableList revisionDetails = revisionManager.getRevisions().stream()
                                                                        .skip(skip)
                                                                        .limit(limit)
                                                                        .filter(byAuthor)
                                                                        .map(extractor::extractRevisionDetails)
                                                                        .collect(ImmutableList.toImmutableList());
        return new GetRevisionsResult(revisionDetails,
                                      revisionManager.getCurrentRevision());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy