*******************************************************************************/
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;
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;
String recentPathsPref = store.getString(Preferences.RECENT_SHARED_LIBRARY_IMPORT_LOCATIONS);
Deque<String> recentImportPaths = Preferences.decodePaths(recentPathsPref);
- ISessionContext ctx = SimanticsUI.getSessionContext();
+ ISessionContext ctx = Simantics.getSessionContext();
if (ctx == null)
return false;
IProject project = ctx.getHint(ProjectKeys.KEY_PROJECT);
importModel = new ImportPlan(ctx, recentImportPaths);
importModel.project = project;
importModel.selection = selection.getFirstElement();
+ importModel.includeDependencies = store.getBoolean(Preferences.IMPORT_INCLUDE_DEPENDENCIES);
return true;
}
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();
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();
}
});
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;
- }
-
}