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}