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 7953a630b0d2524f8c4e3e7f80170b3e262ac62f..635f9985def107f9517c0e015666690b71b8f197 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 { } } - }