From b5e0e7f2125c713a6e623d9ec6e5176430d460a4 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 18 Dec 2017 17:03:00 +0100
Subject: [PATCH] when no information about modifier is provided then
 Modulation is used as default

---
 .../celldesigner/types/ModifierTypeUtils.java |  3 +-
 .../converter/model/sbml/SbmlParser.java      | 18 +++-
 .../model/sbml/GenericSbmlParserTest.java     |  1 -
 .../model/map/modifier/Catalysis.java         | 82 +++++++++----------
 .../model/map/modifier/Inhibition.java        |  5 +-
 .../model/map/modifier/Modulation.java        |  5 +-
 .../map/modifier/PhysicalStimulation.java     |  5 +-
 .../mapviewer/model/map/modifier/Trigger.java |  5 +-
 .../model/map/modifier/UnknownCatalysis.java  |  5 +-
 .../model/map/modifier/UnknownInhibition.java |  5 +-
 .../model/map/reaction/Modifier.java          |  5 +-
 11 files changed, 81 insertions(+), 58 deletions(-)

diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java
index dda0a2c6a9..5b4f536996 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java
@@ -14,6 +14,7 @@ import lcsb.mapviewer.model.map.reaction.AbstractNode;
 import lcsb.mapviewer.model.map.reaction.Modifier;
 import lcsb.mapviewer.model.map.reaction.NodeOperator;
 import lcsb.mapviewer.model.map.reaction.Reaction;
