001package org.deepamehta.plugins.signup.migrations;
002
003import de.deepamehta.core.Association;
004import de.deepamehta.core.Topic;
005import de.deepamehta.core.model.AssociationModel;
006import de.deepamehta.core.model.SimpleValue;
007import de.deepamehta.core.model.TopicRoleModel;
008import de.deepamehta.core.service.Inject;
009import de.deepamehta.core.service.Migration;
010import de.deepamehta.plugins.accesscontrol.AccessControlService;
011import de.deepamehta.plugins.workspaces.WorkspacesService;
012import java.util.List;
013import java.util.logging.Logger;
014
015public class Migration2 extends Migration {
016
017    private Logger logger = Logger.getLogger(getClass().getName());
018
019    @Inject
020    private WorkspacesService wsService;
021
022    @Override
023    public void run() {
024
025        Topic pluginTopic = dms.getTopic("uri", new SimpleValue("org.deepamehta.sign-up"));
026
027        // 1) Assign the (default) "Sign-up Configuration" to the Plugin topic
028        List<Association> configs = pluginTopic.getAssociations();
029        boolean hasConfiguration = false;
030        for (Association assoc : configs) {
031            if (assoc.getPlayer1().getTypeUri().equals("org.deepamehta.signup.configuration")) hasConfiguration = true;
032        }
033        // ..
034        if (!hasConfiguration) {
035            logger.info("Sign-up => Assigning default \"Sign-up Configuration\" to \"DeepaMehta 4 Sign up\" Topic");
036            Association assoc = dms.createAssociation(new AssociationModel("dm4.core.association",
037                    new TopicRoleModel(pluginTopic.getId(), "dm4.core.default"),
038                    new TopicRoleModel("org.deepamehta.signup.default_configuration", "dm4.core.default")
039            ));
040            Topic systemWorkspace = wsService.getWorkspace(AccessControlService.SYSTEM_WORKSPACE_URI);
041            wsService.assignToWorkspace(assoc, systemWorkspace.getId());
042        } else {
043            logger.info("Sign-up => NOT assigning \"Sign-up Configuration\" to \"DeepaMehta 4 Sign up\" Topic"
044                    + "- Already done!");
045        }
046
047        // 2) Set Configuration Topic Workspace Assignment to ("System") (editable for admin)
048        Topic config_topic = dms.getTopic("uri",
049                new SimpleValue("org.deepamehta.signup.default_configuration"));
050        Topic systemWorkspace = wsService.getWorkspace(AccessControlService.SYSTEM_WORKSPACE_URI);
051        wsService.assignToWorkspace(config_topic, systemWorkspace.getId());
052
053    }
054
055}