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 be0d6950ae83dc07f3b48d1a24af59b1f0d8824a..2675a9451b07b81bbef9fd28c8cf2e95bd864500 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 53e3112ee5f94ec1a78214cc60c8fd5fa1223799..fc85d01719fe24672c6cf84bf32d91ac7957d6f9 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 30a69c2fc08177226a44eacd77921c7bd48d015a..110dcddb571cc96fa8c0f39a3e80e9b68e8aac9f 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 a8d1910a6403505165828b154f8bfbcfbf901f5c..aadfb454e292c9fcffaccd18a4aa2877821d3e48 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"); + } } /**