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 { public interface SplitOrRestartProjectService {
enum SplittableStatus { enum SplittableStatus {
NOT_EXIST("Project does not exist."), NOT_EXIST,
NOT_ACTIVE("Only active project can be split."), NOT_ACTIVE,
NOT_TWO_PARTICIPANTS("To be able to split a project, it needs to have 2 participants."), NOT_TWO_PARTICIPANTS,
PHASE_TWO_STARTED("Phase 2 (Review) is already started, can't split right now."), PHASE_TWO_STARTED,
FINAL_SEMINAR_PHASE_STARTED("Final seminar phase has been started, too late to split."), FINAL_SEMINAR_PHASE_STARTED,
OK("Ok to split."); OK,
private final String message;
SplittableStatus(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
} }
record SplittableStatusRecord( record SplittableStatusRecord(

@ -56,12 +56,7 @@ public class AdminSplitProjectPanel extends Panel {
}; };
add(splitProjectLink); add(splitProjectLink);
add( add(new Label("splitInfo", Model.of(getStatusMessage(ldModel.getObject()))));
new Label(
"splitInfo",
Model.of(ldModel.getObject() == SplittableStatus.OK ? "" : ldModel.getObject().getMessage())
)
);
} }
@Override @Override
@ -69,4 +64,15 @@ public class AdminSplitProjectPanel extends Panel {
super.onConfigure(); super.onConfigure();
setVisibilityAllowed(SciProSession.get().authorizedForRole(Roles.ADMIN)); 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.