From 0307845f0707a9057d161d959376f1bf059b7d66 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 17 Dec 2018 10:04:37 +0100 Subject: [PATCH] throw proper exceptions --- .../sbml/reaction/SbmlReactionParser.java | 8 ++++++++ .../model/sbml/species/SbmlSpeciesParser.java | 18 +++++++++++------- .../mapviewer/model/map/reaction/Product.java | 6 +++++- .../mapviewer/model/map/reaction/Reactant.java | 4 ++++ 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java index be0d6950ae..2675a9451b 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java @@ -439,10 +439,18 @@ public class SbmlReactionParser extends SbmlBioEntityParser { } for (SpeciesReference reactant : sbmlReaction.getListOfReactants()) { Species element = minervaModel.getElementByElementId(reactant.getSpecies()); + if (element == null) { + throw new InvalidInputDataExecption( + eu.getElementTag(reaction) + "Species with id " + reactant.getSpecies() + " cannot be found"); + } reaction.addReactant(new Reactant(element)); } for (SpeciesReference product : sbmlReaction.getListOfProducts()) { Species element = minervaModel.getElementByElementId(product.getSpecies()); + if (element == null) { + throw new InvalidInputDataExecption( + eu.getElementTag(reaction) + "Species with id " + product.getSpecies() + " cannot be found"); + } reaction.addProduct(new Product(element)); } 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 53e3112ee5..fc85d01719 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 @@ -26,6 +26,9 @@ import lcsb.mapviewer.model.map.species.Unknown; public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species> { Logger logger = Logger.getLogger(SbmlSpeciesParser.class); + private static String ARTIFITIAL_SINK_ID = "sbml_artifitial_sink"; + private static String ARTIFITIAL_SOURCE_ID = "sbml_artifitial_source"; + public SbmlSpeciesParser(Layout layout, lcsb.mapviewer.model.map.model.Model minervaModel) { super(layout, minervaModel); } @@ -70,7 +73,10 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species> compartmentId = ((org.sbml.jsbml.Species) sbmlLayout.getSpeciesGlyph(element.getElementId()) .getSpeciesInstance()).getCompartment(); } else { - compartmentId = sbmlModel.getSpecies(element.getElementId()).getCompartment(); + if (!element.getElementId().equals(ARTIFITIAL_SINK_ID) + && !element.getElementId().equals(ARTIFITIAL_SOURCE_ID)) { + compartmentId = sbmlModel.getSpecies(element.getElementId()).getCompartment(); + } } assignCompartment(element, compartmentId); } @@ -123,10 +129,9 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species> } public Species getArtifitialInput() { - String artifitialId = "sbml_artifitial_source"; - Species result = minervaModel.getElementByElementId(artifitialId); + Species result = minervaModel.getElementByElementId(ARTIFITIAL_SOURCE_ID); if (result == null) { - result = new Unknown(artifitialId); + result = new Unknown(ARTIFITIAL_SOURCE_ID); result.setName("Artifitial source"); minervaModel.addElement(result); } @@ -134,10 +139,9 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species> } public Species getArtifitialOutput() { - String artifitialId = "sbml_artifitial_sink"; - Species result = minervaModel.getElementByElementId(artifitialId); + Species result = minervaModel.getElementByElementId(ARTIFITIAL_SINK_ID); if (result == null) { - result = new Degraded(artifitialId); + result = new Degraded(ARTIFITIAL_SINK_ID); result.setName("Artifitial sink"); minervaModel.addElement(result); } diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java index 30a69c2fc0..110dcddb57 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Product.java @@ -3,6 +3,7 @@ package lcsb.mapviewer.model.map.reaction; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import lcsb.mapviewer.common.exception.InvalidArgumentException; import lcsb.mapviewer.common.exception.NotImplementedException; import lcsb.mapviewer.model.map.species.Element; import lcsb.mapviewer.model.map.species.Species; @@ -39,7 +40,10 @@ public class Product extends ReactionNode { * element that represent this product */ public Product(Element element) { - super(element); + super(element); + if (element==null) { + throw new InvalidArgumentException("Element cannot be null"); + } } /** diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java index a8d1910a64..aadfb454e2 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reactant.java @@ -3,6 +3,7 @@ package lcsb.mapviewer.model.map.reaction; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import lcsb.mapviewer.common.exception.InvalidArgumentException; import lcsb.mapviewer.common.exception.NotImplementedException; import lcsb.mapviewer.model.map.species.Element; import lcsb.mapviewer.model.map.species.Species; @@ -40,6 +41,9 @@ public class Reactant extends ReactionNode { */ public Reactant(Element element) { super(element); + if (element==null) { + throw new InvalidArgumentException("Element cannot be null"); + } } /** -- GitLab