From f67b3a3895f7b682595eaef2c4ae12d7cb916f31 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 4 Jan 2019 14:25:43 +0100
Subject: [PATCH] import/export of element former symbols implemented

---
 .../extension/multi/BioEntityFeature.java     | 29 ++++++++++---------
 .../sbml/species/SbmlSpeciesExporter.java     |  8 +++++
 .../model/sbml/species/SbmlSpeciesParser.java |  2 ++
 3 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/extension/multi/BioEntityFeature.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/extension/multi/BioEntityFeature.java
index 32df3fa608..b1f3403977 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/extension/multi/BioEntityFeature.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/extension/multi/BioEntityFeature.java
@@ -7,25 +7,28 @@ import lcsb.mapviewer.model.map.species.Protein;
 public enum BioEntityFeature {
   STRUCTURAL_STATE("Structural state", "", new Class<?>[] { Protein.class, Complex.class },
       "minerva_structural_state_"),
-  
+
   POSITION_TO_COMPARTMENT("Position to compartment", "undefined", new Class<?>[] { Element.class },
-      "minerva_position_to_compartment_"), 
-  
+      "minerva_position_to_compartment_"),
+
   SYNONYM("Synonym", null, new Class<?>[] { Element.class },
-      "minerva_synonym_"), 
-  
+      "minerva_synonym_"),
+
+  FORMER_SYMBOL("Former symbol", null, new Class<?>[] { Element.class },
+      "minerva_former_symbol_"),
+
   FULL_NAME("Full name", null, new Class<?>[] { Element.class },
-      "minerva_full_name_"), 
-  
+      "minerva_full_name_"),
+
   FORMULA("Formula", null, new Class<?>[] { Element.class },
-      "minerva_formula_"), 
-  
+      "minerva_formula_"),
+
   ABBREVIATION("Abbreviation", null, new Class<?>[] { Element.class },
-      "minerva_abbreviation_"), 
-  
+      "minerva_abbreviation_"),
+
   SYMBOL("Symbol", null, new Class<?>[] { Element.class },
-      "minerva_symbol_"); 
-  
+      "minerva_symbol_");
+
   private String featureName;
   private String defaultValue;
   private Class<?>[] properClasses;
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 b9bacc64e8..a0ea4fa473 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
@@ -99,6 +99,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
     assignPostionToCompartmentToMulti(element, multiExtension, speciesType);
     assignElementModificationResiduesToMulti(element, multiExtension, speciesType);
     assignListOfSynonymsToMulti(element, multiExtension, speciesType);
+    assignListOfFormerSymbolsToMulti(element, multiExtension, speciesType);
     assignSymbolToMulti(element, multiExtension, speciesType);
     assignFullNameToMulti(element, multiExtension, speciesType);
     assignFormulaToMulti(element, multiExtension, speciesType);
@@ -273,6 +274,13 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
     }
   }
 
+  private void assignListOfFormerSymbolsToMulti(Species element, MultiSpeciesPlugin multiExtension,
+      MultiSpeciesType speciesType) {
+    for (String formerSymbol : element.getFormerSymbols()) {
+      assignValueToFeature(element, multiExtension, speciesType, formerSymbol, BioEntityFeature.FORMER_SYMBOL);
+    }
+  }
+
   private void assignSymbolToMulti(Species element, MultiSpeciesPlugin multiExtension,
       MultiSpeciesType speciesType) {
     assignValueToFeature(element, multiExtension, speciesType, element.getSymbol(), BioEntityFeature.SYMBOL);
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 7b19918850..1de4988a3f 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
@@ -145,6 +145,8 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species>
       }
     } else if (MultiPackageNamingUtils.isFeatureId(featureTypeString, BioEntityFeature.SYNONYM)) {
       minervaElement.setSynonyms(featureValues);
+    } else if (MultiPackageNamingUtils.isFeatureId(featureTypeString, BioEntityFeature.FORMER_SYMBOL)) {
+      minervaElement.setFormerSymbols(featureValues);
     } else if (MultiPackageNamingUtils.isFeatureId(featureTypeString, BioEntityFeature.SYMBOL)) {
       if (featureValues.size() != 1) {
         logger.warn(warnPrefix + "Symbol must have exactly one value");
-- 
GitLab