001package systems.dmx.accesscontrol.migrations; 002 003import systems.dmx.accesscontrol.AccessControlService; 004import systems.dmx.workspaces.WorkspacesService; 005 006import systems.dmx.core.Topic; 007import systems.dmx.core.service.Inject; 008import systems.dmx.core.service.Migration; 009 010 011 012/** 013 * Creates the "System" workspace. 014 * Runs ALWAYS. 015 * <p> 016 * Part of DM 4.5 017 */ 018public class Migration3 extends Migration { 019 020 // ---------------------------------------------------------------------------------------------- Instance Variables 021 022 @Inject 023 private AccessControlService acService; 024 025 @Inject 026 private WorkspacesService wsService; 027 028 // -------------------------------------------------------------------------------------------------- Public Methods 029 030 @Override 031 public void run() { 032 Topic systemWorkspace = wsService.createWorkspace( 033 AccessControlService.SYSTEM_WORKSPACE_NAME, 034 AccessControlService.SYSTEM_WORKSPACE_URI, 035 AccessControlService.SYSTEM_WORKSPACE_SHARING_MODE 036 ); 037 // Note: at migration running time our plugin listeners are not yet registered 038 // (furthermore there is no user logged in). So we set the owner manually here. 039 acService.setWorkspaceOwner(systemWorkspace, AccessControlService.ADMIN_USERNAME); 040 // Note: we don't set a particular creator/modifier here as we don't want suggest that the System workspace has 041 // been created by the "admin" user. Instead the creator/modifier of the System workspace remain undefined as 042 // the System workspace is actually created by the system itself. 043 } 044}