From c0857fb0c25288fb79d54e768104f12b5fe514b2 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <p.gawron@atcomp.pl>
Date: Tue, 4 Feb 2025 15:28:59 +0100
Subject: [PATCH] don't export z-index as compartmentOrder for not compartments

---
 CHANGELOG                                                | 6 ++++++
 .../converter/model/sbgnml/SbgnmlXmlExporter.java        | 9 +++++----
 .../converter/model/sbgnml/SbgnmlTestFunctions.java      | 4 ++--
 .../converter/model/sbgnml/SbgnmlXmlExporterTest.java    | 5 -----
 4 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 27846d35f8..6cc7604fdd 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+minerva (18.1.1) stable; urgency=medium
+  * Bug fix: SBGN-ML import/export should not use compartmentOrder for
+    non-compartment entities (#2193)
+
+ -- Piotr Gawron <piotr.gawron@uni.lu>  Tue, 04 Feb 2025 16:00:00 +0200
+
 minerva (18.1.0) stable; urgency=medium
   * Small improvement: SBGN-ML import/export is processing notes (#2192)
   * Small improvement: SBGN-ML import/export is processing compartmentOrder
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 cc94a4a40b..62c8aadb93 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
@@ -274,9 +274,6 @@ public class SbgnmlXmlExporter {
     newGlyph.setClazz(getGlyphClazzFromElement(element).getClazz());
     newGlyph.setLabel(getGlyphLabelFromAlias(element));
     newGlyph.setNotes(notesConverter.createNotesNode(element.getNotes()));
-    if (element.getZ() != null) {
-      newGlyph.setCompartmentOrder(element.getZ().floatValue());
-    }
 
     final Bbox bbox = new Bbox();
     bbox.setX(element.getX().floatValue());
@@ -285,7 +282,11 @@ public class SbgnmlXmlExporter {
     bbox.setH(element.getHeight().floatValue());
     newGlyph.setBbox(bbox);
 
-    if (element instanceof Species) {
+    if (element instanceof Compartment) {
+      if (element.getZ() != null) {
+        newGlyph.setCompartmentOrder(element.getZ().floatValue());
+      }
+    } else if (element instanceof Species) {
       final Species species = (Species) element;
       if (element instanceof Protein) {
         final Protein protein = (Protein) element;
diff --git a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlTestFunctions.java b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlTestFunctions.java
index 4f90c7ec36..a834093676 100644
--- a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlTestFunctions.java
+++ b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlTestFunctions.java
@@ -141,12 +141,12 @@ public class SbgnmlTestFunctions extends TestUtils {
     model2.setIdModel(model.getIdModel());
     model2.setName(model.getName());
     for (final Drawable d : model.getDrawables()) {
-      if (!(d instanceof Element)) {
+      if (!(d instanceof Compartment)) {
         d.setZ(null);
       }
     }
     for (final Drawable d : model2.getDrawables()) {
-      if (!(d instanceof Element)) {
+      if (!(d instanceof Compartment)) {
         d.setZ(null);
       }
     }
diff --git a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporterTest.java b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporterTest.java
index 2f1143c6a9..34655cfe5d 100644
--- a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporterTest.java
+++ b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlExporterTest.java
@@ -175,17 +175,12 @@ public class SbgnmlXmlExporterTest extends SbgnmlTestFunctions {
 
   @Test
   public void importExportZ() throws Exception {
-    GenericProtein protein = createProtein();
-    protein.setZ(3);
-
     Compartment compartment = createCompartment();
     compartment.setZ(4);
-    compartment.addElement(protein);
 
     Model model = new ModelFullIndexed(null);
     model.setWidth(2000);
     model.setHeight(2000);
-    model.addElement(protein);
     model.addElement(compartment);
 
     Model model2 = serializeAndCleanOverSbgn(model);
-- 
GitLab