]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sharedontology/wizard/ModelImportWizard.java
Added preference for Import dependencies in generic model import/export
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / sharedontology / wizard / ModelImportWizard.java
index 9f9dc489e42af88a111b2705fa723bfcc70e6578..011ce12ff538f1764d194ba5c2ef74c644382bc5 100644 (file)
  *******************************************************************************/
 package org.simantics.modeling.ui.sharedontology.wizard;
 
-import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
-import java.util.Collection;
 import java.util.Deque;
-import java.util.HashMap;
-import java.util.Map;
 
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.preference.IPersistentPreferenceStore;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -33,28 +26,16 @@ import org.eclipse.ui.IImportWizard;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.preferences.ScopedPreferenceStore;
 import org.simantics.Simantics;
-import org.simantics.databoard.binding.Binding;
-import org.simantics.databoard.container.DataContainer;
-import org.simantics.databoard.container.DataContainers;
-import org.simantics.databoard.container.FormatHandler;
 import org.simantics.databoard.util.URIStringUtils;
 import org.simantics.db.Resource;
-import org.simantics.db.Session;
 import org.simantics.db.layer0.migration.MigratedImportResult;
-import org.simantics.db.layer0.migration.MigrationState;
-import org.simantics.db.layer0.migration.MigrationStateKeys;
-import org.simantics.db.layer0.migration.MigrationUtils;
-import org.simantics.db.layer0.migration.ModelImportAdvisor;
 import org.simantics.db.management.ISessionContext;
-import org.simantics.graph.db.ImportResult;
 import org.simantics.graph.db.MissingDependencyException;
-import org.simantics.graph.representation.TransferableGraph1;
 import org.simantics.modeling.ui.Activator;
 import org.simantics.modeling.ui.utils.NoProjectPage;
 import org.simantics.project.IProject;
 import org.simantics.project.ProjectKeys;
 import org.simantics.ui.SimanticsUI;
-import org.simantics.ui.utils.ResourceAdaptionUtils;
 import org.simantics.utils.strings.EString;
 import org.simantics.utils.ui.ErrorLogger;
 import org.simantics.utils.ui.ExceptionUtils;
@@ -85,6 +66,7 @@ public class ModelImportWizard extends Wizard implements IImportWizard {
         importModel = new ImportPlan(ctx, recentImportPaths);
         importModel.project = project;
         importModel.selection = selection.getFirstElement();
+        importModel.includeDependencies = store.getBoolean(Preferences.IMPORT_INCLUDE_DEPENDENCIES);
 
         return true;
     }
@@ -93,6 +75,7 @@ public class ModelImportWizard extends Wizard implements IImportWizard {
         IPersistentPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, Activator.PLUGIN_ID);
 
         store.putValue(Preferences.RECENT_SHARED_LIBRARY_IMPORT_LOCATIONS, Preferences.encodePaths(importModel.recentLocations));
+        store.setValue(Preferences.IMPORT_INCLUDE_DEPENDENCIES, importModel.includeDependencies);
 
         if (store.needsSaving())
             store.save();
@@ -133,18 +116,15 @@ public class ModelImportWizard extends Wizard implements IImportWizard {
 
         try {
             MigratedImportResult[] result = { null };
-            getContainer().run(true, true, new IRunnableWithProgress() {
-                @Override
-                public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-                    try {
-                        Resource target = ResourceAdaptionUtils.toSingleResource(importModel.selection);
-                        importModel.sessionContext.getSession().markUndoPoint();
-                        result[0] = doImport(monitor, importModel.importLocation, importModel.sessionContext.getSession(), target);
-                    } catch (Exception e) {
-                        throw new InvocationTargetException(e);
-                    } finally {
-                        monitor.done();
-                    }
+            getContainer().run(true, true, monitor -> {
+                try {
+                    Resource target = Simantics.getProjectResource();
+                    importModel.sessionContext.getSession().markUndoPoint();
+                    result[0] = ModelImporter.doImport(monitor, importModel.importLocation, importModel.sessionContext.getSession(), target, importModel.includeDependencies);
+                } catch (Exception e) {
+                    throw new InvocationTargetException(e);
+                } finally {
+                    monitor.done();
                 }
             });
 
@@ -178,49 +158,4 @@ public class ModelImportWizard extends Wizard implements IImportWizard {
         return true;
     }
 
-    public static MigratedImportResult doImport(IProgressMonitor monitor, File modelFile, Session session, Resource target)
-            throws Exception
-    {
-        SubMonitor mon = SubMonitor.convert(monitor);
-        mon.beginTask("Loading model from disk", 1000);
-
-        FormatHandler<MigratedImportResult> handler1 = new FormatHandler<MigratedImportResult>() {
-            @Override
-            public Binding getBinding() {
-                return TransferableGraph1.BINDING;
-            }
-
-            @Override
-            public MigratedImportResult process(DataContainer container) throws Exception {
-                mon.worked(100);
-                mon.setTaskName("Importing model into database");
-
-                MigrationState state = MigrationUtils.newState();
-                state.setProperty(MigrationStateKeys.UPDATE_DEPENDENCIES, false);
-                state.setProperty(MigrationStateKeys.MODEL_FILE, modelFile);
-                state.setProperty(MigrationStateKeys.SESSION, session);
-                state.setProperty(MigrationStateKeys.PROGRESS_MONITOR, monitor);
-                
-                MigrationUtils.importMigrated(monitor, session, modelFile, state, new ModelImportAdvisor(Simantics.getProjectResource()), Simantics.getProjectResource());
-
-                Collection<Resource> resultRoots = state.getProperty(MigrationStateKeys.CURRENT_ROOT_RESOURCES);
-                ImportResult result = state.getProperty(MigrationStateKeys.IMPORT_RESULT);
-                return new MigratedImportResult(resultRoots, result);
-                
-            }
-        };
-
-        Map<String, FormatHandler<MigratedImportResult>> handlers = new HashMap<>();
-        handlers.put(":1", handler1);
-        handlers.put(Constants.MODEL_FORMAT_V1, handler1);
-
-        MigratedImportResult result = DataContainers.readFile(modelFile, handlers);
-
-        mon.setTaskName("Postprocessing");
-        mon.subTask("");
-        mon.newChild(50).done();
-
-        return result;
-    }
-
 }