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 824664c47bf60a26260478a83d715b41da639ebe..1b536d4ee9b56c9bcd04995456abea94c3786bcb 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 edaea41e34792f4c29faf897c4885f094b761898..05fca1f6c7d59c5ad2d8092ced751872bb0ab45e 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; + } + + } + }