package de.deepamehta.workspaces.migrations; import de.deepamehta.workspaces.WorkspacesService; import de.deepamehta.core.AssociationDefinition; import de.deepamehta.core.AssociationType; import de.deepamehta.core.DeepaMehtaObject; import de.deepamehta.core.DeepaMehtaType; import de.deepamehta.core.Topic; import de.deepamehta.core.TopicType; import de.deepamehta.core.service.Inject; import de.deepamehta.core.service.Migration; import java.util.logging.Logger; /** * Assigns standard association definitions (and their view config topics) to DeepaMehta workspace. * Runs only in UPDATE mode. * <p> * Part of DM 4.6 */ public class Migration6 extends Migration { // ---------------------------------------------------------------------------------------------- Instance Variables @Inject private WorkspacesService wsService; private long deepamehtaWorkspaceId; private long types = 0, standardTypes = 0, assocDefs = 0, configTopics = 0; private Logger logger = Logger.getLogger(getClass().getName()); // -------------------------------------------------------------------------------------------------- Public Methods @Override public void run() { logger.info("########## Assigning standard association definitions (and their view config topics) to " + "DeepaMehta workspace"); deepamehtaWorkspaceId = getDeepaMehtaWorkspace().getId(); // for (TopicType topicType : dm4.getAllTopicTypes()) { assignWorkspace(topicType); } for (AssociationType assocType : dm4.getAllAssociationTypes()) { assignWorkspace(assocType); } // logger.info("########## Assigning standard association definitions (and their view config topics) to " + "DeepaMehta workspace complete\n Types processed: " + types + "\n Standard types: " + standardTypes + "\n Association definitions: " + assocDefs + "\n View config topics: " + configTopics); } // ------------------------------------------------------------------------------------------------- Private Methods void assignWorkspace(DeepaMehtaType type) { types++; if (isDeepaMehtaStandardType(type)) { standardTypes++; for (AssociationDefinition assocDef : type.getAssocDefs()) { assocDefs++; assignToDeepamehtaWorkspace(assocDef); for (Topic configTopic : assocDef.getViewConfig().getConfigTopics()) { configTopics++; assignToDeepamehtaWorkspace(configTopic); } } } } void assignToDeepamehtaWorkspace(DeepaMehtaObject object) { wsService.assignToWorkspace(object, deepamehtaWorkspaceId); } // ### copy in WorkspacesPlugin.java private Topic getDeepaMehtaWorkspace() { return wsService.getWorkspace(WorkspacesService.DEEPAMEHTA_WORKSPACE_URI); } // ### copy in WorkspacesPlugin.java private boolean isDeepaMehtaStandardType(DeepaMehtaType type) { return type.getUri().startsWith("dm4."); } }