From 387d759759311b27097345ef57caf7d6e69f33c4 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 11 Jan 2018 13:11:59 +0100
Subject: [PATCH] sbml parser is available via rest API

---
 converter-sbml/pom.xml                        | 41 +++++++++++--------
 .../converter/model/sbml/SbmlParser.java      |  2 +-
 model-command/pom.xml                         |  1 -
 rest-api/pom.xml                              |  6 +++
 .../java/lcsb/mapviewer/api/BaseRestImpl.java | 22 ++++++----
 .../configuration/ConfigurationRestImpl.java  |  9 ++--
 6 files changed, 48 insertions(+), 33 deletions(-)

diff --git a/converter-sbml/pom.xml b/converter-sbml/pom.xml
index 6fc10f0b45..278f035aad 100644
--- a/converter-sbml/pom.xml
+++ b/converter-sbml/pom.xml
@@ -16,16 +16,20 @@
 	</properties>
 
 
-	<plugin>
-		<groupId>org.apache.maven.plugins</groupId>
-		<artifactId>maven-jar-plugin</artifactId>
-		<version>2.3</version>
-		<configuration>
-			<excludes>
-				<exclude>**/log4j.properties</exclude>
-			</excludes>
-		</configuration>
-	</plugin>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<version>2.3</version>
+				<configuration>
+					<excludes>
+						<exclude>**/log4j.properties</exclude>
+					</excludes>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 
 
 	<dependencies>
@@ -37,7 +41,16 @@
 			<artifactId>model</artifactId>
 			<version>1.0</version>
 		</dependency>
-
+		<dependency>
+			<groupId>lcsb.mapviewer</groupId>
+			<artifactId>model-command</artifactId>
+			<version>1.0</version>
+		</dependency>
+		<dependency>
+			<groupId>lcsb.mapviewer</groupId>
+			<artifactId>converter-CellDesigner</artifactId>
+			<version>1.0</version>
+		</dependency>
 		<dependency>
 			<groupId>lcsb.mapviewer</groupId>
 			<artifactId>converter</artifactId>
@@ -72,12 +85,6 @@
 			<version>1.0</version>
 			<scope>test</scope>
 		</dependency>
-		<dependency>
-			<groupId>lcsb.mapviewer</groupId>
-			<artifactId>converter-CellDesigner</artifactId>
-			<version>1.0</version>
-			<scope>test</scope>
-		</dependency>
 
 	</dependencies>
 </project>
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 b72c589162..938ad9a799 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
@@ -231,7 +231,7 @@ public class SbmlParser implements IConverter {
     fileWriter.write(exportedString);
     fileWriter.flush();
     fileWriter.close();
-    return null;
+    return file;
   }
 
   @Override
diff --git a/model-command/pom.xml b/model-command/pom.xml
index d827b05db5..5d559371b4 100644
--- a/model-command/pom.xml
+++ b/model-command/pom.xml
@@ -25,7 +25,6 @@
       <groupId>lcsb.mapviewer</groupId>
       <artifactId>converter-CellDesigner</artifactId>
       <version>1.0</version>
-      <scope>test</scope>
     </dependency>
 
 		<dependency>
diff --git a/rest-api/pom.xml b/rest-api/pom.xml
index 43e369a82a..a25a71c338 100644
--- a/rest-api/pom.xml
+++ b/rest-api/pom.xml
@@ -26,6 +26,12 @@
 			<version>1.0</version>
 		</dependency>
 
+		<dependency>
+			<groupId>lcsb.mapviewer</groupId>
+			<artifactId>converter-sbml</artifactId>
+			<version>1.0</version>
+		</dependency>
+
     <dependency>
       <groupId>javax.ws.rs</groupId>
       <artifactId>jsr311-api</artifactId>
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/BaseRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/BaseRestImpl.java
index 0f82683334..d0dc1002f7 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/BaseRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/BaseRestImpl.java
@@ -21,6 +21,7 @@ import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.converter.IConverter;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
 import lcsb.mapviewer.converter.model.sbgnml.SbgnmlXmlConverter;
+import lcsb.mapviewer.converter.model.sbml.SbmlParser;
 import lcsb.mapviewer.model.map.BioEntity;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamType;
@@ -287,15 +288,20 @@ public abstract class BaseRestImpl {
   }
 
   protected IConverter getModelParser(String handlerClass) throws QueryException {
-    IConverter parser;
-    if (SbgnmlXmlConverter.class.getCanonicalName().equals(handlerClass)) {
-      parser = new SbgnmlXmlConverter();
-    } else if (CellDesignerXmlParser.class.getCanonicalName().equals(handlerClass)) {
-      parser = new CellDesignerXmlParser();
-    } else {
-      throw new QueryException("Unknown handlerClass: " + handlerClass);
+    for (IConverter converter : getModelConverters()) {
+      if (converter.getClass().getCanonicalName().equals(handlerClass)) {
+        return converter;
+      }
     }
-    return parser;
+    throw new QueryException("Unknown handlerClass: " + handlerClass);
+  }
+
+  protected List<IConverter> getModelConverters() {
+    List<IConverter> result = new ArrayList<>();
+    result.add(new CellDesignerXmlParser());
+    result.add(new SbgnmlXmlConverter());
+    result.add(new SbmlParser());
+    return result;
   }
 
   protected String getFirstValue(List<Object> list) {
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationRestImpl.java
index e6a8df1e5c..7c41b7d650 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationRestImpl.java
@@ -16,12 +16,11 @@ import org.springframework.transaction.annotation.Transactional;
 
 import lcsb.mapviewer.annotation.services.ModelAnnotator;
 import lcsb.mapviewer.annotation.services.annotators.ElementAnnotator;
+import lcsb.mapviewer.api.BaseRestImpl;
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.converter.IConverter;
 import lcsb.mapviewer.converter.graphics.AbstractImageGenerator;
 import lcsb.mapviewer.converter.graphics.ImageGenerators;
-import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
-import lcsb.mapviewer.converter.model.sbgnml.SbgnmlXmlConverter;
 import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.model.SubmodelType;
 import lcsb.mapviewer.model.map.reaction.Reaction;
@@ -38,7 +37,7 @@ import lcsb.mapviewer.services.utils.data.ColorSchemaType;
 import lcsb.mapviewer.services.view.ConfigurationView;
 
 @Transactional(value = "txManager")
-public class ConfigurationRestImpl {
+public class ConfigurationRestImpl extends BaseRestImpl {
   /**
    * Default class logger.
    */
@@ -113,9 +112,7 @@ public class ConfigurationRestImpl {
 
   public List<Map<String, Object>> getModelFormats(String token) throws SecurityException {
     userService.getToken(token);
-    List<IConverter> converters = new ArrayList<>();
-    converters.add(new CellDesignerXmlParser());
-    converters.add(new SbgnmlXmlConverter());
+    List<IConverter> converters = getModelConverters();
 
     List<Map<String, Object>> result = new ArrayList<>();
 
-- 
GitLab