From 19d4679433193ee3ad0c6a7c9cb6f92064f58329 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 19 Nov 2018 13:36:11 +0100
Subject: [PATCH] export of compartments fixed

---
 .../model/sbgnml/SbgnmlXmlExporter.java       | 13 ++++---
 .../model/sbgnml/CellDesignerToSbgnTest.java  | 37 +++++++++++++++++++
 2 files changed, 45 insertions(+), 5 deletions(-)

diff --git a/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporter.java b/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporter.java
index 824664c47b..1b536d4ee9 100644
--- a/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporter.java
+++ b/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporter.java
@@ -161,11 +161,14 @@ public class SbgnmlXmlExporter {
     map.setLanguage(Language.PD.getName());
     Sbgn sbgnData = new Sbgn();
 
-    List<Species> aliases = model.getSpeciesList();
-
-    for (Species a : aliases) {
-      if (a.getComplex() == null) {
-        Glyph newGlyph = aliasToGlyph(a);
+    for (Element element : model.getElements()) {
+      if (element instanceof Species) {
+        if (((Species) element).getComplex() == null) {
+          Glyph newGlyph = aliasToGlyph(element);
+          map.getGlyph().add(newGlyph);
+        }
+      } else if (element instanceof Compartment) {
+        Glyph newGlyph = aliasToGlyph(element);
         map.getGlyph().add(newGlyph);
       }
     }
diff --git a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesignerToSbgnTest.java b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesignerToSbgnTest.java
index edaea41e34..05fca1f6c7 100644
--- a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesignerToSbgnTest.java
+++ b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesignerToSbgnTest.java
@@ -14,10 +14,14 @@ import org.junit.Test;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.IConverter;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.model.map.species.Element;
+import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 public class CellDesignerToSbgnTest {
   Logger logger = Logger.getLogger(CellDesignerToSbgnTest.class);
+  ElementUtils eu = new ElementUtils();
 
   @Before
   public void setUp() throws Exception {
@@ -70,4 +74,37 @@ public class CellDesignerToSbgnTest {
     }
   }
 
+  @Test
+  public void testCompartmentsExport() throws Exception {
+    try {
+      IConverter converter = new CellDesignerXmlParser();
+      IConverter converter2 = new SbgnmlXmlConverter();
+
+      Model model = converter.createModel(new ConverterParams().filename("testFiles/cellDesigner/neuron.xml"));
+
+      String output = File.createTempFile("temp-sbgn-output", ".sbgn").getAbsolutePath();
+      converter2.exportModelToFile(model, output);
+
+      converter2.createModel(new ConverterParams().filename(output));
+
+      String fileContent;
+      try (FileInputStream inputStream = new FileInputStream(output)) {
+        fileContent = IOUtils.toString(inputStream, "UTF-8");
+      }
+
+      for (Element element : model.getElements()) {
+        if (element instanceof Compartment) {
+          assertTrue(eu.getElementTag(element) + " comparmtent is not exported",
+              fileContent.contains(element.getElementId()));
+        }
+      }
+
+      new File(output).delete();
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+
+  }
+
 }
-- 
GitLab