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);
GradingReportTemplate getCurrentTemplate(ProjectType projectType, LocalDate startDate);
GradingReportTemplate getTemplate(long templateId); GradingReportTemplate getTemplate(long templateId);
/** /**

@ -216,6 +216,11 @@ public class GradingReportServiceImpl implements GradingReportTemplateService, G
return gradingReportTemplateRepo.getCurrentTemplate(projectType, LocalDate.now(clock)); return gradingReportTemplateRepo.getCurrentTemplate(projectType, LocalDate.now(clock));
} }
@Override
public GradingReportTemplate getCurrentTemplate(ProjectType projectType, LocalDate startDate) {
return gradingReportTemplateRepo.getCurrentTemplate(projectType, startDate);
}
@Override @Override
public GradingReportTemplate getTemplate(long templateId) { public GradingReportTemplate getTemplate(long templateId) {
return gradingReportTemplateRepo.findOne(templateId); return gradingReportTemplateRepo.findOne(templateId);

@ -117,8 +117,9 @@ public class TemplatePanel extends Panel {
); );
} }
private List<GradeWithPointRange> getGradeWithPointRanges(ProjectType projectType) { private List<GradeWithPointRange> getGradeWithPointRanges(Project project) {
GradingReportTemplate grt = gradingReportTemplateService.getCurrentTemplate(projectType); GradingReportTemplate grt = gradingReportTemplateService.getCurrentTemplate(project.getProjectType(),
project.getStartDate());
GradeLimit[] gradeLimits = grt.getGradeLimits().toArray(GradeLimit[]::new); GradeLimit[] gradeLimits = grt.getGradeLimits().toArray(GradeLimit[]::new);
List<GradeWithPointRange> list = new ArrayList<>(); List<GradeWithPointRange> list = new ArrayList<>();
@ -126,53 +127,21 @@ public class TemplatePanel extends Panel {
GradeLimit gradeLimit = gradeLimits[i]; GradeLimit gradeLimit = gradeLimits[i];
int lowerLimit = gradeLimit.getLowerLimit(); int lowerLimit = gradeLimit.getLowerLimit();
int upperLimit = i == 0 ? grt.getMaxPoints() : gradeLimits[i - 1].getLowerLimit() - 1; int upperLimit = i == 0 ? grt.getMaxPoints() : gradeLimits[i - 1].getLowerLimit() - 1;
GradeWithPointRange gradeWithPointRange = new GradeWithPointRange(gradeLimit.getGrade(), lowerLimit);
gradeWithPointRange.setUpperLimit(upperLimit); list.add(new GradeWithPointRange(gradeLimit.getGrade(), lowerLimit, upperLimit));
list.add(gradeWithPointRange);
} }
return list; return list;
} }
private class GradeWithPointRange implements Serializable { private record GradeWithPointRange (String grade, int lowerLimit, int upperLimit) { }
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 class GradeLimitsContainer extends WebMarkupContainer { private class GradeLimitsContainer extends WebMarkupContainer {
public GradeLimitsContainer(String id, IModel<Project> projectIModel) { public GradeLimitsContainer(String id, IModel<Project> projectIModel) {
super(id, projectIModel); super(id, projectIModel);
IModel<List<GradeWithPointRange>> list = projectIModel.map(project -> IModel<List<GradeWithPointRange>> list = projectIModel.map(project ->
getGradeWithPointRanges(project.getProjectType()) getGradeWithPointRanges(project)
); );
add( add(
@ -182,7 +151,7 @@ public class TemplatePanel extends Panel {
IModel<String> s = item IModel<String> s = item
.getModel() .getModel()
.map( .map(
gpr -> "[" + gpr.getGrade() + "] " + gpr.getLowerLimit() + " - " + gpr.getUpperLimit() gpr -> "[" + gpr.grade() + "] " + gpr.lowerLimit() + " - " + gpr.upperLimit()
); );
item.add(new Label("gradewithlimits", s)); item.add(new Label("gradewithlimits", s));
add(item); add(item);