001 package de.deepamehta.plugins.workspaces.service; 002 003 import de.deepamehta.core.DeepaMehtaObject; 004 import de.deepamehta.core.RelatedTopic; 005 import de.deepamehta.core.Topic; 006 import de.deepamehta.core.Type; 007 import de.deepamehta.core.service.PluginService; 008 import de.deepamehta.core.service.ResultList; 009 import de.deepamehta.core.service.accesscontrol.SharingMode; 010 011 012 013 public interface WorkspacesService extends PluginService { 014 015 // ------------------------------------------------------------------------------------------------------- Constants 016 017 static final String DEEPAMEHTA_WORKSPACE_NAME = "DeepaMehta"; 018 static final String DEEPAMEHTA_WORKSPACE_URI = "dm4.workspaces.deepamehta"; 019 static final SharingMode DEEPAMEHTA_WORKSPACE_SHARING_MODE = SharingMode.PUBLIC; 020 021 // -------------------------------------------------------------------------------------------------- Public Methods 022 023 /** 024 * @param uri may be null 025 */ 026 Topic createWorkspace(String name, String uri, SharingMode sharingMode); 027 028 // --- 029 030 /** 031 * Returns a workspace by URI. 032 * If no workspace exists for the given URI a runtime exception is thrown. 033 * 034 * @return The workspace (a topic of type "Workspace"). 035 */ 036 Topic getWorkspace(String uri); 037 038 /** 039 * Returns all topics of the given type that are assigned to the given workspace. 040 */ 041 ResultList<RelatedTopic> getAssignedTopics(long workspaceId, String typeUri); 042 043 /** 044 * Returns the workspace a topic or association is assigned to. 045 * 046 * @param id a topic ID, or an association ID 047 * 048 * @return The assigned workspace (a topic of type "Workspace"), 049 * or <code>null</code> if no workspace is assigned. 050 */ 051 Topic getAssignedWorkspace(long objectId); 052 053 /** 054 * Checks weather the given topic or association is assigned to the given workspace. 055 */ 056 boolean isAssignedToWorkspace(long objectId, long workspaceId); 057 058 // --- 059 060 /** 061 * Assigns the given object to the given workspace. 062 */ 063 void assignToWorkspace(DeepaMehtaObject object, long workspaceId); 064 065 /** 066 * Assigns the given type and all its view configuration topics to the given workspace. 067 */ 068 void assignTypeToWorkspace(Type type, long workspaceId); 069 }