]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sharedontology/wizard/ModelExporter.java
Support dependency embedding in generic model export/import
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / sharedontology / wizard / ModelExporter.java
index 68e01297b06ae224107d02210f55b471e1e09e98..7211c79035fe0ae91180231659f70ff60aa26150 100644 (file)
@@ -20,11 +20,14 @@ import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.simantics.Simantics;
 import org.simantics.databoard.binding.error.BindingException;
+import org.simantics.databoard.binding.mutable.Variant;
 import org.simantics.databoard.serialization.SerializationException;
 import org.simantics.db.ReadGraph;
 import org.simantics.db.common.request.ReadRequest;
 import org.simantics.db.common.utils.Logger;
 import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.util.ModelDependenciesBean;
+import org.simantics.db.layer0.util.TransferableGraphConfiguration2;
 import org.simantics.modeling.ModelingUtils;
 import org.simantics.modeling.ModelingUtils.LibraryInfo;
 import org.simantics.utils.ui.dialogs.ShowMessage;
@@ -58,8 +61,7 @@ public class ModelExporter implements IRunnableWithProgress {
 
     void exportModel(SubMonitor mon) throws IOException, DatabaseException, SerializationException, BindingException{
         try {
-            doExport(mon, exportModel.exportLocation, exportModel.model);
-
+            doExport(mon, exportModel.exportLocation, exportModel.model, exportModel.includeDependencies);
         } catch (DatabaseException e) {
             e.printStackTrace();
             Logger.defaultLogError(e);
@@ -70,12 +72,17 @@ public class ModelExporter implements IRunnableWithProgress {
         }
     }
     
-    public static void doExport(IProgressMonitor monitor, final File location, final LibraryInfo info) throws DatabaseException, IOException {
+    public static void doExport(IProgressMonitor monitor, final File location, final LibraryInfo info, boolean includeDependencies) throws DatabaseException, IOException {
        Simantics.sync(new ReadRequest() {
 
                        @Override
                        public void run(ReadGraph graph) throws DatabaseException {
-                       ModelingUtils.exportModel(graph, info.library.getResource(), location.getAbsolutePath(), "", 1);
+                               TransferableGraphConfiguration2 conf = new TransferableGraphConfiguration2(graph, info.library.getResource(), true, false);
+                               if(includeDependencies) {
+                                       ModelDependenciesBean bean = ModelDependenciesBean.create(graph, info.library.getResource());
+                                       conf.baseExtensions.put(ModelDependenciesBean.EXTENSION_KEY, new Variant(ModelDependenciesBean.BINDING, bean));
+                               }
+                               ModelingUtils.exportModel(graph, conf, location.getAbsolutePath(), "", 1);
                        }
                
        });