97: Using record and improve GradingReportTemplateService

This commit is contained in:
Tom Zhao 2025-02-20 12:53:43 +01:00
parent cee39cbf78
commit be29e38e97
3 changed files with 15 additions and 39 deletions
core/src/main/java/se/su/dsv/scipro
view/src/main/java/se/su/dsv/scipro/grading

@ -14,6 +14,8 @@ public interface GradingReportTemplateService {
GradingReportTemplate getCurrentTemplate(ProjectType projectType);
GradingReportTemplate getCurrentTemplate(ProjectType projectType, LocalDate startDate);
GradingReportTemplate getTemplate(long templateId);
/**

@ -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);

@ -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);