Simplified gathering of grading boundries

This commit is contained in:
Andreas Svanberg 2025-02-20 10:47:48 +01:00
parent 411908fb72
commit 7e79e0c5d0
2 changed files with 13 additions and 16 deletions
core/src/main/java/se/su/dsv/scipro/report
view/src/main/java/se/su/dsv/scipro/grading

@ -81,6 +81,10 @@ public class GradingReportTemplate extends DomainObject {
this.validFrom = validFrom; this.validFrom = validFrom;
} }
public int getMaxPoints() {
return getCriteria().stream().mapToInt(GradingCriterionTemplate::getMaxPoints).sum();
}
// ---------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------
// Properties (Getters and Setters) // Properties (Getters and Setters)
// ---------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------

@ -3,9 +3,8 @@ package se.su.dsv.scipro.grading;
import jakarta.inject.Inject; import jakarta.inject.Inject;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Arrays; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListItem;
@ -14,7 +13,6 @@ import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel; import org.apache.wicket.model.IModel;
import se.su.dsv.scipro.project.Project; import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.report.GradeLimit; import se.su.dsv.scipro.report.GradeLimit;
import se.su.dsv.scipro.report.GradingCriterionTemplate;
import se.su.dsv.scipro.report.GradingReportTemplate; import se.su.dsv.scipro.report.GradingReportTemplate;
import se.su.dsv.scipro.system.DegreeType; import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType; import se.su.dsv.scipro.system.ProjectType;
@ -122,20 +120,15 @@ public class TemplatePanel extends Panel {
private List<GradeWithPointRange> getGradeWithPointRanges(ProjectType projectType) { private List<GradeWithPointRange> getGradeWithPointRanges(ProjectType projectType) {
GradingReportTemplate grt = gradingReportTemplateService.getCurrentTemplate(projectType); GradingReportTemplate grt = gradingReportTemplateService.getCurrentTemplate(projectType);
GradeLimit[] gradeLimits = grt.getGradeLimits().toArray(GradeLimit[]::new); GradeLimit[] gradeLimits = grt.getGradeLimits().toArray(GradeLimit[]::new);
List<GradeWithPointRange> list = Arrays.stream(gradeLimits) List<GradeWithPointRange> list = new ArrayList<>();
.map(gradeLimit -> new GradeWithPointRange(gradeLimit.getGrade(), gradeLimit.getLowerLimit()))
.collect(Collectors.toList());
for (int i = 1; i < list.size(); i++) { for (int i = 0; i < gradeLimits.length; i++) {
list.get(i).setUpperLimit(gradeLimits[i - 1].getLowerLimit() - 1); GradeLimit gradeLimit = gradeLimits[i];
} int lowerLimit = gradeLimit.getLowerLimit();
int upperLimit = i == 0 ? grt.getMaxPoints() : gradeLimits[i - 1].getLowerLimit() - 1;
if (!list.isEmpty()) { GradeWithPointRange gradeWithPointRange = new GradeWithPointRange(gradeLimit.getGrade(), lowerLimit);
list gradeWithPointRange.setUpperLimit(upperLimit);
.get(0) list.add(gradeWithPointRange);
.setUpperLimit(
grt.getCriteria().stream().map(GradingCriterionTemplate::getMaxPoints).reduce(0, Integer::sum)
);
} }
return list; return list;