@@ -113,32 +113,36 @@ public class ChallengesManager
113
113
* This comparator orders challenges by their level, order and name.
114
114
*/
115
115
private final Comparator <Challenge > challengeComparator = (o1 , o2 ) -> {
116
+ // Get the levels
116
117
ChallengeLevel o1Level = this .getLevel (o1 .getLevel ());
117
118
ChallengeLevel o2Level = this .getLevel (o2 .getLevel ());
118
119
119
- if (o1Level == null && o2Level == null )
120
- {
120
+ // Handle null levels consistently
121
+ if (o1Level == null && o2Level == null ) {
122
+ // Both levels are null, compare by order
121
123
return Integer .compare (o1 .getOrder (), o2 .getOrder ());
122
- }
123
- else if (o1Level == null )
124
- {
124
+ } else if (o1Level == null ) {
125
+ // If o1 level is null, it should be ordered lower
125
126
return -1 ;
126
- }
127
- else if (o2Level == null )
128
- {
127
+ } else if (o2Level == null ) {
128
+ // If o2 level is null, it should be ordered lower
129
129
return 1 ;
130
130
}
131
- else if (o1Level .equals (o2Level ))
132
- {
131
+
132
+ // If both levels are non-null, compare their orders
133
+ int levelComparison = Integer .compare (o1Level .getOrder (), o2Level .getOrder ());
134
+
135
+ // If levels are the same, compare by challenge order
136
+ if (levelComparison == 0 ) {
133
137
return Integer .compare (o1 .getOrder (), o2 .getOrder ());
134
138
}
135
- else
136
- {
137
- return Integer .compare (o1Level .getOrder (), o2Level .getOrder ());
138
- }
139
+
140
+ // Return the level comparison result
141
+ return levelComparison ;
139
142
};
140
143
141
144
145
+
142
146
// ---------------------------------------------------------------------
143
147
// Section: Constructor
144
148
// ---------------------------------------------------------------------
0 commit comments