diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java index d4255f49b50684db187e2683c41791c7300ee93f..f918d97a6ec7d4101417ecf270b15031cf090ad2 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java +++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java @@ -592,6 +592,7 @@ public class CellDesignerXmlParser extends XmlParser implements IConverter { SpeciesCollectionXmlParser speciesCollectionXmlParser = new SpeciesCollectionXmlParser(elements); ReactionCollectionXmlParser reactionCollectionXmlParser = new ReactionCollectionXmlParser(model, elements, false); + UnitCollectionXmlParser unitCollectionXmlParser = new UnitCollectionXmlParser(); FunctionCollectionXmlParser functionCollectionXmlParser = new FunctionCollectionXmlParser(); ParameterCollectionXmlParser parameterCollectionXmlParser = new ParameterCollectionXmlParser(model); @@ -611,6 +612,7 @@ public class CellDesignerXmlParser extends XmlParser implements IConverter { result.append("</notes>"); } + result.append(unitCollectionXmlParser.toXml(model.getUnits())); result.append(functionCollectionXmlParser.toXml(model.getFunctions())); result.append(parameterCollectionXmlParser.toXml(model.getParameters())); result.append(annotationToXml(model, elements)); diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitCollectionXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitCollectionXmlParser.java index 1cf70a80670ce41454055cdb8f9c71f965e232a8..a442d3c394c894c944aa117e948d8f08201fdbe3 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitCollectionXmlParser.java +++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitCollectionXmlParser.java @@ -21,4 +21,14 @@ public class UnitCollectionXmlParser extends XmlParser { return result; } + public String toXml(Set<SbmlUnit> units) { + StringBuilder builder = new StringBuilder(); + builder.append("<listOfUnitDefinitions>\n"); + for (SbmlUnit unit: units) { + builder.append(unitParser.toXml(unit)); + } + builder.append("</listOfUnitDefinitions>\n"); + return builder.toString(); + } + } diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitXmlParser.java index fe1ca925a076d10518635f53844040873aa43821..d93d4f29516722932f5a53f2ebf5c4da806f76f1 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitXmlParser.java +++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitXmlParser.java @@ -67,4 +67,30 @@ public class UnitXmlParser extends XmlParser { } return new SbmlUnitTypeFactor(unitType, exponent, scale, multiplier); } + + public String toXml(SbmlUnit unit) { + StringBuilder result = new StringBuilder(); + result.append("<unitDefinition "); + result.append("id=\"" + unit.getUnitId() + "\" "); + result.append("name=\"" + unit.getName() + "\" "); + result.append(">\n"); + result.append("<listOfUnits>\n"); + for (SbmlUnitTypeFactor factor : unit.getUnitTypeFactors()) { + result.append(toXml(factor)); + } + result.append("</listOfUnits>\n"); + result.append("</unitDefinition>"); + return result.toString(); + } + + private String toXml(SbmlUnitTypeFactor factor) { + StringBuilder result = new StringBuilder(); + result.append("<unit "); + result.append("kind=\"" + factor.getUnitType().toString().toLowerCase() + "\" "); + result.append("scale=\"" + factor.getScale() + "\" "); + result.append("exponent=\"" + factor.getExponent() + "\" "); + result.append("multiplier=\"" + factor.getMultiplier() + "\" "); + result.append("/>\n"); + return result.toString(); + } }