From 0a1b7b0898d1b0659046746325444ffa83adc713 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 28 Jan 2019 15:45:22 +0100
Subject: [PATCH] sometimes there are issues with pubmed annotations (they have
 whitespaces)

---
 .../annotation/services/PubmedParser.java     |  7 ++++++
 .../java/lcsb/mapviewer/api/BaseRestImpl.java | 20 ++++++++++++++--
 .../lcsb/mapviewer/api/BaseRestImplTest.java  | 23 +++++++++++++++++++
 3 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java
index 1bf449dae0..16dde0eeff 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java
@@ -205,6 +205,13 @@ public class PubmedParser extends CachableInterface implements IExternalService
     return result;
   }
 
+  public Article getPubmedArticleById(String id) throws PubmedSearchException {
+    if (id==null) {
+      return null;
+    }
+    return getPubmedArticleById(Integer.valueOf(id.trim()));
+  }
+
   /**
    * This method return html \< a\ > tag with link for pubmed id (with some
    * additional information).
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 7cf58274ce..55407803d0 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/BaseRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/BaseRestImpl.java
@@ -58,7 +58,7 @@ public abstract class BaseRestImpl {
   /**
    * Default class logger.
    */
-  private Logger logger = Logger.getLogger(BaseRestImpl.class);
+  private static Logger logger = Logger.getLogger(BaseRestImpl.class);
 
   @Autowired
   private IModelService modelService;
@@ -118,7 +118,7 @@ public abstract class BaseRestImpl {
       }
       if (MiriamType.PUBMED.equals(annotation.getDataType())) {
         try {
-          Article article = pubmedParser.getPubmedArticleById(Integer.valueOf(annotation.getResource()));
+          Article article = pubmedParser.getPubmedArticleById(annotation.getResource());
           result.put("article", article);
         } catch (PubmedSearchException e) {
           logger.error("Problem with accessing info about pubmed", e);
@@ -387,4 +387,20 @@ public abstract class BaseRestImpl {
     this.configurationService = configurationService;
   }
 
+  public MiriamConnector getMiriamConnector() {
+    return miriamConnector;
+  }
+
+  public void setMiriamConnector(MiriamConnector miriamConnector) {
+    this.miriamConnector = miriamConnector;
+  }
+
+  public PubmedParser getPubmedParser() {
+    return pubmedParser;
+  }
+
+  public void setPubmedParser(PubmedParser pubmedParser) {
+    this.pubmedParser = pubmedParser;
+  }
+
 }
diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/BaseRestImplTest.java b/rest-api/src/test/java/lcsb/mapviewer/api/BaseRestImplTest.java
index f5802d6101..5fde7baa71 100644
--- a/rest-api/src/test/java/lcsb/mapviewer/api/BaseRestImplTest.java
+++ b/rest-api/src/test/java/lcsb/mapviewer/api/BaseRestImplTest.java
@@ -6,12 +6,26 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.CALLS_REAL_METHODS;
 
+import java.util.Map;
+
 import org.apache.log4j.Logger;
 import org.junit.Test;
 import org.mockito.Mockito;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import lcsb.mapviewer.annotation.services.MiriamConnector;
+import lcsb.mapviewer.annotation.services.PubmedParser;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.MiriamType;
 
 public class BaseRestImplTest extends RestTestFunctions {
   Logger logger = Logger.getLogger(BaseRestImplTest.class);
+  
+  @Autowired
+  MiriamConnector mc;
+  
+  @Autowired
+  PubmedParser pubmedParser;
 
   @Test
   public void testMathMLToPresentationML() throws Exception {
@@ -39,6 +53,15 @@ public class BaseRestImplTest extends RestTestFunctions {
     assertFalse(presentationXml.startsWith("<?xml"));
   }
   
+  @Test
+  public void testCreateAnnotationWithWhitespace() throws Exception {
+    BaseRestImpl controller = Mockito.mock(BaseRestImpl.class, CALLS_REAL_METHODS);
+    controller.setMiriamConnector(mc);
+    controller.setPubmedParser(pubmedParser);
+    Map<String, Object> response = controller.createAnnotation(new MiriamData(MiriamType.PUBMED,"28255955 "));
+    assertNotNull(response);
+  }
+  
   
 
 }
-- 
GitLab