diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java index 3d860fecee9bbe994a4011e7674ffc9c333979fd..e8129d4803466be6877594e143ded54c0a67ed7b 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java @@ -1,5 +1,7 @@ package lcsb.mapviewer.converter.model.sbml; +import java.io.UnsupportedEncodingException; + import javax.xml.stream.XMLStreamException; import org.apache.commons.io.output.ByteArrayOutputStream; @@ -14,6 +16,7 @@ import org.sbml.jsbml.ext.layout.LayoutModelPlugin; import org.sbml.jsbml.ext.render.GlobalRenderInformation; import org.sbml.jsbml.ext.render.RenderLayoutPlugin; +import lcsb.mapviewer.common.exception.InvalidStateException; import lcsb.mapviewer.converter.model.sbml.reaction.SbmlReactionExporter; import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesExporter; import lcsb.mapviewer.converter.model.sbml.units.SbmlUnitExporter; @@ -25,30 +28,34 @@ public class SbmlExporter { public String toXml(lcsb.mapviewer.model.map.model.Model model) throws SBMLException, XMLStreamException, InconsistentModelException { - SBMLDocument doc = new SBMLDocument(3, 1); - Model result = doc.createModel(model.getIdModel()); - result.setName(model.getName()); - Layout layout = createSbmlLayout(model, result); + try { + SBMLDocument doc = new SBMLDocument(3, 1); + Model result = doc.createModel(model.getIdModel()); + result.setName(model.getName()); + Layout layout = createSbmlLayout(model, result); - SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(layout, model); - SbmlBioEntityExporter<Species, org.sbml.jsbml.Species> speciesExporter = new SbmlSpeciesExporter(layout, model, - compartmentExporter); - SbmlReactionExporter reactionExporter = new SbmlReactionExporter(layout, model, speciesExporter, - compartmentExporter); - SbmlUnitExporter unitExporter = new SbmlUnitExporter(model); - SbmlParameterExporter parameterExporter = new SbmlParameterExporter(model); - SbmlFunctionExporter functionExporter = new SbmlFunctionExporter(model); + SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(layout, model); + SbmlBioEntityExporter<Species, org.sbml.jsbml.Species> speciesExporter = new SbmlSpeciesExporter(layout, model, + compartmentExporter); + SbmlReactionExporter reactionExporter = new SbmlReactionExporter(layout, model, speciesExporter, + compartmentExporter); + SbmlUnitExporter unitExporter = new SbmlUnitExporter(model); + SbmlParameterExporter parameterExporter = new SbmlParameterExporter(model); + SbmlFunctionExporter functionExporter = new SbmlFunctionExporter(model); - compartmentExporter.exportElements(result); - speciesExporter.exportElements(result); - reactionExporter.exportElements(result); - unitExporter.exportUnits(result); - parameterExporter.exportParameter(result); - functionExporter.exportFunction(result); + compartmentExporter.exportElements(result); + speciesExporter.exportElements(result); + reactionExporter.exportElements(result); + unitExporter.exportUnits(result); + parameterExporter.exportParameter(result); + functionExporter.exportFunction(result); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - SBMLWriter.write(doc, stream, "minerva", "1.0"); - return stream.toString(); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + SBMLWriter.write(doc, stream, "minerva", "1.0"); + return stream.toString("UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new InvalidStateException(e); + } } public Layout createSbmlLayout(lcsb.mapviewer.model.map.model.Model model, Model result) { @@ -68,7 +75,7 @@ public class SbmlExporter { layout.setDimensions(dimensions); layoutPlugin.add(layout); result.addExtension("layout", layoutPlugin); - + createSbmlRenderPlugin(layout, result); return layout; }