diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java index b864632feac0f5b664af934aadbdb7e56ede3b8e..3367dd33ba2862310bf98349c3a7b5c017c47ed2 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java @@ -16,13 +16,14 @@ import lcsb.mapviewer.common.exception.InvalidStateException; import lcsb.mapviewer.model.map.BioEntity; import lcsb.mapviewer.model.map.InconsistentModelException; -public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.sbml.jsbml.AbstractNamedSBase> extends XmlParser { +public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.sbml.jsbml.AbstractNamedSBase> + extends XmlParser { Logger logger = Logger.getLogger(SbmlBioEntityExporter.class); - Layout layout; + private Layout layout; - lcsb.mapviewer.model.map.model.Model minervaModel; - Model sbmlModel; + private lcsb.mapviewer.model.map.model.Model minervaModel; + private Model sbmlModel; Map<String, S> sbmlElementByElementId = new HashMap<>(); Map<String, AbstractReferenceGlyph> sbmlGlyphByElementId = new HashMap<>(); @@ -57,7 +58,7 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s public abstract S createSbmlElement(T element) throws InconsistentModelException; - protected S getSbmlElement(T element, String compartmentName) throws InconsistentModelException { + public S getSbmlElement(T element, String compartmentName) throws InconsistentModelException { String mapKey = element.getClass().getSimpleName() + "\n" + element.getElementId() + "\n" + compartmentName; if (sbmlElementByElementNameAndCompartmentName.get(mapKey) == null) { S sbmlElement = createSbmlElement(element); @@ -88,4 +89,28 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s return (idCounter++) + ""; } + protected Model getSbmlModel() { + return sbmlModel; + } + + protected void setSbmlModel(Model sbmlModel) { + this.sbmlModel = sbmlModel; + } + + protected Layout getLayout() { + return layout; + } + + protected void setLayout(Layout layout) { + this.layout = layout; + } + + protected lcsb.mapviewer.model.map.model.Model getMinervaModel() { + return minervaModel; + } + + protected void setMinervaModel(lcsb.mapviewer.model.map.model.Model minervaModel) { + this.minervaModel = minervaModel; + } + } diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java index 269927153d0ff5db3926bba98c4409c923cf1482..5d6ed3439f0d9d94d7b5c71adc3e74e310a771f2 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java @@ -18,17 +18,17 @@ public class SbmlCompartmentExporter extends SbmlElementExporter<Compartment, or @Override public org.sbml.jsbml.Compartment createSbmlElement(Compartment element) throws InconsistentModelException { - return sbmlModel.createCompartment("comp_" + (getNextId())); + return getSbmlModel().createCompartment("comp_" + (getNextId())); } @Override protected List<Compartment> getElementList() { - return minervaModel.getCompartments(); + return getMinervaModel().getCompartments(); } @Override protected AbstractReferenceGlyph createElementGlyph(String sbmlCompartmentId, String glyphId) { - return layout.createCompartmentGlyph(glyphId, sbmlCompartmentId); + return getLayout().createCompartmentGlyph(glyphId, sbmlCompartmentId); } } 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 d05941bef41cf587f4e9ac39e7a0952dda198a7a..57d7dd87937354ffabd6847c170ce379b66e6af5 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 @@ -11,6 +11,7 @@ import org.sbml.jsbml.ext.layout.Dimensions; import org.sbml.jsbml.ext.layout.Layout; import org.sbml.jsbml.ext.layout.LayoutModelPlugin; +import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesExporter; import lcsb.mapviewer.model.map.InconsistentModelException; import lcsb.mapviewer.model.map.species.Species; diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java index ee244ef5616df3ff148e939cb7fad5e871bc549c..beed330498d19d8574155b3715ad70a23a68f639 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java @@ -28,6 +28,7 @@ import lcsb.mapviewer.converter.ConverterException; import lcsb.mapviewer.converter.ConverterParams; import lcsb.mapviewer.converter.IConverter; import lcsb.mapviewer.converter.InvalidInputDataExecption; +import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesParser; import lcsb.mapviewer.model.map.BioEntity; import lcsb.mapviewer.model.map.InconsistentModelException; import lcsb.mapviewer.model.map.MiriamData; diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java index 7f39759342fecec83c30e5d85acf22c38d1428a1..e769a96c8c1398942c48d976f698d99622615e11 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java @@ -21,7 +21,6 @@ import org.sbml.jsbml.ext.layout.Point; import org.sbml.jsbml.ext.layout.ReactionGlyph; import org.sbml.jsbml.ext.layout.SpeciesReferenceGlyph; import org.sbml.jsbml.ext.layout.SpeciesReferenceRole; -import org.sbml.jsbml.text.parser.ParseException; import org.w3c.dom.Node; import lcsb.mapviewer.common.Configuration; @@ -61,7 +60,7 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb if (result != null) { return result; } - result = sbmlModel.createReaction(reactionId); + result = getSbmlModel().createReaction(reactionId); result.setReversible(reaction.isReversible()); for (Product product : reaction.getProducts()) { Species sbmlSymbol = speciesExporter.sbmlElementByElementId.get(product.getElement().getElementId()); @@ -88,7 +87,7 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb SbmlKinetics kinetics = reaction.getKinetics(); KineticLaw result = new KineticLaw(); for (SbmlParameter minervaParameter : kinetics.getParameters()) { - if (minervaModel.getParameterById(minervaParameter.getElementId()) == null) { + if (getMinervaModel().getParameterById(minervaParameter.getElementId()) == null) { LocalParameter parameter = new LocalParameter(); parameter.setId(minervaParameter.getElementId()); parameter.setName(minervaParameter.getName()); @@ -102,11 +101,11 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb Node node = super.getXmlDocumentFromString(kinetics.getDefinition()); for (Node ciNode : super.getAllNotNecessirellyDirectChild("ci", node)) { String id = super.getNodeValue(ciNode).trim(); - Element element = minervaModel.getElementByElementId(id); + Element element = getMinervaModel().getElementByElementId(id); if (element != null) { String sbmlId = null; - Species species= speciesExporter.sbmlElementByElementId.get(id); - if (species !=null) { + Species species = speciesExporter.sbmlElementByElementId.get(id); + if (species != null) { sbmlId = species.getId(); } else { sbmlId = compartmentExporter.sbmlElementByElementId.get(id).getId(); @@ -143,10 +142,10 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb try { // handle case when input data cannot doesn't come from SBML parser and contains // "__" that mess up identifier uniqueness - reactionGlyph = layout.createReactionGlyph(glyphId, sbmlElementId); + reactionGlyph = getLayout().createReactionGlyph(glyphId, sbmlElementId); } catch (IllegalArgumentException e) { glyphId += "_" + getNextId(); - reactionGlyph = layout.createReactionGlyph(glyphId, sbmlElementId); + reactionGlyph = getLayout().createReactionGlyph(glyphId, sbmlElementId); } return reactionGlyph; @@ -154,7 +153,7 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb @Override protected Collection<Reaction> getElementList() { - return minervaModel.getReactions(); + return getMinervaModel().getReactions(); } @Override diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionParser.java index a623cd369572180ca7b2618e67f2c92976e96596..6b6e41c57ab36e18c9065222a07df5b00a02c9fd 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionParser.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionParser.java @@ -29,6 +29,7 @@ import lcsb.mapviewer.common.exception.InvalidStateException; import lcsb.mapviewer.common.exception.InvalidXmlSchemaException; import lcsb.mapviewer.converter.InvalidInputDataExecption; import lcsb.mapviewer.converter.model.celldesigner.types.ModifierType; +import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesParser; import lcsb.mapviewer.model.graphics.ArrowType; import lcsb.mapviewer.model.graphics.ArrowTypeData; import lcsb.mapviewer.model.graphics.PolylineData; diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java similarity index 73% rename from converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesExporter.java rename to converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java index cbde58157f83c5056e593c4e0a34d59e96facc98..17a1a9e1005029ef69bc20c2eab6c6d9ae1c57a6 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java @@ -1,4 +1,4 @@ -package lcsb.mapviewer.converter.model.sbml; +package lcsb.mapviewer.converter.model.sbml.species; import java.util.List; @@ -6,6 +6,8 @@ import org.apache.log4j.Logger; import org.sbml.jsbml.ext.layout.AbstractReferenceGlyph; import org.sbml.jsbml.ext.layout.Layout; +import lcsb.mapviewer.converter.model.sbml.SbmlCompartmentExporter; +import lcsb.mapviewer.converter.model.sbml.SbmlElementExporter; import lcsb.mapviewer.model.map.InconsistentModelException; import lcsb.mapviewer.model.map.species.Species; @@ -21,7 +23,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j @Override public org.sbml.jsbml.Species createSbmlElement(Species element) throws InconsistentModelException { - org.sbml.jsbml.Species result = sbmlModel.createSpecies("species_" + (getNextId())); + org.sbml.jsbml.Species result = getSbmlModel().createSpecies("species_" + (getNextId())); if (element.getCompartment() != null) { result.setCompartment(compartmentExporter.getSbmlElement(element.getCompartment(), null)); } @@ -30,13 +32,13 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j @Override protected AbstractReferenceGlyph createElementGlyph(String sbmlElementId, String glyphId) { - AbstractReferenceGlyph speciesGlyph = layout.createSpeciesGlyph(glyphId, sbmlElementId); + AbstractReferenceGlyph speciesGlyph = getLayout().createSpeciesGlyph(glyphId, sbmlElementId); return speciesGlyph; } @Override protected List<Species> getElementList() { - return minervaModel.getSpeciesList(); + return getMinervaModel().getSpeciesList(); } } diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java similarity index 94% rename from converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesParser.java rename to converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java index 1a9826c4e3d11f6e4c1d58dbf20926c90a554f4e..f93acacea88dcae1c7c0e68d43f76d06fc00ad13 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesParser.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java @@ -1,4 +1,4 @@ -package lcsb.mapviewer.converter.model.sbml; +package lcsb.mapviewer.converter.model.sbml.species; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; @@ -15,6 +15,7 @@ import org.sbml.jsbml.ext.layout.SpeciesGlyph; import lcsb.mapviewer.common.Pair; import lcsb.mapviewer.common.exception.InvalidStateException; import lcsb.mapviewer.converter.InvalidInputDataExecption; +import lcsb.mapviewer.converter.model.sbml.SbmlElementParser; import lcsb.mapviewer.model.map.compartment.Compartment; import lcsb.mapviewer.model.map.species.Element; import lcsb.mapviewer.model.map.species.SimpleMolecule; @@ -51,7 +52,7 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species> } @Override - protected List<Element> mergeLayout(List<? extends Element> elements, Layout sbmlLayout, Model sbmlModel) + public List<Element> mergeLayout(List<? extends Element> elements, Layout sbmlLayout, Model sbmlModel) throws InvalidInputDataExecption { List<Element> result = super.mergeLayout(elements, sbmlLayout, sbmlModel);