From 6fb4496022d0a28a08fcfc2d616a9b95826f285d Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 23 Aug 2018 16:06:55 +0200
Subject: [PATCH] export to celldesigner with undefined units in kinetics
 didn't work

---
 .../sbml/reaction/SbmlReactionExporter.java   |  8 ++++++--
 .../reaction/SbmlReactionExporterTest.java    | 19 +++++++++++++++++++
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java
index ec80720e0d..20e89b58a1 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java
@@ -103,8 +103,12 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb
         LocalParameter parameter = new LocalParameter();
         parameter.setId(minervaParameter.getElementId());
         parameter.setName(minervaParameter.getName());
-        parameter.setValue(minervaParameter.getValue());
-        parameter.setUnits(minervaParameter.getUnits().getUnitId());
+        if (minervaParameter.getValue() != null) {
+          parameter.setValue(minervaParameter.getValue());
+        }
+        if (minervaParameter.getUnits() != null) {
+          parameter.setUnits(minervaParameter.getUnits().getUnitId());
+        }
         result.addLocalParameter(parameter);
       }
     }
diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java
index dd090c25ea..472737e3dd 100644
--- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java
@@ -13,7 +13,10 @@ import lcsb.mapviewer.converter.model.sbml.SbmlBioEntityExporter;
 import lcsb.mapviewer.converter.model.sbml.SbmlCompartmentExporter;
 import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesExporter;
 import lcsb.mapviewer.model.map.InconsistentModelException;
+import lcsb.mapviewer.model.map.kinetics.SbmlKinetics;
+import lcsb.mapviewer.model.map.kinetics.SbmlParameter;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
+import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.TriggerReaction;
 import lcsb.mapviewer.model.map.species.Species;
 
@@ -28,6 +31,22 @@ public class SbmlReactionExporterTest {
     assertNotNull(result);
   }
 
+  @Test
+  public void testReactionWithKineticsWithoutUnitsToSbml() throws InconsistentModelException {
+    ModelFullIndexed model = new ModelFullIndexed(null);
+
+    SbmlReactionExporter exporter = createExporter(model);
+    Reaction reaction = new TriggerReaction();
+    SbmlKinetics kinetics = new SbmlKinetics();
+    reaction.setKinetics(kinetics);
+    kinetics.setDefinition("<lambda>" + "<bvar><ci> x </ci></bvar>" + "<bvar><ci> y </ci></bvar>"
+        + "<apply><plus/><ci> x </ci><ci> x </ci><cn type=\"integer\"> 2 </cn></apply>" + "</lambda>\n\n");
+    SbmlParameter parameter = new SbmlParameter("x");
+    kinetics.addParameter(parameter);
+    org.sbml.jsbml.Reaction result = exporter.createSbmlElement(reaction);
+    assertNotNull(result);
+  }
+
   private SbmlReactionExporter createExporter(ModelFullIndexed model) {
     SBMLDocument doc = new SBMLDocument(3, 1);
     Model result = doc.createModel(model.getIdModel());
-- 
GitLab