87: Refactor out status message to view layer

This commit is contained in:
Tom Zhao 2025-04-07 12:50:34 +02:00
parent 13fa678ac5
commit 3f604ad926
3 changed files with 24 additions and 23 deletions
core/src/main/java/se/su/dsv/scipro/project/split
view/src/main/java/se/su/dsv/scipro/admin/pages

@ -6,22 +6,12 @@ import se.su.dsv.scipro.reviewing.RoughDraftApproval;
public interface SplitOrRestartProjectService {
enum SplittableStatus {
NOT_EXIST("Project does not exist."),
NOT_ACTIVE("Only active project can be split."),
NOT_TWO_PARTICIPANTS("To be able to split a project, it needs to have 2 participants."),
PHASE_TWO_STARTED("Phase 2 (Review) is already started, can't split right now."),
FINAL_SEMINAR_PHASE_STARTED("Final seminar phase has been started, too late to split."),
OK("Ok to split.");
private final String message;
SplittableStatus(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
NOT_EXIST,
NOT_ACTIVE,
NOT_TWO_PARTICIPANTS,
PHASE_TWO_STARTED,
FINAL_SEMINAR_PHASE_STARTED,
OK,
}
record SplittableStatusRecord(

@ -56,12 +56,7 @@ public class AdminSplitProjectPanel extends Panel {
};
add(splitProjectLink);
add(
new Label(
"splitInfo",
Model.of(ldModel.getObject() == SplittableStatus.OK ? "" : ldModel.getObject().getMessage())
)
);
add(new Label("splitInfo", Model.of(getStatusMessage(ldModel.getObject()))));
}
@Override
@ -69,4 +64,15 @@ public class AdminSplitProjectPanel extends Panel {
super.onConfigure();
setVisibilityAllowed(SciProSession.get().authorizedForRole(Roles.ADMIN));
}
private String getStatusMessage(SplittableStatus status) {
return switch (status) {
case OK -> "";
case NOT_EXIST -> getString("status_not_exist");
case NOT_ACTIVE -> getString("status_not_active");
case NOT_TWO_PARTICIPANTS -> getString("status_not_two_participants");
case PHASE_TWO_STARTED -> getString("status_phase_two_started");
case FINAL_SEMINAR_PHASE_STARTED -> getString("status_final_seminar_phase_started");
};
}
}

@ -1 +1,6 @@
splitButton = Split Project
splitButton = Split Project
status_not_exit = Project does not exist.
status_not_active = Only active project can be split.
status_not_two_participants = To be able to split a project, it needs to have 2 participants.
status_phase_two_started = Phase 2 (Review) is already started, can't split right now.
status_final_seminar_phase_started = Final seminar phase has been started, too late to split.