From be29e38e972427fb70c2469dbf9a875fe339b559 Mon Sep 17 00:00:00 2001 From: Tom Zhao <tom.zhao@dsv.su.se> Date: Thu, 20 Feb 2025 12:53:43 +0100 Subject: [PATCH] 97: Using record and improve GradingReportTemplateService --- .../grading/GradingReportTemplateService.java | 2 + .../report/GradingReportServiceImpl.java | 5 ++ .../su/dsv/scipro/grading/TemplatePanel.java | 47 ++++--------------- 3 files changed, 15 insertions(+), 39 deletions(-) diff --git a/core/src/main/java/se/su/dsv/scipro/grading/GradingReportTemplateService.java b/core/src/main/java/se/su/dsv/scipro/grading/GradingReportTemplateService.java index 6b5daf224b..b0fa118411 100644 --- a/core/src/main/java/se/su/dsv/scipro/grading/GradingReportTemplateService.java +++ b/core/src/main/java/se/su/dsv/scipro/grading/GradingReportTemplateService.java @@ -14,6 +14,8 @@ public interface GradingReportTemplateService { GradingReportTemplate getCurrentTemplate(ProjectType projectType); + GradingReportTemplate getCurrentTemplate(ProjectType projectType, LocalDate startDate); + GradingReportTemplate getTemplate(long templateId); /** diff --git a/core/src/main/java/se/su/dsv/scipro/report/GradingReportServiceImpl.java b/core/src/main/java/se/su/dsv/scipro/report/GradingReportServiceImpl.java index bc945b6443..ea9363d06c 100644 --- a/core/src/main/java/se/su/dsv/scipro/report/GradingReportServiceImpl.java +++ b/core/src/main/java/se/su/dsv/scipro/report/GradingReportServiceImpl.java @@ -216,6 +216,11 @@ public class GradingReportServiceImpl implements GradingReportTemplateService, G return gradingReportTemplateRepo.getCurrentTemplate(projectType, LocalDate.now(clock)); } + @Override + public GradingReportTemplate getCurrentTemplate(ProjectType projectType, LocalDate startDate) { + return gradingReportTemplateRepo.getCurrentTemplate(projectType, startDate); + } + @Override public GradingReportTemplate getTemplate(long templateId) { return gradingReportTemplateRepo.findOne(templateId); 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 212053270e..4e8686484e 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 @@ -117,8 +117,9 @@ public class TemplatePanel extends Panel { ); } - private List<GradeWithPointRange> getGradeWithPointRanges(ProjectType projectType) { - GradingReportTemplate grt = gradingReportTemplateService.getCurrentTemplate(projectType); + private List<GradeWithPointRange> getGradeWithPointRanges(Project project) { + GradingReportTemplate grt = gradingReportTemplateService.getCurrentTemplate(project.getProjectType(), + project.getStartDate()); GradeLimit[] gradeLimits = grt.getGradeLimits().toArray(GradeLimit[]::new); List<GradeWithPointRange> list = new ArrayList<>(); @@ -126,53 +127,21 @@ public class TemplatePanel extends Panel { 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); + + list.add(new GradeWithPointRange(gradeLimit.getGrade(), lowerLimit, upperLimit)); } return list; } - private class GradeWithPointRange implements Serializable { - - private String grade; - private int lowerLimit; - private int upperLimit; - - public GradeWithPointRange(String grade, int lowerLimit) { - this.grade = grade; - this.lowerLimit = lowerLimit; - } - - public String getGrade() { - return grade; - } - - public int getLowerLimit() { - return lowerLimit; - } - - public int getUpperLimit() { - return upperLimit; - } - - public void setUpperLimit(int upperLimit) { - this.upperLimit = upperLimit; - } - - @Override - public String toString() { - return "[" + grade + "]: " + lowerLimit + " - " + upperLimit; - } - } + private record GradeWithPointRange (String grade, int lowerLimit, int upperLimit) { } private class GradeLimitsContainer extends WebMarkupContainer { public GradeLimitsContainer(String id, IModel<Project> projectIModel) { super(id, projectIModel); IModel<List<GradeWithPointRange>> list = projectIModel.map(project -> - getGradeWithPointRanges(project.getProjectType()) + getGradeWithPointRanges(project) ); add( @@ -182,7 +151,7 @@ public class TemplatePanel extends Panel { IModel<String> s = item .getModel() .map( - gpr -> "[" + gpr.getGrade() + "] " + gpr.getLowerLimit() + " - " + gpr.getUpperLimit() + gpr -> "[" + gpr.grade() + "] " + gpr.lowerLimit() + " - " + gpr.upperLimit() ); item.add(new Label("gradewithlimits", s)); add(item);