use of edu.stanford.bmir.protege.web.server.dispatch.ExecutionContext in project webprotege by protegeproject.
the class GetAvailableProjectsHandler method execute.
@Nonnull
@Override
public GetAvailableProjectsResult execute(@Nonnull GetAvailableProjectsAction action, @Nonnull ExecutionContext executionContext) {
UserId userId = executionContext.getUserId();
Optional<UserActivityRecord> userActivityRecord = userActivityManager.getUserActivityRecord(executionContext.getUserId());
Map<ProjectId, Long> lastOpenedMap = new HashMap<>();
userActivityRecord.ifPresent(record -> record.getRecentProjects().forEach(recent -> lastOpenedMap.put(recent.getProjectId(), recent.getTimestamp())));
List<AvailableProject> availableProjects = projectPermissionsManager.getReadableProjects(userId).stream().map(details -> {
Subject user = forUser(userId);
ProjectResource projectResource = new ProjectResource(details.getProjectId());
boolean downloadable = accessManager.hasPermission(user, projectResource, DOWNLOAD_PROJECT);
boolean trashable = details.getOwner().equals(userId) || accessManager.hasPermission(user, projectResource, MOVE_ANY_PROJECT_TO_TRASH);
long lastOpened = lastOpenedMap.getOrDefault(details.getProjectId(), 0L);
return new AvailableProject(details, downloadable, trashable, lastOpened);
}).collect(toList());
return new GetAvailableProjectsResult(availableProjects);
}
use of edu.stanford.bmir.protege.web.server.dispatch.ExecutionContext in project webprotege by protegeproject.
the class GetProjectPrefixDeclarationsActionHandler method execute.
@Nonnull
@Override
public GetProjectPrefixDeclarationsResult execute(@Nonnull GetProjectPrefixDeclarationsAction action, @Nonnull ExecutionContext executionContext) {
ProjectId projectId = action.getProjectId();
List<PrefixDeclaration> decls = store.find(projectId).getPrefixes().entrySet().stream().map(entry -> PrefixDeclaration.get(entry.getKey(), entry.getValue())).collect(toList());
return new GetProjectPrefixDeclarationsResult(projectId, decls);
}
use of edu.stanford.bmir.protege.web.server.dispatch.ExecutionContext in project webprotege by protegeproject.
the class GetCommentedEntitiesActionHandler method execute.
@Nonnull
@Override
public GetCommentedEntitiesResult execute(@Nonnull GetCommentedEntitiesAction action, @Nonnull ExecutionContext executionContext) {
PageRequest request = action.getPageRequest();
List<EntityDiscussionThread> allThreads = repository.getThreadsInProject(action.getProjectId());
Map<OWLEntity, List<EntityDiscussionThread>> commentsByEntity = allThreads.stream().collect(groupingBy(EntityDiscussionThread::getEntity));
List<CommentedEntityData> result = new ArrayList<>();
commentsByEntity.forEach((entity, threads) -> {
if (rootOntology.containsEntityInSignature(entity)) {
int totalThreadCount = threads.size();
int openThreadCount = (int) threads.stream().filter(thread -> thread.getStatus().isOpen()).count();
List<Comment> entityComments = threads.stream().flatMap(thread -> thread.getComments().stream()).collect(toList());
Comment lastComment = entityComments.stream().max(comparing(c -> c.getUpdatedAt().orElse(c.getCreatedAt()))).get();
List<UserId> participants = entityComments.stream().map(Comment::getCreatedBy).collect(toList());
result.add(new CommentedEntityData(renderer.getRendering(entity), totalThreadCount, openThreadCount, entityComments.size(), lastComment.getUpdatedAt().orElse(lastComment.getCreatedAt()), lastComment.getCreatedBy(), participants));
}
});
if (action.getSortingKey() == SortingKey.SORT_BY_ENTITY) {
result.sort(byEntity);
} else {
result.sort(byLastModified);
}
Pager<CommentedEntityData> pager = Pager.getPagerForPageSize(result, request.getPageSize());
return new GetCommentedEntitiesResult(action.getProjectId(), pager.getPage(request.getPageNumber()));
}
use of edu.stanford.bmir.protege.web.server.dispatch.ExecutionContext in project webprotege by protegeproject.
the class SetDiscussionThreadStatusHandler method execute.
@Nonnull
@Override
public SetDiscussionThreadStatusResult execute(@Nonnull SetDiscussionThreadStatusAction action, @Nonnull ExecutionContext executionContext) {
EventTag fromTag = eventManager.getCurrentTag();
ThreadId threadId = action.getThreadId();
Status status = action.getStatus();
Optional<EntityDiscussionThread> thread = repository.setThreadStatus(threadId, status);
int openComments = thread.map(t -> repository.getOpenCommentsCount(projectId, t.getEntity())).orElse(-1);
eventManager.postEvent(new DiscussionThreadStatusChangedEvent(projectId, threadId, thread.map(EntityDiscussionThread::getEntity), openComments, status));
EventList<ProjectEvent<?>> eventList = eventManager.getEventsFromTag(fromTag);
return new SetDiscussionThreadStatusResult(threadId, status, eventList);
}
use of edu.stanford.bmir.protege.web.server.dispatch.ExecutionContext in project webprotege by protegeproject.
the class GetIndividualsActionHandler method execute.
@Nonnull
@Override
public GetIndividualsResult execute(@Nonnull GetIndividualsAction action, @Nonnull ExecutionContext executionContext) {
Stream<OWLNamedIndividual> stream;
if (action.getType().isOWLThing()) {
stream = rootOntology.getIndividualsInSignature(Imports.INCLUDED).stream();
} else {
stream = rootOntology.getImportsClosure().stream().flatMap(o -> o.getClassAssertionAxioms(action.getType()).stream()).map(OWLClassAssertionAxiom::getIndividual).filter(OWLIndividual::isNamed).map(OWLIndividual::asOWLNamedIndividual);
}
Counter counter = new Counter();
List<OWLNamedIndividualData> individualsData = stream.peek(i -> counter.increment()).map(renderingManager::getRendering).filter(i -> {
String searchString = action.getFilterString();
return searchString.isEmpty() || StringUtils.containsIgnoreCase(i.getBrowserText(), searchString);
}).distinct().sorted().collect(toList());
PageRequest pageRequest = action.getPageRequest();
Pager<OWLNamedIndividualData> pager = Pager.getPagerForPageSize(individualsData, pageRequest.getPageSize());
Page<OWLNamedIndividualData> page = pager.getPage(pageRequest.getPageNumber());
OWLClassData type = renderingManager.getRendering(action.getType());
logger.info(BROWSING, "{} {} retrieved instances of {} ({})", projectId, executionContext.getUserId(), action.getType(), renderingManager.getRendering(action.getType()).getBrowserText());
return new GetIndividualsResult(type, page, counter.getCount(), individualsData.size());
}
Aggregations