From 6fbe9845d776ad10e5f3ae92fc2e850999dcc974 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 31 Dec 2018 11:28:26 +0100 Subject: [PATCH] export refactored (it doesn't take layout is a constructor parameter anymore) --- .../model/sbml/SbmlBioEntityExporter.java | 58 +++++++++++++------ .../model/sbml/SbmlElementExporter.java | 6 +- .../converter/model/sbml/SbmlExporter.java | 6 +- .../compartment/SbmlCompartmentExporter.java | 12 ++-- .../sbml/reaction/SbmlReactionExporter.java | 14 ++--- .../sbml/species/SbmlSpeciesExporter.java | 6 +- .../model/sbml/SbmlBioEntityExporterTest.java | 10 +--- .../reaction/SbmlReactionExporterTest.java | 7 +-- .../sbml/species/SbmlSpeciesExporterTest.java | 4 +- 9 files changed, 72 insertions(+), 51 deletions(-) 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 62d6d3ab7c..45ac9e9392 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 @@ -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) { diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementExporter.java index 68a22e13e3..530dfa9c71 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementExporter.java @@ -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) { 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 6ec05f80ef..db7b4bd519 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 @@ -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); diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/compartment/SbmlCompartmentExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/compartment/SbmlCompartmentExporter.java index c3f994b786..8b2a8bf0d5 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/compartment/SbmlCompartmentExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/compartment/SbmlCompartmentExporter.java @@ -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 diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java index 93136ab5ee..257a39e6ce 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java @@ -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(); diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java index e875c3a389..6dc2dc133a 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java @@ -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; } diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporterTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporterTest.java index 471f844b46..d29f86f82f 100644 --- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporterTest.java +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporterTest.java @@ -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; } diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java index 38378c18d7..ce2936868e 100644 --- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporterTest.java @@ -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; } diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporterTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporterTest.java index c359e04bcd..954544c422 100644 --- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporterTest.java +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporterTest.java @@ -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; -- GitLab