From d3496924c9dff8634dfdb26836575b4b6e63170d Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 20 Feb 2022 11:17:19 +0100
Subject: [PATCH] sort templates in template groups naturally

---
 .../templategroup/TemplateGroupService.java           | 11 +++++++++--
 .../budgetmaster/unit/TemplateGroupServiceTest.java   |  2 +-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/templategroup/TemplateGroupService.java b/src/main/java/de/deadlocker8/budgetmaster/templategroup/TemplateGroupService.java
index df9db5a2e..951f99884 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/templategroup/TemplateGroupService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/templategroup/TemplateGroupService.java
@@ -118,11 +118,18 @@ public class TemplateGroupService implements Resettable, AccessAllEntities<Templ
 
 		for(TemplateGroup templateGroup : templateGroups)
 		{
-			templatesGrouped.put(templateGroup, templateGroup.getReferringTemplates());
+			templatesGrouped.put(templateGroup, getReferringTemplatesSorted(templateGroup));
 		}
 
-		templatesGrouped.put(defaultGroup, defaultGroup.getReferringTemplates());
+		templatesGrouped.put(defaultGroup, getReferringTemplatesSorted(defaultGroup));
 
 		return templatesGrouped;
 	}
+
+	private List<Template> getReferringTemplatesSorted(TemplateGroup templateGroup)
+	{
+		final List<Template> referringTemplates = new ArrayList<>(templateGroup.getReferringTemplates());
+		referringTemplates.sort((t1, t2) -> new NaturalOrderComparator().compare(t1.getTemplateName(), t2.getTemplateName()));
+		return referringTemplates;
+	}
 }
diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/TemplateGroupServiceTest.java b/src/test/java/de/deadlocker8/budgetmaster/unit/TemplateGroupServiceTest.java
index 7329a7355..7d6abb5f9 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/unit/TemplateGroupServiceTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/unit/TemplateGroupServiceTest.java
@@ -74,7 +74,7 @@ class TemplateGroupServiceTest
 
 		final Map<TemplateGroup, List<Template>> templatesGrouped = templateGroupService.getTemplatesByGroupedByTemplateGroup();
 		assertThat(templatesGrouped).hasSize(3)
-				.containsExactly(entry(templateGroup1, List.of(template1, template4)),
+				.containsExactly(entry(templateGroup1, List.of(template4, template1)),
 						entry(templateGroup2, List.of(template3)),
 						entry(templateGroupDefault, List.of(template2)));
 	}
-- 
GitLab