Skip to content
Snippets Groups Projects
Commit 17ba584e authored by Piotr Gawron's avatar Piotr Gawron
Browse files

species parser extracted to separte package

parent d9928f4b
No related branches found
No related tags found
1 merge request!186Resolve "upload of sbml"
Showing with 53 additions and 23 deletions
......@@ -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;
}
}
......@@ -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);
}
}
......@@ -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;
......
......@@ -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;
......
......@@ -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
......
......@@ -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;
......
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();
}
}
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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment