From 9b59efb186d148cb0164656c88944c5b745a29f8 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 25 Jul 2017 16:39:15 +0200
Subject: [PATCH] targets are sorted by number of elements targeted

---
 .../java/lcsb/mapviewer/api/BaseRestImpl.java | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

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 7953a630b0..635f9985de 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/BaseRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/BaseRestImpl.java
@@ -2,6 +2,7 @@ package lcsb.mapviewer.api;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -200,6 +201,23 @@ public abstract class BaseRestImpl {
 		for (Target target : targets) {
 			result.add(prepareTarget(target, models));
 		}
+		result.sort(new Comparator<Map<String, Object>>() {
+
+			@Override
+			public int compare(Map<String, Object> o1, Map<String, Object> o2) {
+				List<?> targetedObjects1 = (List<?>) o1.get("targetElements");
+				List<?> targetedObjects2 = (List<?>) o2.get("targetElements");
+				Integer size1 = 0;
+				Integer size2 = 0;
+				if (targetedObjects1 != null) {
+					size1 = targetedObjects1.size();
+				}
+				if (targetedObjects2 != null) {
+					size2 = targetedObjects2.size();
+				}
+				return -size1.compareTo(size2);
+			}
+		});
 		return result;
 	}
 
@@ -238,5 +256,4 @@ public abstract class BaseRestImpl {
 		}
 	}
 
-
 }
-- 
GitLab