From 1f093f89a903a502fb9ac3eac44dd5f75decbb59 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 7 Jan 2019 10:34:35 +0100
Subject: [PATCH] export of initial concentration added

---
 .../sbml/species/SbmlSpeciesExporter.java     |   3 +
 .../model/sbml/species/SbmlSpeciesParser.java |   3 +
 .../model/sbml/AllSbmlConverterTests.java     |   1 +
 .../model/sbml/ElementPropertiesExport.java   | 102 ++++++++++++++++++
 4 files changed, 109 insertions(+)
 create mode 100644 converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExport.java

diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java
index 304fc53dc4..ee081b42f4 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java
@@ -77,6 +77,9 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
     if (element.getInitialAmount() != null) {
       result.setInitialAmount(element.getInitialAmount());
     }
+    if (element.getInitialConcentration() != null) {
+      result.setInitialConcentration(element.getInitialConcentration());
+    }
     if (element.hasOnlySubstanceUnits() != null) {
       result.setHasOnlySubstanceUnits(element.hasOnlySubstanceUnits());
     }
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java
index d458857d6d..78fb7ca6c8 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java
@@ -78,6 +78,9 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species>
       if (!Double.isNaN(species.getInitialAmount())) {
         result.setInitialAmount(species.getInitialAmount());
       }
+      if (!Double.isNaN(species.getInitialConcentration())) {
+        result.setInitialConcentration(species.getInitialConcentration());
+      }
       if (species.isSetHasOnlySubstanceUnits()) {
         result.setOnlySubstanceUnits(species.hasOnlySubstanceUnits());
       }
diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java
index d33aff584a..922a00eb38 100644
--- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java
@@ -13,6 +13,7 @@ import lcsb.mapviewer.converter.model.sbml.species.AllSbmlSpeciesTests;
     GenericSbmlParserTest.class,
     GenericSbmlToXmlParserTest.class,
     CellDesignerToMultiExportTest.class,
+    ElementPropertiesExport.class,
     ElementPropertiesExportToMultiTest.class,
     ElementPropertiesExportToLayoutTest.class,
     MultiParserTest.class,
diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExport.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExport.java
new file mode 100644
index 0000000000..c4f3cf8c96
--- /dev/null
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExport.java
@@ -0,0 +1,102 @@
+package lcsb.mapviewer.converter.model.sbml;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import lcsb.mapviewer.converter.ConverterParams;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.model.map.model.ModelComparator;
+import lcsb.mapviewer.model.map.model.ModelFullIndexed;
+import lcsb.mapviewer.model.map.species.Element;
+import lcsb.mapviewer.model.map.species.GenericProtein;
+import lcsb.mapviewer.model.map.species.Species;
+
+@RunWith(Parameterized.class)
+public class ElementPropertiesExport {
+
+  static Logger logger = Logger.getLogger(ElementPropertiesExport.class.getName());
+
+  private Model model;
+
+  public ElementPropertiesExport(String propertyName, Model model) {
+    this.model = model;
+  }
+
+  @Parameters(name = "{index} : {0}")
+  public static Collection<Object[]> data() throws IOException {
+    Collection<Object[]> data = new ArrayList<>();
+
+    data.add(createTestEntry("Empty", createElement()));
+
+    Species element = createElement();
+    element.setInitialConcentration(1.0);
+    data.add(createTestEntry("Initial concentration", element));
+
+    element = createElement();
+    element.setInitialAmount(2.0);
+    data.add(createTestEntry("Initial amount", element));
+
+    element = createElement();
+    element.setBoundaryCondition(true);
+    data.add(createTestEntry("Boundary condition", element));
+
+    element = createElement();
+    element.setConstant(true);
+    data.add(createTestEntry("Constatnt", element));
+
+    return data;
+  }
+
+  private static Object[] createTestEntry(String string, Element element) {
+    Model result = new ModelFullIndexed(null);
+    result.setIdModel("X");
+    result.setWidth(200);
+    result.setHeight(200);
+    result.addElement(element);
+    return new Object[] { string, result };
+  }
+
+  private static Species createElement() {
+    Species element = new GenericProtein("id");
+    element.setX(10);
+    element.setY(10);
+    element.setWidth(1000);
+    element.setHeight(30);
+    return element;
+  }
+
+  @Test
+  public void createModelTest() throws Exception {
+    try {
+      SbmlExporter sbmlExporter = new SbmlExporter();
+      SbmlParser sbmlParser = new SbmlParser();
+      String xmlString = sbmlExporter.toXml(model);
+      logger.debug(xmlString);
+
+      InputStream is = new ByteArrayInputStream(xmlString.getBytes("UTF-8"));
+
+      Model model2 = sbmlParser.createModel(new ConverterParams().inputStream(is).sizeAutoAdjust(false));
+      model2.setName(model.getName());
+
+      ModelComparator comparator = new ModelComparator();
+      assertEquals(0, comparator.compare(model, model2));
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+}
-- 
GitLab