X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2Fsharedontology%2Fwizard%2FModelImportWizard.java;h=fd8aaff3cf882023d630130d01d4b6549e38f3c0;hb=a7f7fb0c37e4377124ddc3860d8c8d3e39dcd2de;hp=235c304e6009f56942a8f288f17d703776f7fcad;hpb=489dcdf697f8752924199aca84d111e5d011d656;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sharedontology/wizard/ModelImportWizard.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sharedontology/wizard/ModelImportWizard.java index 235c304e6..fd8aaff3c 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sharedontology/wizard/ModelImportWizard.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sharedontology/wizard/ModelImportWizard.java @@ -34,19 +34,20 @@ 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.binding.mutable.Variant; import org.simantics.databoard.container.DataContainer; import org.simantics.databoard.container.DataContainers; import org.simantics.databoard.container.FormatHandler; -import org.simantics.databoard.util.binary.BinaryFile; +import org.simantics.databoard.util.URIStringUtils; import org.simantics.db.Resource; import org.simantics.db.Session; +import org.simantics.db.common.primitiverequest.PossibleResource; +import org.simantics.db.layer0.adapter.impl.DefaultPasteImportAdvisor; 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.layer0.util.DraftStatusBean; +import org.simantics.db.layer0.util.ModelDependenciesBean; +import org.simantics.db.layer0.util.ModelDependency; import org.simantics.db.management.ISessionContext; import org.simantics.graph.db.ImportResult; import org.simantics.graph.db.MissingDependencyException; @@ -56,7 +57,6 @@ 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; @@ -139,9 +139,9 @@ public class ModelImportWizard extends Wizard implements IImportWizard { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { - Resource target = ResourceAdaptionUtils.toSingleResource(importModel.selection); + Resource target = Simantics.getProjectResource(); importModel.sessionContext.getSession().markUndoPoint(); - result[0] = doImport(monitor, importModel.importLocation, importModel.sessionContext.getSession(), target); + result[0] = doImport(monitor, importModel.importLocation, importModel.sessionContext.getSession(), target, importModel.includeDependencies); } catch (Exception e) { throw new InvocationTargetException(e); } finally { @@ -153,7 +153,7 @@ public class ModelImportWizard extends Wizard implements IImportWizard { if (result[0].hasMissingExternals()) { InfoDialog.open(getShell(), "Missing Externals Created", "The system was unable to find some of the external entities referenced by the imported material. Place-holders have been created for the missing entities.\nThe missing entities are:\n" - + EString.implode(result[0].tgResult.missingExternals), + + URIStringUtils.unescape(EString.implode(result[0].tgResult.missingExternals)), SWT.SHEET); } } catch (InvocationTargetException e) { @@ -180,7 +180,7 @@ public class ModelImportWizard extends Wizard implements IImportWizard { return true; } - public static MigratedImportResult doImport(IProgressMonitor monitor, File modelFile, Session session, Resource target) + public static MigratedImportResult doImport(IProgressMonitor monitor, File modelFile, Session session, Resource target, boolean includeDependencies) throws Exception { SubMonitor mon = SubMonitor.convert(monitor); @@ -203,7 +203,19 @@ public class ModelImportWizard extends Wizard implements IImportWizard { state.setProperty(MigrationStateKeys.SESSION, session); state.setProperty(MigrationStateKeys.PROGRESS_MONITOR, monitor); - MigrationUtils.importMigrated(monitor, session, modelFile, state, new ModelImportAdvisor(Simantics.getProjectResource()), Simantics.getProjectResource()); + if(includeDependencies) { + final ModelDependenciesBean libraryDependenciesBean = ModelDependenciesBean.fromMigrationState(state); + if(libraryDependenciesBean != null) { + for(ModelDependency dependency : libraryDependenciesBean.dependencies) { + Resource existing = session.sync(new PossibleResource(dependency.uri)); + if(existing == null) { + MigrationUtils.importSharedOntology(session, dependency.tg, false); + } + } + } + } + + MigrationUtils.importMigrated(monitor, session, modelFile, state, new DefaultPasteImportAdvisor(target), target); Collection resultRoots = state.getProperty(MigrationStateKeys.CURRENT_ROOT_RESOURCES); ImportResult result = state.getProperty(MigrationStateKeys.IMPORT_RESULT);