SkillProgressData.java
package fr.avenirsesr.portfolio.student.progress.domain.data;
import fr.avenirsesr.portfolio.common.data.domain.model.SortCriteria;
import fr.avenirsesr.portfolio.program.domain.model.Skill;
import fr.avenirsesr.portfolio.student.progress.domain.model.StudentProgress;
import java.util.Comparator;
public record SkillProgressData(
Skill skill,
StudentProgress studentProgress,
SkillLevelProgressWithTraceCountData currentSkillLevelProgress) {
public static Comparator<SkillProgressData> comparatorOf(SortCriteria sortCriteria) {
Comparator<SkillProgressData> comparator =
switch (sortCriteria.field()) {
case NAME -> Comparator.comparing(slp -> slp.skill().getName());
case DATE ->
Comparator.comparing(
skillProgress ->
skillProgress
.currentSkillLevelProgress()
.skillLevelProgress()
.getStartDate());
};
comparator =
switch (sortCriteria.order()) {
case ASC -> comparator;
case DESC -> comparator.reversed();
};
return comparator;
}
}