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;
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 {
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);
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<Resource> resultRoots = state.getProperty(MigrationStateKeys.CURRENT_ROOT_RESOURCES);