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=refs%2Fchanges%2F40%2F1140%2F3;hp=4b7039258153da98ab29fc54bfc4108e9564b129;hpb=1cb8ccadc93ab1a1ac5981ea6634b3ef5dd27ec4;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 4b7039258..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 @@ -40,11 +40,14 @@ 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.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.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; @@ -138,7 +141,7 @@ public class ModelImportWizard extends Wizard implements IImportWizard { try { 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 { @@ -177,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); @@ -200,6 +203,18 @@ public class ModelImportWizard extends Wizard implements IImportWizard { state.setProperty(MigrationStateKeys.SESSION, session); state.setProperty(MigrationStateKeys.PROGRESS_MONITOR, monitor); + 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);