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

export refactored (it doesn't take layout is a constructor parameter anymore)

parent a1c5b4a7
No related branches found
No related tags found
2 merge requests!630WIP: Resolve "The privileges of a new user are not saved in some cases",!560Resolve "add support for modifications and states in sbml export/import"
Showing
with 72 additions and 51 deletions
......@@ -12,8 +12,10 @@ import javax.xml.stream.XMLStreamException;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.log4j.Logger;
import org.sbml.jsbml.Model;
import org.sbml.jsbml.ext.SBasePlugin;
import org.sbml.jsbml.ext.layout.AbstractReferenceGlyph;
import org.sbml.jsbml.ext.layout.Layout;
import org.sbml.jsbml.ext.layout.LayoutModelPlugin;
import org.sbml.jsbml.ext.multi.MultiModelPlugin;
import org.sbml.jsbml.ext.render.ColorDefinition;
import org.sbml.jsbml.ext.render.LocalRenderInformation;
......@@ -31,12 +33,24 @@ import lcsb.mapviewer.model.map.InconsistentModelException;
public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.sbml.jsbml.AbstractNamedSBase>
extends XmlParser {
@SuppressWarnings("unused")
/**
* Default class logger.
*/
private Logger logger = Logger.getLogger(SbmlBioEntityExporter.class);
/**
* SBML Layout used when exporting map.
*/
private Layout layout;
/**
* Map that we are exporting.
*/
private lcsb.mapviewer.model.map.model.Model minervaModel;
/**
* SBML model to which we are exporting.
*/
private Model sbmlModel;
private Map<String, S> sbmlElementByElementId = new HashMap<>();
......@@ -48,9 +62,10 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s
private Set<SbmlExtension> sbmlExtensions = new HashSet<>();
public SbmlBioEntityExporter(Layout sbmlLayout, lcsb.mapviewer.model.map.model.Model minervaModel,
public SbmlBioEntityExporter(Model sbmlModel, lcsb.mapviewer.model.map.model.Model minervaModel,
Collection<SbmlExtension> sbmlExtensions) {
this.layout = sbmlLayout;
this.sbmlModel = sbmlModel;
this.layout = getLayout(sbmlModel);
this.minervaModel = minervaModel;
this.sbmlExtensions.addAll(sbmlExtensions);
}
......@@ -129,25 +144,34 @@ 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;
private Layout getLayout(org.sbml.jsbml.Model sbmlModel) {
Layout layout = null;
if (sbmlModel.getExtensionCount() > 0) {
for (SBasePlugin plugin : sbmlModel.getExtensionPackages().values()) {
if (plugin.getClass().equals(org.sbml.jsbml.ext.layout.LayoutModelPlugin.class)) {
LayoutModelPlugin layoutPlugin = (LayoutModelPlugin) plugin;
if (layoutPlugin.getLayoutCount() == 0) {
logger.warn("Layout plugin available but no layouts defined");
} else if (layoutPlugin.getLayoutCount() > 1) {
logger.warn(layoutPlugin.getLayoutCount() + " layouts defined. Using first one.");
layout = layoutPlugin.getLayout(0);
} else {
layout = layoutPlugin.getLayout(0);
}
}
}
}
return layout;
}
protected Layout getLayout() {
return layout;
}
protected void setLayout(Layout layout) {
this.layout = layout;
}
protected RenderLayoutPlugin getRenderPlugin() {
if (layout.getExtensionCount() > 0) {
return (RenderLayoutPlugin) layout.getExtension("render");
if (getLayout().getExtensionCount() > 0) {
return (RenderLayoutPlugin) getLayout().getExtension("render");
}
return null;
}
......@@ -160,8 +184,8 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s
return minervaModel;
}
protected void setMinervaModel(lcsb.mapviewer.model.map.model.Model minervaModel) {
this.minervaModel = minervaModel;
protected Model getSbmlModel() {
return sbmlModel;
}
public S getSbmlElementByElementId(String id) {
......
......@@ -3,10 +3,10 @@ package lcsb.mapviewer.converter.model.sbml;
import java.util.Collection;
import org.apache.log4j.Logger;
import org.sbml.jsbml.Model;
import org.sbml.jsbml.ext.layout.AbstractReferenceGlyph;
import org.sbml.jsbml.ext.layout.BoundingBox;
import org.sbml.jsbml.ext.layout.Dimensions;
import org.sbml.jsbml.ext.layout.Layout;
import org.sbml.jsbml.ext.layout.Point;
import org.sbml.jsbml.ext.render.ColorDefinition;
import org.sbml.jsbml.ext.render.LocalStyle;
......@@ -22,9 +22,9 @@ public abstract class SbmlElementExporter<T extends Element, S extends org.sbml.
@SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(SbmlElementExporter.class);
public SbmlElementExporter(Layout sbmlLayout, lcsb.mapviewer.model.map.model.Model minervaModel,
public SbmlElementExporter(Model sbmlModel, lcsb.mapviewer.model.map.model.Model minervaModel,
Collection<SbmlExtension> sbmlExtensions) {
super(sbmlLayout, minervaModel, sbmlExtensions);
super(sbmlModel, minervaModel, sbmlExtensions);
}
protected void assignLayoutToGlyph(T element, AbstractReferenceGlyph speciesGlyph) {
......
......@@ -98,11 +98,11 @@ public class SbmlExporter {
assignStructuralStatesToTypes(multiPlugin, model);
}
SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(layout, model, usedExtensions);
SbmlBioEntityExporter<Species, org.sbml.jsbml.Species> speciesExporter = new SbmlSpeciesExporter(layout, model,
SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(result, model, usedExtensions);
SbmlBioEntityExporter<Species, org.sbml.jsbml.Species> speciesExporter = new SbmlSpeciesExporter(result, model,
usedExtensions,
compartmentExporter);
SbmlReactionExporter reactionExporter = new SbmlReactionExporter(layout, model, speciesExporter,
SbmlReactionExporter reactionExporter = new SbmlReactionExporter(result, model, speciesExporter,
usedExtensions, compartmentExporter);
SbmlUnitExporter unitExporter = new SbmlUnitExporter(model);
SbmlParameterExporter parameterExporter = new SbmlParameterExporter(model);
......
......@@ -5,11 +5,11 @@ import java.util.Collection;
import java.util.List;
import org.apache.log4j.Logger;
import org.sbml.jsbml.Model;
import org.sbml.jsbml.ext.layout.AbstractReferenceGlyph;
import org.sbml.jsbml.ext.layout.BoundingBox;
import org.sbml.jsbml.ext.layout.CompartmentGlyph;
import org.sbml.jsbml.ext.layout.Dimensions;
import org.sbml.jsbml.ext.layout.Layout;
import org.sbml.jsbml.ext.layout.Point;
import lcsb.mapviewer.converter.model.sbml.SbmlElementExporter;
......@@ -18,10 +18,14 @@ import lcsb.mapviewer.model.map.InconsistentModelException;
import lcsb.mapviewer.model.map.compartment.Compartment;
public class SbmlCompartmentExporter extends SbmlElementExporter<Compartment, org.sbml.jsbml.Compartment> {
Logger logger = Logger.getLogger(SbmlCompartmentExporter.class);
/**
* Default class logger.
*/
@SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(SbmlCompartmentExporter.class);
public SbmlCompartmentExporter(Layout layout, lcsb.mapviewer.model.map.model.Model minervaModel, Collection<SbmlExtension> sbmlExtensions) {
super(layout, minervaModel, sbmlExtensions);
public SbmlCompartmentExporter(Model sbmlModel, lcsb.mapviewer.model.map.model.Model minervaModel, Collection<SbmlExtension> sbmlExtensions) {
super(sbmlModel, minervaModel, sbmlExtensions);
}
@Override
......
......@@ -48,15 +48,18 @@ import lcsb.mapviewer.model.map.reaction.ReactionNode;
import lcsb.mapviewer.model.map.species.Element;
public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sbml.jsbml.Reaction> {
Logger logger = Logger.getLogger(SbmlReactionExporter.class);
/**
* Default class logger.
*/
private static Logger logger = Logger.getLogger(SbmlReactionExporter.class);
private SbmlBioEntityExporter<lcsb.mapviewer.model.map.species.Species, Species> speciesExporter;
private SbmlBioEntityExporter<Compartment, org.sbml.jsbml.Compartment> compartmentExporter;
public SbmlReactionExporter(Layout layout, lcsb.mapviewer.model.map.model.Model minervaModel,
public SbmlReactionExporter(Model sbmlModel, lcsb.mapviewer.model.map.model.Model minervaModel,
SbmlBioEntityExporter<lcsb.mapviewer.model.map.species.Species, Species> speciesExporter,
Collection<SbmlExtension> sbmlExtensions,
SbmlBioEntityExporter<lcsb.mapviewer.model.map.compartment.Compartment, org.sbml.jsbml.Compartment> compartmentExporter) {
super(layout, minervaModel, sbmlExtensions);
super(sbmlModel, minervaModel, sbmlExtensions);
this.speciesExporter = speciesExporter;
this.compartmentExporter = compartmentExporter;
}
......@@ -319,11 +322,6 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb
return curve;
}
@Override
protected void setSbmlModel(Model sbmlModel) {
super.setSbmlModel(sbmlModel);
}
@Override
protected String getSbmlIdKey(Reaction element) {
return element.getClass().getSimpleName() + "\n" + element.getElementId();
......
......@@ -4,8 +4,8 @@ import java.util.Collection;
import java.util.List;
import org.apache.log4j.Logger;
import org.sbml.jsbml.Model;
import org.sbml.jsbml.ext.layout.AbstractReferenceGlyph;
import org.sbml.jsbml.ext.layout.Layout;
import org.sbml.jsbml.ext.multi.MultiSpeciesPlugin;
import org.sbml.jsbml.ext.multi.MultiSpeciesType;
import org.sbml.jsbml.ext.multi.PossibleSpeciesFeatureValue;
......@@ -34,11 +34,11 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
private SbmlCompartmentExporter compartmentExporter;
public SbmlSpeciesExporter(Layout layout,
public SbmlSpeciesExporter(Model sbmlModel,
lcsb.mapviewer.model.map.model.Model minervaModel,
Collection<SbmlExtension> sbmlExtensions,
SbmlCompartmentExporter compartmentExporter) {
super(layout, minervaModel, sbmlExtensions);
super(sbmlModel, minervaModel, sbmlExtensions);
this.compartmentExporter = compartmentExporter;
}
......
......@@ -11,9 +11,7 @@ import org.mockito.Mockito;
import org.sbml.jsbml.Model;
import org.sbml.jsbml.SBMLDocument;
import org.sbml.jsbml.ext.layout.Layout;
import org.sbml.jsbml.ext.layout.LayoutModelPlugin;
import org.sbml.jsbml.ext.render.ColorDefinition;
import org.sbml.jsbml.ext.render.RenderLayoutPlugin;
import lcsb.mapviewer.model.map.model.ModelFullIndexed;
......@@ -22,9 +20,8 @@ public class SbmlBioEntityExporterTest {
@Test
public void testEmptyGetRenderPlugin() {
@SuppressWarnings("rawtypes")
SbmlBioEntityExporter exporter = Mockito.mock(SbmlBioEntityExporter.class, Mockito.CALLS_REAL_METHODS);
Layout layout = new Layout();
exporter.setLayout(layout);
SbmlBioEntityExporter exporter = createMockExporter();
Mockito.when(exporter.getLayout()).thenReturn(new Layout());
assertNull(exporter.getRenderPlugin());
}
......@@ -45,8 +42,7 @@ public class SbmlBioEntityExporterTest {
SbmlExporter sbmlExporter = new SbmlExporter();
Layout layout = sbmlExporter.createSbmlLayout(new ModelFullIndexed(null), result);
exporter.setSbmlModel(result);
exporter.setLayout(layout);
Mockito.when(exporter.getLayout()).thenReturn(layout);
return exporter;
}
......
......@@ -72,15 +72,14 @@ public class SbmlReactionExporterTest {
plugin.add(layout);
result.addExtension("layout", plugin);
SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(layout, model,
SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(result, model,
Arrays.asList(SbmlExtension.values()));
SbmlBioEntityExporter<Species, org.sbml.jsbml.Species> speciesExporter = new SbmlSpeciesExporter(layout, model,
SbmlBioEntityExporter<Species, org.sbml.jsbml.Species> speciesExporter = new SbmlSpeciesExporter(result, model,
Arrays.asList(SbmlExtension.values()),
compartmentExporter);
SbmlReactionExporter exporter = new SbmlReactionExporter(layout, model, speciesExporter,
SbmlReactionExporter exporter = new SbmlReactionExporter(result, model, speciesExporter,
Arrays.asList(SbmlExtension.values()), compartmentExporter);
exporter.setSbmlModel(result);
return exporter;
}
......
......@@ -74,10 +74,10 @@ public class SbmlSpeciesExporterTest {
SbmlExporter sbmlExporter = new SbmlExporter();
sbmlLayout = sbmlExporter.createSbmlLayout(model, sbmlModel);
SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(sbmlLayout, model,
SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(sbmlModel, model,
Arrays.asList(SbmlExtension.values()));
compartmentExporter.exportElements(sbmlModel);
SbmlSpeciesExporter result = new SbmlSpeciesExporter(sbmlLayout, model,
SbmlSpeciesExporter result = new SbmlSpeciesExporter(sbmlModel, model,
Arrays.asList(new SbmlExtension[] { SbmlExtension.RENDER, SbmlExtension.LAYOUT }),
compartmentExporter);
return result;
......
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