summaryrefslogtreecommitdiff
path: root/src/main/java/com/p4square/grow/model/Chapters.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/p4square/grow/model/Chapters.java')
-rw-r--r--src/main/java/com/p4square/grow/model/Chapters.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/main/java/com/p4square/grow/model/Chapters.java b/src/main/java/com/p4square/grow/model/Chapters.java
new file mode 100644
index 0000000..175b6fb
--- /dev/null
+++ b/src/main/java/com/p4square/grow/model/Chapters.java
@@ -0,0 +1,46 @@
+package com.p4square.grow.model;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Optional;
+
+/**
+ * The chapters of the training section.
+ */
+public enum Chapters {
+ INTRODUCTION,
+ SEEKER,
+ BELIEVER,
+ DISCIPLE,
+ TEACHER,
+ LEADER;
+
+ /**
+ * A case-insensitive version of Chapters.valueOf().
+ */
+ @JsonCreator
+ public static Chapters fromString(String s) {
+ return valueOf(s.toUpperCase());
+ }
+
+ @JsonValue
+ public String identifier() {
+ return toString().toLowerCase();
+ }
+
+ /**
+ * Convert the Chapter to a score, if possible.
+ */
+ public Optional<Double> toScore() {
+ switch (this) {
+ case SEEKER:
+ case BELIEVER:
+ case DISCIPLE:
+ case TEACHER:
+ return Optional.of(Score.numericScore(this.toString()));
+ default:
+ return Optional.empty();
+ }
+ }
+}