From 9b8dfe6ba504239a586ed1b11f328a5743c7ebf7 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 31 Jul 2017 15:56:10 +0200
Subject: [PATCH] when matching other target there was problem when no gene was
 defiend

---
 .../services/search/ElementMatcher.java       |  13 +-
 .../services/search/AllSearchTests.java       |   3 +-
 ...ctoryTest.java => ElementMatcherTest.java} | 128 ++++++++++--------
 3 files changed, 81 insertions(+), 63 deletions(-)
 rename service/src/test/java/lcsb/mapviewer/services/search/{SearchResultFactoryTest.java => ElementMatcherTest.java} (66%)

diff --git a/service/src/main/java/lcsb/mapviewer/services/search/ElementMatcher.java b/service/src/main/java/lcsb/mapviewer/services/search/ElementMatcher.java
index c947104992..1e01f40e07 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/ElementMatcher.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/ElementMatcher.java
@@ -103,8 +103,17 @@ public class ElementMatcher {
 				return false;
 			case OTHER:
 				// in other case just compare names
-				String name = target.getGenes().get(0).getResource();
-				return element.getName().equalsIgnoreCase(name);
+				String targetName = null;
+				if (target.getGenes().size() > 0) {
+					targetName = target.getGenes().get(0).getResource();
+				}
+				if (targetName == null) {
+					targetName = target.getName();
+				}
+				if (targetName == null) {
+					return false;
+				}
+				return element.getName().equalsIgnoreCase(targetName);
 			default:
 				throw new InvalidArgumentException("Unknown drug target type: " + target.getType());
 		}
diff --git a/service/src/test/java/lcsb/mapviewer/services/search/AllSearchTests.java b/service/src/test/java/lcsb/mapviewer/services/search/AllSearchTests.java
index 0073cd477c..512a3b462c 100644
--- a/service/src/test/java/lcsb/mapviewer/services/search/AllSearchTests.java
+++ b/service/src/test/java/lcsb/mapviewer/services/search/AllSearchTests.java
@@ -13,7 +13,8 @@ import lcsb.mapviewer.services.search.layout.AllSearchLayoutTests;
 @SuiteClasses({ AllCommentTests.class, //
 		AllSearchDbTests.class, //
 		AllSearchDataTests.class, //
-		AllSearchLayoutTests.class,//
+		AllSearchLayoutTests.class, //
+		ElementMatcherTest.class, //
 })
 public class AllSearchTests {
 
diff --git a/service/src/test/java/lcsb/mapviewer/services/search/SearchResultFactoryTest.java b/service/src/test/java/lcsb/mapviewer/services/search/ElementMatcherTest.java
similarity index 66%
rename from service/src/test/java/lcsb/mapviewer/services/search/SearchResultFactoryTest.java
rename to service/src/test/java/lcsb/mapviewer/services/search/ElementMatcherTest.java
index 7a310be346..c34aa859e2 100644
--- a/service/src/test/java/lcsb/mapviewer/services/search/SearchResultFactoryTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/search/ElementMatcherTest.java
@@ -1,60 +1,68 @@
-package lcsb.mapviewer.services.search;
-
-import static org.junit.Assert.assertTrue;
-
-import org.apache.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import lcsb.mapviewer.annotation.data.Chemical;
-import lcsb.mapviewer.annotation.data.Target;
-import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.MiriamType;
-import lcsb.mapviewer.model.map.species.Element;
-import lcsb.mapviewer.model.map.species.Rna;
-import lcsb.mapviewer.services.ServiceTestFunctions;
-import lcsb.mapviewer.services.search.comment.FullCommentViewFactory;
-import lcsb.mapviewer.services.search.db.DbSearchCriteria;
-import lcsb.mapviewer.services.search.db.chemical.IChemicalService;
-
-public class SearchResultFactoryTest extends ServiceTestFunctions {
-
-	Logger							logger = Logger.getLogger(SearchResultFactoryTest.class);
-
-	@Autowired
-	FullCommentViewFactory	factory;
-
-	@Autowired
-	IChemicalService		chemicalService;
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testElementMatch() {
-		String geneName = "GDNF";
-		Chemical view = chemicalService.getByName("Amphetamine", new DbSearchCriteria().disease(new MiriamData(MiriamType.MESH_2012, "D010300")));
-		Target target = null;
-		for (Target t : view.getInferenceNetwork()) {
-			for (MiriamData row : t.getGenes()) {
-				if (row.getResource().equals(geneName)) {
-					target = t;
-				}
-			}
-		}
-
-		Element element = new Rna("id");
-		element.setName(geneName);
-
-		assertTrue(factory.elementMatch(target, element));
-
-	}
-
-}
+package lcsb.mapviewer.services.search;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import lcsb.mapviewer.annotation.data.Chemical;
+import lcsb.mapviewer.annotation.data.Target;
+import lcsb.mapviewer.annotation.data.TargetType;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.MiriamType;
+import lcsb.mapviewer.model.map.species.Element;
+import lcsb.mapviewer.model.map.species.GenericProtein;
+import lcsb.mapviewer.model.map.species.Rna;
+import lcsb.mapviewer.services.ServiceTestFunctions;
+import lcsb.mapviewer.services.search.db.DbSearchCriteria;
+
+public class ElementMatcherTest extends ServiceTestFunctions {
+
+	@Autowired
+	ElementMatcher elementMatcher;
+
+	@AfterClass
+	public static void tearDownAfterClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testMatchOther() {
+		Target target = new Target();
+
+		target.setType(TargetType.OTHER);
+		assertFalse(elementMatcher.elementMatch(target, new GenericProtein("s1")));
+	}
+
+	@Test
+	public void testElementMatch() {
+		String geneName = "GDNF";
+		Chemical view = chemicalService.getByName("Amphetamine", new DbSearchCriteria().disease(new MiriamData(MiriamType.MESH_2012, "D010300")));
+		Target target = null;
+		for (Target t : view.getInferenceNetwork()) {
+			for (MiriamData row : t.getGenes()) {
+				if (row.getResource().equals(geneName)) {
+					target = t;
+				}
+			}
+		}
+
+		Element element = new Rna("id");
+		element.setName(geneName);
+
+		assertTrue(elementMatcher.elementMatch(target, element));
+
+	}
+
+}
-- 
GitLab