From c94158a79f70fcaff8709b4b358c43751b14ba56 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 21 Dec 2017 16:22:16 +0100
Subject: [PATCH] export of elements use autogenerated ids

---
 .../converter/model/sbml/SbmlBioEntityExporter.java        | 6 ++++++
 .../converter/model/sbml/SbmlCompartmentExporter.java      | 2 +-
 .../lcsb/mapviewer/converter/model/sbml/SbmlExporter.java  | 3 ++-
 .../converter/model/sbml/SbmlReactionExporter.java         | 7 +++----
 .../converter/model/sbml/SbmlSpeciesExporter.java          | 3 +--
 5 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java
index 1a18c6ef25..4e9d5a26ab 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java
@@ -28,6 +28,8 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s
 
   private Map<String, S> sbmlElementByElementNameAndCompartmentName = new HashMap<>();
 
+  private int idCounter = 0;
+
   public SbmlBioEntityExporter(Layout sbmlLayout, lcsb.mapviewer.model.map.model.Model minervaModel) {
     this.layout = sbmlLayout;
     this.minervaModel = minervaModel;
@@ -81,4 +83,8 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s
 
   protected abstract AbstractReferenceGlyph createElementGlyph(String sbmlCompartmentId, String glyphId);
 
+  protected String getNextId() {
+    return (idCounter++) + "";
+  }
+
 }
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java
index 08b5be58ec..269927153d 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java
@@ -18,7 +18,7 @@ public class SbmlCompartmentExporter extends SbmlElementExporter<Compartment, or
 
   @Override
   public org.sbml.jsbml.Compartment createSbmlElement(Compartment element) throws InconsistentModelException {
-    return sbmlModel.createCompartment("comp_" + element.getName());
+    return sbmlModel.createCompartment("comp_" + (getNextId()));
   }
 
   @Override
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java
index 0a54f2fa59..df47256188 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java
@@ -12,6 +12,7 @@ import org.sbml.jsbml.ext.layout.Layout;
 import org.sbml.jsbml.ext.layout.LayoutModelPlugin;
 
 import lcsb.mapviewer.model.map.InconsistentModelException;
+import lcsb.mapviewer.model.map.species.Species;
 
 public class SbmlExporter {
   public String toXml(lcsb.mapviewer.model.map.model.Model model)
@@ -21,7 +22,7 @@ public class SbmlExporter {
     Layout layout = createSbmlLayout(model, result);
 
     SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(layout, model);
-    SbmlSpeciesExporter speciesExporter = new SbmlSpeciesExporter(layout, model, compartmentExporter);
+    SbmlBioEntityExporter<Species, org.sbml.jsbml.Species> speciesExporter = new SbmlSpeciesExporter(layout, model, compartmentExporter);
     SbmlReactionExporter reactionExporter = new SbmlReactionExporter(layout, model, speciesExporter);
     compartmentExporter.exportElements(result);
     speciesExporter.exportElements(result);
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java
index 092a3b7679..e6be4a1c1e 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java
@@ -15,18 +15,17 @@ import lcsb.mapviewer.model.map.reaction.Reaction;
 
 public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sbml.jsbml.Reaction> {
   Logger logger = Logger.getLogger(SbmlReactionExporter.class);
-  private int idCounter = 0;
-  private SbmlSpeciesExporter speciesExporter;
+  private SbmlBioEntityExporter<lcsb.mapviewer.model.map.species.Species, Species> speciesExporter;
 
   public SbmlReactionExporter(Layout layout, lcsb.mapviewer.model.map.model.Model minervaModel,
-      SbmlSpeciesExporter speciesExporter) {
+      SbmlBioEntityExporter<lcsb.mapviewer.model.map.species.Species, Species> speciesExporter) {
     super(layout, minervaModel);
     this.speciesExporter = speciesExporter;
   }
 
   @Override
   public org.sbml.jsbml.Reaction createSbmlElement(Reaction reaction) throws InconsistentModelException {
-    org.sbml.jsbml.Reaction result = sbmlModel.createReaction("reaction_" + (idCounter++));
+    org.sbml.jsbml.Reaction result = sbmlModel.createReaction("reaction_" + (getNextId()));
     for (Product product : reaction.getProducts()) {
       Species sbmlSymbol = speciesExporter.sbmlElementByElementId.get(product.getElement().getElementId());
       result.createProduct(sbmlSymbol);
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesExporter.java
index 692095b88b..cbde58157f 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesExporter.java
@@ -11,7 +11,6 @@ import lcsb.mapviewer.model.map.species.Species;
 
 public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.jsbml.Species> {
   Logger logger = Logger.getLogger(SbmlSpeciesExporter.class);
-  private int idCounter = 0;
   private SbmlCompartmentExporter compartmentExporter;
 
   public SbmlSpeciesExporter(Layout layout, lcsb.mapviewer.model.map.model.Model minervaModel,
@@ -22,7 +21,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
 
   @Override
   public org.sbml.jsbml.Species createSbmlElement(Species element) throws InconsistentModelException {
-    org.sbml.jsbml.Species result = sbmlModel.createSpecies("species_" + (idCounter++));
+    org.sbml.jsbml.Species result = sbmlModel.createSpecies("species_" + (getNextId()));
     if (element.getCompartment() != null) {
       result.setCompartment(compartmentExporter.getSbmlElement(element.getCompartment(), null));
     }
-- 
GitLab