Package edu.stanford.bmir.protege.web.client.project

Source Code of edu.stanford.bmir.protege.web.client.project.Project

package edu.stanford.bmir.protege.web.client.project;

import edu.stanford.bmir.protege.web.client.Application;
import edu.stanford.bmir.protege.web.client.events.EventPollingManager;
import edu.stanford.bmir.protege.web.client.permissions.ProjectPermissionManager;
import edu.stanford.bmir.protege.web.client.rpc.data.layout.ProjectLayoutConfiguration;
import edu.stanford.bmir.protege.web.client.ui.LayoutManager;
import edu.stanford.bmir.protege.web.shared.HasDispose;
import edu.stanford.bmir.protege.web.shared.HasProjectId;
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.bmir.protege.web.shared.user.UserId;

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

/**
* A project on the client side. A project has information about:
* <ul>
* <li>project data (owner, description, etc.)</li>
* <li>ontology event manager</li>
* <li>project configuration (layout, portlets configuration, etc.)</li>
* </ul>
* @author Tania Tudorache <tudorache@stanford.edu>
*/
public class Project implements HasProjectId, HasDispose {

    private final ProjectDetails projectDetails;

    private final ProjectPermissionManager permissionManager;

    private ProjectLayoutConfiguration projectLayoutConfiguration;

    private LayoutManager layoutManager;

    private EventPollingManager eventPollingManager;

    /**
     * Creates a project from the specified details.
     * @param projectDetails The details.  Not {@code null}.
     * @param permissionsForCurrentUser The permissions for the current logged in user.  Not {@code null}.
     * @throws NullPointerException if any parameters are {@code null}.
     */
    public Project(ProjectDetails projectDetails, PermissionsSet permissionsForCurrentUser) {
        this.projectDetails = checkNotNull(projectDetails);
        this.permissionManager = new ProjectPermissionManager(getProjectId());
        this.permissionManager.setUserPermissions(Application.get().getUserId(), checkNotNull(permissionsForCurrentUser));
        this.layoutManager = new LayoutManager(this);
        this.eventPollingManager = EventPollingManager.get(10 * 1000, projectDetails.getProjectId());
        eventPollingManager.start();
    }

    public ProjectId getProjectId() {
        return projectDetails.getProjectId();
    }

//    public String getProjectName() {
//        return projectDetails.getDisplayName();
//    }

    public String getDisplayName() {
        return projectDetails.getDisplayName();
    }

    public ProjectDetails getProjectDetails() {
        return projectDetails;
    }

    public void forceGetEvents() {
//        eventPollingManager.pollForProjectEvents();
    }


    public void setProjectLayoutConfiguration(ProjectLayoutConfiguration projectLayoutConfiguration) {
        this.projectLayoutConfiguration = projectLayoutConfiguration;
    }

    public ProjectLayoutConfiguration getProjectLayoutConfiguration() {
        return projectLayoutConfiguration;
    }

    public void setLayoutManager(LayoutManager layoutManager) {
        this.layoutManager = layoutManager;
    }

    public LayoutManager getLayoutManager() {
        return layoutManager;
    }

//    public ProjectPermissionManager getProjectPermissionManager() {
//        return permissionManager;
//    }

    public boolean hasWritePermission(UserId userId) {
        return permissionManager.hasPermission(userId, Permission.getWritePermission());
    }

    public boolean hasWritePermission() {
        return hasWritePermission(Application.get().getUserId());
    }

    public boolean hasReadPermission(UserId userId) {
        return permissionManager.hasPermission(userId, Permission.getReadPermission());
    }

    public void dispose() {
        // TODO: we might notify the session that project has been closed
        permissionManager.dispose();
        eventPollingManager.stop();
    }
}
TOP

Related Classes of edu.stanford.bmir.protege.web.client.project.Project

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.