+import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
@@ -79,7 +80,7 @@ public class ModifierTypeUtils {
 			throw new InvalidArgumentException("Unknown modifier type: " + type);
 		}
 		try {
-			Modifier mod = modType.getClazz().getConstructor(Species.class).newInstance(alias);
+			Modifier mod = modType.getClazz().getConstructor(Element.class).newInstance(alias);
 			return mod;
 		} catch (Exception e) {
 			throw new InvalidStateException("Problem with instantiation of Modifier class: " + type);
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java
index 0b8b1e4c24..bbfbd3b22d 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java
@@ -5,6 +5,7 @@ import java.awt.geom.Point2D;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.HashSet;
 import java.util.Set;
 
 import javax.xml.stream.XMLStreamException;
@@ -30,6 +31,7 @@ import lcsb.mapviewer.model.map.InconsistentModelException;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
+import lcsb.mapviewer.model.map.modifier.Modulation;
 import lcsb.mapviewer.model.map.reaction.AbstractNode;
 import lcsb.mapviewer.model.map.reaction.AndOperator;
 import lcsb.mapviewer.model.map.reaction.Modifier;
@@ -220,12 +222,26 @@ public class SbmlParser implements IConverter {
       operator.setLine(line);
       reaction.addNode(operator);
     }
+    Set<Modifier> modifiersToBeRemoved = new HashSet<>();
+    Set<Modifier> modifiersToBeAdded = new HashSet<>();
+    for (Modifier modifier : reaction.getModifiers()) {
+      if (modifier.getClass() == Modifier.class) {
+        modifiersToBeRemoved.add(modifier);
+        modifiersToBeAdded.add(new Modulation(modifier.getElement()));
+      }
+    }
+    for (Modifier modifier : modifiersToBeRemoved) {
+      reaction.removeModifier(modifier);
+    }
+    for (Modifier modifier : modifiersToBeAdded) {
+      reaction.addModifier(modifier);
+    }
     for (Modifier modifier : reaction.getModifiers()) {
       PolylineData line = new PolylineData();
       line.addPoint(modifier.getElement().getCenter());
       line.addPoint(center);
       modifier.setLine(line);
-      if (modifier.getClass() == Modifier.class) {
+      if (modifier.getClass() == Modulation.class) {
         line.setEndAtd(ModifierType.MODULATION_STRING.getAtd());
       }
     }
diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlParserTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlParserTest.java
index 252a952df8..28a13cca23 100644
--- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlParserTest.java
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlParserTest.java
@@ -61,7 +61,6 @@ public class GenericSbmlParserTest {
 
       Model model = converter.createModel(new ConverterParams().filename(filePath.toString()));
       model.setName(null);
-      logger.debug(model.getElements().size());
 
       // Create and display image of parsed map
       AbstractImageGenerator.Params params = new AbstractImageGenerator.Params().height(model.getHeight())
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Catalysis.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Catalysis.java
index d5fa8d1a50..f93e8502a9 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Catalysis.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Catalysis.java
@@ -5,7 +5,7 @@ import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.reaction.Modifier;
-import lcsb.mapviewer.model.map.species.Species;
+import lcsb.mapviewer.model.map.species.Element;
 
 /**
  * This class defines catalysis modifier in the reaction.
@@ -17,45 +17,45 @@ import lcsb.mapviewer.model.map.species.Species;
 @DiscriminatorValue("CATALYSIS_MODIFIER")
 public class Catalysis extends Modifier {
 
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * Default constructor.
-	 */
-	public Catalysis() {
-		super();
-	}
-
-	/**
-	 * Constructor that creates {@link Catalysis} modifier for given element.
-	 * 
-	 * @param element
-	 *          element object to which this modifiar is assigned
-	 */
-	public Catalysis(Species element) {
-		super(element);
-	}
-
-	/**
-	 * Constructor that creates object with data taken from parameter catalysis.
-	 * 
-	 * @param catalysis
-	 *          object from which data are initialized
-	 */
-	public Catalysis(Catalysis catalysis) {
-		super(catalysis);
-	}
-
-	@Override
-	public Catalysis copy() {
-		if (this.getClass() == Catalysis.class) {
-			return new Catalysis(this);
-		} else {
-			throw new NotImplementedException("Method copy() should be overriden in class " + this.getClass());
-		}
-	}
+  /**
+   * 
+   */
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * Default constructor.
+   */
+  public Catalysis() {
+    super();
+  }
+
+  /**
+   * Constructor that creates {@link Catalysis} modifier for given element.
+   * 
+   * @param element
+   *          element object to which this modifier is assigned
+   */
+  public Catalysis(Element element) {
+    super(element);
+  }
+
+  /**
+   * Constructor that creates object with data taken from parameter catalysis.
+   * 
+   * @param catalysis
+   *          object from which data are initialized
+   */
+  public Catalysis(Catalysis catalysis) {
+    super(catalysis);
+  }
+
+  @Override
+  public Catalysis copy() {
+    if (this.getClass() == Catalysis.class) {
+      return new Catalysis(this);
+    } else {
+      throw new NotImplementedException("Method copy() should be overriden in class " + this.getClass());
+    }
+  }
 
 }
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Inhibition.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Inhibition.java
index 5eb71a10f1..a7ee536523 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Inhibition.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Inhibition.java
@@ -5,6 +5,7 @@ import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.reaction.Modifier;
+import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
@@ -33,9 +34,9 @@ public class Inhibition extends Modifier {
 	 * Constructor that creates inhibition modifier for given element.
 	 * 
 	 * @param element
-	 *          element object to which this modifiar is assigned
+	 *          element object to which this modifier is assigned
 	 */
-	public Inhibition(Species element) {
+	public Inhibition(Element element) {
 		super(element);
 	}
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Modulation.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Modulation.java
index 3cc706b094..b909f91c2a 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Modulation.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Modulation.java
@@ -5,6 +5,7 @@ import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.reaction.Modifier;
+import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
@@ -33,9 +34,9 @@ public class Modulation extends Modifier {
 	 * Constructor that creates modulation modifier for given element.
 	 * 
 	 * @param element
-	 *          element object to which this modifiar is assigned
+	 *          element object to which this modifier is assigned
 	 */
-	public Modulation(Species element) {
+	public Modulation(Element element) {
 		super(element);
 	}
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulation.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulation.java
index ca7fcb28cc..40114e8b15 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulation.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/PhysicalStimulation.java
@@ -5,6 +5,7 @@ import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.reaction.Modifier;
+import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
@@ -33,9 +34,9 @@ public class PhysicalStimulation extends Modifier {
 	 * Constructor that creates physical stimulation modifier for given element.
 	 * 
 	 * @param element
-	 *          element object to which this modifiar is assigned
+	 *          element object to which this modifier is assigned
 	 */
-	public PhysicalStimulation(Species element) {
+	public PhysicalStimulation(Element element) {
 		super(element);
 	}
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Trigger.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Trigger.java
index 642f15c1b4..99baa3f051 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/Trigger.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/Trigger.java
@@ -5,6 +5,7 @@ import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.reaction.Modifier;
+import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
@@ -33,9 +34,9 @@ public class Trigger extends Modifier {
 	 * Constructor that creates trigger modifier for given element.
 	 * 
 	 * @param element
-	 *          element object to which this modifiar is assigned
+	 *          element object to which this modifier is assigned
 	 */
-	public Trigger(Species element) {
+	public Trigger(Element element) {
 		super(element);
 	}
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownCatalysis.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownCatalysis.java
index eba97a06f2..6fd3092453 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownCatalysis.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownCatalysis.java
@@ -5,6 +5,7 @@ import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.reaction.Modifier;
+import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
@@ -33,9 +34,9 @@ public class UnknownCatalysis extends Modifier {
 	 * Constructor that creates unknown catalysis modifier for given element.
 	 * 
 	 * @param element
-	 *          element object to which this modifiar is assigned
+	 *          element object to which this modifier is assigned
 	 */
-	public UnknownCatalysis(Species element) {
+	public UnknownCatalysis(Element element) {
 		super(element);
 	}
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownInhibition.java b/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownInhibition.java
index 938249078a..05c76708f7 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownInhibition.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/modifier/UnknownInhibition.java
@@ -5,6 +5,7 @@ import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.reaction.Modifier;
+import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
@@ -34,9 +35,9 @@ public class UnknownInhibition extends Modifier {
 	 * element.
 	 * 
 	 * @param element
-	 *          element object to which this modifiar is assigned
+	 *          element object to which this modifier is assigned
 	 */
-	public UnknownInhibition(Species element) {
+	public UnknownInhibition(Element element) {
 		super(element);
 	}
 
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Modifier.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Modifier.java
index d97dba4887..39d96b497b 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Modifier.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Modifier.java
@@ -4,6 +4,7 @@ import javax.persistence.DiscriminatorValue;
 import javax.persistence.Entity;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
@@ -38,7 +39,7 @@ public class Modifier extends ReactionNode {
 	 * @param element
 	 *          element that represent this modifier
 	 */
-	public Modifier(Species element) {
+	public Modifier(Element element) {
 		super(element);
 	}
 
@@ -46,7 +47,7 @@ public class Modifier extends ReactionNode {
 	 * Constructor that initialize the modifier with data from parameter.
 	 * 
 	 * @param original
-	 *          original modifier used for data initalization
+	 *          original modifier used for data initialization
 	 */
 	protected Modifier(Modifier original) {
 		super(original);
-- 
GitLab