97: Using LoadableDetachableModel to cache GradingReportTemplate
This commit is contained in:
parent
be29e38e97
commit
3912ba7f32
@ -11,6 +11,7 @@ import org.apache.wicket.markup.html.list.ListItem;
|
|||||||
import org.apache.wicket.markup.html.list.ListView;
|
import org.apache.wicket.markup.html.list.ListView;
|
||||||
import org.apache.wicket.markup.html.panel.Panel;
|
import org.apache.wicket.markup.html.panel.Panel;
|
||||||
import org.apache.wicket.model.IModel;
|
import org.apache.wicket.model.IModel;
|
||||||
|
import org.apache.wicket.model.LoadableDetachableModel;
|
||||||
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.GradingReportTemplate;
|
import se.su.dsv.scipro.report.GradingReportTemplate;
|
||||||
@ -45,13 +46,18 @@ public class TemplatePanel extends Panel {
|
|||||||
|
|
||||||
public TemplatePanel(String id, final IModel<Project> projectIModel) {
|
public TemplatePanel(String id, final IModel<Project> projectIModel) {
|
||||||
super(id, projectIModel);
|
super(id, projectIModel);
|
||||||
final DegreeType degreeType = projectIModel.getObject().getProjectType().getDegreeType();
|
Project project = projectIModel.getObject();
|
||||||
|
final DegreeType degreeType = project.getProjectType().getDegreeType();
|
||||||
|
|
||||||
|
IModel<GradingReportTemplate> grtModel = LoadableDetachableModel.of(() ->
|
||||||
|
gradingReportTemplateService.getCurrentTemplate(projectIModel.getObject().getProjectType(),
|
||||||
|
projectIModel.getObject().getStartDate()));
|
||||||
|
|
||||||
final WebMarkupContainer upto16 = new WebMarkupContainer("upto2016") {
|
final WebMarkupContainer upto16 = new WebMarkupContainer("upto2016") {
|
||||||
@Override
|
@Override
|
||||||
protected void onConfigure() {
|
protected void onConfigure() {
|
||||||
super.onConfigure();
|
super.onConfigure();
|
||||||
setVisibilityAllowed(
|
setVisibilityAllowed(grtModel.getObject() == null &&
|
||||||
GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) ==
|
GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) ==
|
||||||
GradingCategory.UP_TO_2016
|
GradingCategory.UP_TO_2016
|
||||||
);
|
);
|
||||||
@ -64,7 +70,7 @@ public class TemplatePanel extends Panel {
|
|||||||
@Override
|
@Override
|
||||||
protected void onConfigure() {
|
protected void onConfigure() {
|
||||||
super.onConfigure();
|
super.onConfigure();
|
||||||
setVisibilityAllowed(
|
setVisibilityAllowed(grtModel.getObject() == null &&
|
||||||
GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) ==
|
GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) ==
|
||||||
GradingCategory.BETWEEN_2017_202410
|
GradingCategory.BETWEEN_2017_202410
|
||||||
);
|
);
|
||||||
@ -73,15 +79,11 @@ public class TemplatePanel extends Panel {
|
|||||||
addTemplates(degreeType, between2017_202410);
|
addTemplates(degreeType, between2017_202410);
|
||||||
add(between2017_202410);
|
add(between2017_202410);
|
||||||
|
|
||||||
final GradeLimitsContainer from202411 = new GradeLimitsContainer("from202411", projectIModel) {
|
final GradeLimitsContainer from202411 = new GradeLimitsContainer("from202411", grtModel) {
|
||||||
@Override
|
@Override
|
||||||
protected void onConfigure() {
|
protected void onConfigure() {
|
||||||
super.onConfigure();
|
super.onConfigure();
|
||||||
|
setVisibilityAllowed(grtModel.getObject() != null);
|
||||||
setVisibilityAllowed(
|
|
||||||
GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) ==
|
|
||||||
GradingCategory.FROM_202411
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
add(from202411);
|
add(from202411);
|
||||||
@ -117,9 +119,7 @@ public class TemplatePanel extends Panel {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<GradeWithPointRange> getGradeWithPointRanges(Project project) {
|
private List<GradeWithPointRange> getGradeWithPointRanges(GradingReportTemplate grt) {
|
||||||
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<>();
|
||||||
|
|
||||||
@ -138,11 +138,9 @@ public class TemplatePanel extends Panel {
|
|||||||
|
|
||||||
private class GradeLimitsContainer extends WebMarkupContainer {
|
private class GradeLimitsContainer extends WebMarkupContainer {
|
||||||
|
|
||||||
public GradeLimitsContainer(String id, IModel<Project> projectIModel) {
|
public GradeLimitsContainer(String id, IModel<GradingReportTemplate> grtModel) {
|
||||||
super(id, projectIModel);
|
super(id, grtModel);
|
||||||
IModel<List<GradeWithPointRange>> list = projectIModel.map(project ->
|
IModel<List<GradeWithPointRange>> list = grtModel.map(TemplatePanel.this::getGradeWithPointRanges);
|
||||||
getGradeWithPointRanges(project)
|
|
||||||
);
|
|
||||||
|
|
||||||
add(
|
add(
|
||||||
new ListView<>("gradewithlimits_list", list) {
|
new ListView<>("gradewithlimits_list", list) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user