From fdf3237e7afb8d6c20bb421c17e3c7780e97dfc5 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 2 Jan 2019 12:15:04 +0100
Subject: [PATCH] method to extract id of position to compartment feature
 extracted

---
 .../model/sbml/MultiPackageNamingUtils.java       | 13 +++++++++++++
 .../converter/model/sbml/SbmlExporter.java        | 15 +++++++--------
 .../model/sbml/species/SbmlSpeciesExporter.java   |  2 +-
 .../model/sbml/species/SbmlSpeciesParser.java     |  4 ++--
 4 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/MultiPackageNamingUtils.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/MultiPackageNamingUtils.java
index dc9d228f58..c2905e08ce 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/MultiPackageNamingUtils.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/MultiPackageNamingUtils.java
@@ -14,6 +14,7 @@ import lcsb.mapviewer.model.map.species.Species;
  */
 public final class MultiPackageNamingUtils {
 
+  private static final String MINERVA_POSITION_TO_COMPARTMENT_PREFIX = "minerva_position_to_compartment_";
   private static final String MINERVA_STRUCTURAL_STATE_PREFIX = "minerva_structural_state_";
 
   /**
@@ -52,4 +53,16 @@ public final class MultiPackageNamingUtils {
     return featureTypeId.startsWith(MINERVA_STRUCTURAL_STATE_PREFIX);
   }
 
+  public static final String getPositionToCompartmentFeatureId(Class<?> speciesClass) {
+    return MINERVA_POSITION_TO_COMPARTMENT_PREFIX + speciesClass.getSimpleName();
+  }
+
+  public static String getPositionToCompartmentFeatureId(Species element) {
+    return getPositionToCompartmentFeatureId(element.getClass());
+  }
+
+  public static boolean isPositionToCompartmentFeatureId(String featureTypeId) {
+    return featureTypeId.startsWith(MINERVA_POSITION_TO_COMPARTMENT_PREFIX);
+  }
+
 }
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 9021a01c5f..247453556b 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
@@ -37,7 +37,6 @@ import lcsb.mapviewer.model.map.species.Complex;
 import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Protein;
 import lcsb.mapviewer.model.map.species.Species;
-import lcsb.mapviewer.model.map.species.field.PositionToCompartment;
 import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 public class SbmlExporter {
@@ -125,7 +124,7 @@ public class SbmlExporter {
       MultiSpeciesType speciesType = speciesTypeByClass.get(species.getClass());
       addStructuralStateToPossibleValues(speciesType, species);
       if (species instanceof Species) {
-        addPositionToCompartmentToPossibleValues(speciesType, ((Species) species).getPositionToCompartment());
+        addPositionToCompartmentToPossibleValues(speciesType, ((Species) species));
       }
     }
 
@@ -146,11 +145,11 @@ public class SbmlExporter {
 
   }
 
-  private void addPositionToCompartmentToPossibleValues(MultiSpeciesType speciesType, PositionToCompartment position) {
-    SpeciesFeatureType feature = speciesType.getListOfSpeciesFeatureTypes()
-        .get("minerva_position_to_compartment_" + speciesType.getName());
-    if (position != null) {
-      addPosibleValueToFeature(feature, position.name());
+  private void addPositionToCompartmentToPossibleValues(MultiSpeciesType speciesType, Species species) {
+    if (species.getPositionToCompartment() != null) {
+      SpeciesFeatureType feature = speciesType.getListOfSpeciesFeatureTypes()
+          .get(MultiPackageNamingUtils.getPositionToCompartmentFeatureId(species));
+      addPosibleValueToFeature(feature, species.getPositionToCompartment().name());
     }
   }
 
@@ -227,7 +226,7 @@ public class SbmlExporter {
   private void createPositionToCompartmentFeature(Class<? extends Element> clazz, MultiSpeciesType speciesType) {
     SpeciesFeatureType feature = new SpeciesFeatureType();
     feature.setName("Position to compartment");
-    feature.setId("minerva_position_to_compartment_" + clazz.getSimpleName());
+    feature.setId(MultiPackageNamingUtils.getPositionToCompartmentFeatureId(clazz));
     addPosibleValueToFeature(feature, "undefined");
     speciesType.getListOfSpeciesFeatureTypes().add(feature);
   }
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 95ad7b4221..dd6773fba2 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
@@ -112,7 +112,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
       positionToCompartmentName = element.getPositionToCompartment().name();
     }
     SpeciesFeatureType structuralStateFeature = speciesType
-        .getSpeciesFeatureType("minerva_position_to_compartment_" + element.getClass().getSimpleName());
+        .getSpeciesFeatureType(MultiPackageNamingUtils.getPositionToCompartmentFeatureId(element));
     PossibleSpeciesFeatureValue structuralStateFeatureValue = null;
     for (PossibleSpeciesFeatureValue value : structuralStateFeature.getListOfPossibleSpeciesFeatureValues()) {
       if (value.getName().equals(positionToCompartmentName)) {
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 a691c8b681..1c184c1671 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
@@ -126,8 +126,8 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species>
       } else {
         logger.warn(warnPrefix + "Invalid structural state for class " + featureTypeString);
       }
-    } else if (featureTypeString.startsWith("minerva_position_to_compartment_")) {
-      if (featureTypeString.equals("minerva_position_to_compartment_" + minervaElement.getClass().getSimpleName())) {
+    } else if (MultiPackageNamingUtils.isPositionToCompartmentFeatureId(featureTypeString)) {
+      if (featureTypeString.equals(MultiPackageNamingUtils.getPositionToCompartmentFeatureId(minervaElement))) {
         SpeciesFeatureType featureType = speciesType.getListOfSpeciesFeatureTypes().get(featureTypeString);
 
         List<String> positionToCompartments = new ArrayList<>();
-- 
GitLab