fix #7430 New team members are added at the end of the member list
authorPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 18 May 2018 11:07:18 +0000 (13:07 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 18 May 2018 11:07:41 +0000 (13:07 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/DefaultCdmBaseComparator.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamMemberSection.java

index 4e1c57012944c194f7ea1b128848edc84661add3..dbdb27500c1299ed97770bed2dd13630c7309952 100644 (file)
@@ -30,7 +30,11 @@ public class DefaultCdmBaseComparator<T extends CdmBase> implements Comparator<T
         if(o2==null){
             return 1;
         }
-        return o1.getId()-o2.getId();
+        int diff = o1.getId()-o2.getId();
+        if(diff==0){
+            diff = o1.getCreated().compareTo(o2.getCreated());
+        }
+        return diff;
     }
 
 }
index a7858ba362e8f44f58b7856db4f72c28d02f59bd..bb8ed81d0fedf91ac1fd297f5622bfa99caf9ca7 100644 (file)
@@ -11,13 +11,13 @@ package eu.etaxonomy.taxeditor.ui.section.agent;
 
 import java.util.Collection;
 import java.util.Comparator;
+import java.util.List;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.section.DefaultCdmBaseComparator;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AbstractUnboundEntityCollectionSection;
 
 /**
@@ -87,7 +87,24 @@ public class TeamMemberSection extends AbstractUnboundEntityCollectionSection<Te
 
     @Override
     public Comparator<Person> getComparator() {
-        return new DefaultCdmBaseComparator<>();
+        return (p1, p2) -> {
+            if(p1==null){
+                return -1;
+            }
+            if(p2==null){
+                return 1;
+            }
+            List<Person> teamMembers = getEntity().getTeamMembers();
+            int indexOfP1 = teamMembers.indexOf(p1);
+            int indexOfP2 = teamMembers.indexOf(p2);
+            if(indexOfP1==-1){
+                return 1;
+            }
+            if(indexOfP2==-1){
+                return -1;
+            }
+            return indexOfP1 - indexOfP2;
+        };
     }
 
     /**