GNM-1032 Beim Speichern die Sortorder der Einzelmaßnahmen nach Beginn der geplanten Einzelmaßnahme sortieren
diff --git a/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java b/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java
index 3510ff0..0ab13fa 100644
--- a/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java
+++ b/src/main/java/org/eclipse/openk/core/controller/GridMeasureBackendController.java
@@ -43,6 +43,9 @@
             ProcessState stateInDb = getDbProcessState( newMeasure.getId() );
             PlgmProcessSubject subject = PlgmProcessSubject.fromGridMeasure(newMeasure, changeuser);
 
+            if (newMeasure.getListSingleGridmeasures() != null) {
+                sortSingleGridMeasuresForDate(newMeasure);
+            }
             assertIsUserAllowedToStore(token, newMeasure, changeuser);
 
             subject.setStateInDb( stateInDb );
@@ -65,6 +68,24 @@
         }
     }
 
+    private GridMeasure sortSingleGridMeasuresForDate(GridMeasure gridMeasure) {
+        List<SingleGridmeasure> singleGridmeasures = gridMeasure.getListSingleGridmeasures();
+
+        Collections.sort(singleGridmeasures, new Comparator<SingleGridmeasure>() {
+            public int compare(SingleGridmeasure sgm1, SingleGridmeasure sgm2) {
+                if (sgm1.getPlannedStarttimeSinglemeasure() == null || sgm2.getPlannedStarttimeSinglemeasure() == null)
+                    return 0;
+                return sgm1.getPlannedStarttimeSinglemeasure().compareTo(sgm2.getPlannedStarttimeSinglemeasure());
+            }
+        });
+        for (SingleGridmeasure sgm: singleGridmeasures) {
+            sgm.setSortorder(singleGridmeasures.indexOf(sgm) + 1);
+        }
+
+        gridMeasure.setListSingleGridmeasures(singleGridmeasures);
+        return gridMeasure;
+    }
+
     public List<GridMeasure> getGridMeasures(String username, FilterObject filterObject)  {
 
         List<GridMeasure> vmList = new java.util.ArrayList<>();