From 673c60d8c780588e5bfb43525b541991e2678a73 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Mon, 28 Nov 2011 21:11:46 +0000 Subject: [PATCH] Better error handling for SBML import (missing/buggy initialAmount). git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@4195 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/prism/SBML2Prism.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/prism/src/prism/SBML2Prism.java b/prism/src/prism/SBML2Prism.java index 0dd3fb08..5aa6ff98 100644 --- a/prism/src/prism/SBML2Prism.java +++ b/prism/src/prism/SBML2Prism.java @@ -38,7 +38,7 @@ import prism.Prism; public class SBML2Prism implements EntityResolver { private static PrismParser prismParser; - private String compartmentName; + private String compartmentName, speciesId, initialAmountString; private double compartmentSize; private ArrayList speciesList; private ArrayList parameterList; @@ -214,8 +214,18 @@ public class SBML2Prism implements EntityResolver n = nodes.getLength(); for (i = 0; i < n; i++) { e_species = (Element)nodes.item(i); - d = Double.parseDouble(e_species.getAttribute("initialAmount")); - species = new Species(e_species.getAttribute("id"), e_species.getAttribute("name"), d); + speciesId = e_species.getAttribute("id"); + initialAmountString = e_species.getAttribute("initialAmount"); + if ("".equals(initialAmountString)) + throw new PrismException("Missing initial amount for species " + speciesId); + try { + d = Double.parseDouble(initialAmountString); + } + catch (NumberFormatException nfe) { + String msg = "Badly formatted initialAmount \"" + initialAmountString + "\" for species " + speciesId; + throw new PrismException(msg); + } + species = new Species(speciesId, e_species.getAttribute("name"), d); s = e_species.getAttribute("boundaryCondition"); if (s.equals("true")) species.boundaryCondition = true; speciesList.add(species);