From 388ff9b077fadb3a0fa77dae23f3c14f87e565cd Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 7 Feb 2018 17:28:04 +0100
Subject: [PATCH] export of annotations added

---
 .../model/sbml/SbmlBioEntityExporter.java         | 10 ++++++++--
 .../model/sbml/GenericSbmlToXmlParserTest.java    | 15 +++++++++++++++
 .../converter/annotation/XmlAnnotationParser.java |  3 ++-
 3 files changed, 25 insertions(+), 3 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 5965bdad70..604b95c7cb 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
@@ -7,14 +7,13 @@ import java.util.Map;
 import javax.xml.stream.XMLStreamException;
 
 import org.apache.log4j.Logger;
-import org.sbml.jsbml.ASTNode;
 import org.sbml.jsbml.Model;
-import org.sbml.jsbml.Species;
 import org.sbml.jsbml.ext.layout.AbstractReferenceGlyph;
 import org.sbml.jsbml.ext.layout.Layout;
 
 import lcsb.mapviewer.common.XmlParser;
 import lcsb.mapviewer.common.exception.InvalidStateException;
+import lcsb.mapviewer.converter.annotation.XmlAnnotationParser;
 import lcsb.mapviewer.model.map.BioEntity;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 
@@ -64,6 +63,13 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s
     String mapKey = element.getClass().getSimpleName() + "\n" + element.getElementId() + "\n" + compartmentName;
     if (sbmlElementByElementNameAndCompartmentName.get(mapKey) == null) {
       S sbmlElement = createSbmlElement(element);
+      XmlAnnotationParser parser = new XmlAnnotationParser();
+      String rdf = parser.dataSetToXmlString(element.getMiriamData());
+      try {
+        sbmlElement.setAnnotation(rdf);
+      } catch (XMLStreamException e1) {
+        throw new InconsistentModelException(e1);
+      }
       sbmlElement.setName(element.getName());
       try {
         sbmlElement.setNotes(element.getNotes());
diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlToXmlParserTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlToXmlParserTest.java
index 7fbdd583ff..fc25729abe 100644
--- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlToXmlParserTest.java
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/GenericSbmlToXmlParserTest.java
@@ -42,6 +42,21 @@ public class GenericSbmlToXmlParserTest {
         data.add(new Object[] { fPath });
       }
     });
+    Files.walk(Paths.get("testFiles/small")).forEach(fPath -> {
+      if (Files.isRegularFile(fPath) && fPath.toString().endsWith(".xml")) {
+        data.add(new Object[] { fPath });
+      }
+    });
+    Files.walk(Paths.get("testFiles/small/reaction")).forEach(fPath -> {
+      if (Files.isRegularFile(fPath) && fPath.toString().endsWith(".xml")) {
+        data.add(new Object[] { fPath });
+      }
+    });
+    Files.walk(Paths.get("testFiles/small/modifier")).forEach(fPath -> {
+      if (Files.isRegularFile(fPath) && fPath.toString().endsWith(".xml")) {
+        data.add(new Object[] { fPath });
+      }
+    });
     return data;
   }
 
diff --git a/converter/src/main/java/lcsb/mapviewer/converter/annotation/XmlAnnotationParser.java b/converter/src/main/java/lcsb/mapviewer/converter/annotation/XmlAnnotationParser.java
index e32625a647..c6ebc15d1c 100644
--- a/converter/src/main/java/lcsb/mapviewer/converter/annotation/XmlAnnotationParser.java
+++ b/converter/src/main/java/lcsb/mapviewer/converter/annotation/XmlAnnotationParser.java
@@ -1,5 +1,6 @@
 package lcsb.mapviewer.converter.annotation;
 
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -155,7 +156,7 @@ public class XmlAnnotationParser extends XmlParser {
 	 *          - a set of MiriamData to be converted.
 	 * @return xml string representation of the input data
 	 */
-	public String dataSetToXmlString(Set<MiriamData> data) {
+	public String dataSetToXmlString(Collection<MiriamData> data) {
 		StringBuilder result = new StringBuilder("");
 		result.append(
 				"<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" " + "xmlns:dc=\"http://purl.org/dc/elements/1.1/\" "
-- 
GitLab