diff --git a/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java b/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java index 76ebe71687..c1d00f924a 100644 --- a/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java +++ b/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java @@ -81,6 +81,10 @@ public class GradingReportTemplate extends DomainObject { this.validFrom = validFrom; } + public int getMaxPoints() { + return getCriteria().stream().mapToInt(GradingCriterionTemplate::getMaxPoints).sum(); + } + // ---------------------------------------------------------------------------------- // Properties (Getters and Setters) // ---------------------------------------------------------------------------------- diff --git a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java index 3600223398..1e66eeca5a 100644 --- a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java +++ b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java @@ -3,9 +3,8 @@ package se.su.dsv.scipro.grading; import jakarta.inject.Inject; import java.io.Serializable; import java.time.LocalDate; -import java.util.Arrays; +import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; 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 se.su.dsv.scipro.project.Project; 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.system.DegreeType; import se.su.dsv.scipro.system.ProjectType; @@ -122,20 +120,15 @@ public class TemplatePanel extends Panel { private List<GradeWithPointRange> getGradeWithPointRanges(ProjectType projectType) { GradingReportTemplate grt = gradingReportTemplateService.getCurrentTemplate(projectType); GradeLimit[] gradeLimits = grt.getGradeLimits().toArray(GradeLimit[]::new); - List<GradeWithPointRange> list = Arrays.stream(gradeLimits) - .map(gradeLimit -> new GradeWithPointRange(gradeLimit.getGrade(), gradeLimit.getLowerLimit())) - .collect(Collectors.toList()); + List<GradeWithPointRange> list = new ArrayList<>(); - for (int i = 1; i < list.size(); i++) { - list.get(i).setUpperLimit(gradeLimits[i - 1].getLowerLimit() - 1); - } - - if (!list.isEmpty()) { - list - .get(0) - .setUpperLimit( - grt.getCriteria().stream().map(GradingCriterionTemplate::getMaxPoints).reduce(0, Integer::sum) - ); + for (int i = 0; i < gradeLimits.length; i++) { + GradeLimit gradeLimit = gradeLimits[i]; + int lowerLimit = gradeLimit.getLowerLimit(); + int upperLimit = i == 0 ? grt.getMaxPoints() : gradeLimits[i - 1].getLowerLimit() - 1; + GradeWithPointRange gradeWithPointRange = new GradeWithPointRange(gradeLimit.getGrade(), lowerLimit); + gradeWithPointRange.setUpperLimit(upperLimit); + list.add(gradeWithPointRange); } return list;