package in.partake.model.dto.auxiliary; public enum ParticipationStatus { ENROLLED() { // 参加します public boolean isEnrolled() { return true; } public String toHumanReadableString(boolean isInWaitingQueue) { return isInWaitingQueue ? "キャンセル待ち" : "参加"; } }, RESERVED() { // 多分参加します(仮登録) public boolean isEnrolled() { return true; } public String toHumanReadableString(boolean isInWaitingQueue) { return isInWaitingQueue ? "キャンセル待ち(仮)" : "参加(仮)"; } }, CANCELLED() { // 参加をキャンセルします public boolean isEnrolled() { return false; } public String toHumanReadableString(boolean isInWaitingQueue) { return "キャンセル済"; } }, NOT_ENROLLED() { // そもそも参加をしていません public boolean isEnrolled() { return false; } public String toHumanReadableString(boolean isInWaitingQueue) { return "不参加"; } } ; private static ParticipationStatus SAFE_VALUE = NOT_ENROLLED; public static ParticipationStatus safeValueOf(String str) { if (str == null) { return SAFE_VALUE; } if ("".equals(str)) { return SAFE_VALUE; } try { return valueOf(str.toUpperCase()); } catch (IllegalArgumentException e) { return SAFE_VALUE; } } // ---------------------------------------------------------------------- public abstract boolean isEnrolled(); public abstract String toHumanReadableString(boolean isInWaitingQueue); }