001package de.kiezatlas.migrations;
002
003import de.deepamehta.core.service.Inject;
004import de.deepamehta.core.service.Migration;
005import de.deepamehta.core.TopicType;
006import de.deepamehta.core.Topic;
007import de.deepamehta.plugins.accesscontrol.AccessControlService;
008import de.deepamehta.plugins.workspaces.WorkspacesService;
009import static de.kiezatlas.KiezatlasService.KIEZATLAS_WORKSPACE_NAME;
010import static de.kiezatlas.KiezatlasService.KIEZATLAS_WORKSPACE_SHARING_MODE;
011import static de.kiezatlas.KiezatlasService.KIEZATLAS_WORKSPACE_URI;
012
013/**
014 * Introduces the Public "Kiezatlas" Workspace (as of 4.7).
015 * Assigns all our topic types to the "Kiezatlas" workspace so members can edit these type definitions
016 * Home of all Kiezatlas related Topic Types.
017 * Also home of all Facet, Category Types and Categories introduced with dm4-kiezatlas-etl.
018 * */
019
020public class Migration3 extends Migration {
021
022    @Inject
023    private WorkspacesService workspaceService;
024
025    @Inject
026    private AccessControlService accessControlService;
027
028    @Override
029    public void run() {
030        Topic kiezatlas = workspaceService.createWorkspace(KIEZATLAS_WORKSPACE_NAME, KIEZATLAS_WORKSPACE_URI,
031                KIEZATLAS_WORKSPACE_SHARING_MODE);
032        accessControlService.setWorkspaceOwner(kiezatlas, "admin");
033        TopicType geoObject = dms.getTopicType("ka2.geo_object");
034        TopicType geoObjectName = dms.getTopicType("ka2.geo_object.name");
035        TopicType website = dms.getTopicType("ka2.website");
036        TopicType websiteTitle = dms.getTopicType("ka2.website.title");
037        workspaceService.assignTypeToWorkspace(geoObject, kiezatlas.getId());
038        workspaceService.assignTypeToWorkspace(geoObjectName, kiezatlas.getId());
039        workspaceService.assignTypeToWorkspace(website, kiezatlas.getId());
040        workspaceService.assignTypeToWorkspace(websiteTitle, kiezatlas.getId());
041    }
042}