summaryrefslogtreecommitdiff
path: root/src/main/java/com/p4square/grow/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/p4square/grow/frontend')
-rw-r--r--src/main/java/com/p4square/grow/frontend/ChapterCompletePage.java56
-rw-r--r--src/main/java/com/p4square/grow/frontend/GroupLeaderTrainingPageResource.java26
-rw-r--r--src/main/java/com/p4square/grow/frontend/ProgressReporter.java3
-rw-r--r--src/main/java/com/p4square/grow/frontend/TrainingPageResource.java55
4 files changed, 44 insertions, 96 deletions
diff --git a/src/main/java/com/p4square/grow/frontend/ChapterCompletePage.java b/src/main/java/com/p4square/grow/frontend/ChapterCompletePage.java
index 7bda39c..b1926e8 100644
--- a/src/main/java/com/p4square/grow/frontend/ChapterCompletePage.java
+++ b/src/main/java/com/p4square/grow/frontend/ChapterCompletePage.java
@@ -5,10 +5,13 @@
package com.p4square.grow.frontend;
import java.io.IOException;
+import java.util.Arrays;
import java.util.Date;
import java.util.Map;
+import java.util.Optional;
import com.p4square.f1oauth.FellowshipOneIntegrationDriver;
+import com.p4square.grow.model.Chapters;
import freemarker.template.Template;
import org.restlet.data.MediaType;
@@ -49,7 +52,7 @@ public class ChapterCompletePage extends FreeMarkerPageResource {
private Provider<String, TrainingRecord> mTrainingRecordProvider;
private String mUserId;
- private String mChapter;
+ private Chapters mChapter;
@Override
public void doInit() {
@@ -60,7 +63,7 @@ public class ChapterCompletePage extends FreeMarkerPageResource {
mJsonClient = new JsonRequestClient(getContext().getClientDispatcher());
mTrainingRecordProvider = new TrainingRecordProvider<String>(
- new JsonRequestProvider<TrainingRecord>(
+ new JsonRequestProvider<>(
getContext().getClientDispatcher(),
TrainingRecord.class)) {
@Override
@@ -71,7 +74,7 @@ public class ChapterCompletePage extends FreeMarkerPageResource {
mUserId = getRequest().getClientInfo().getUser().getIdentifier();
- mChapter = getAttribute("chapter");
+ mChapter = Chapters.fromString(getAttribute("chapter"));
}
/**
@@ -91,12 +94,12 @@ public class ChapterCompletePage extends FreeMarkerPageResource {
}
// Verify they completed the chapter.
- Map<String, Boolean> chapters = trainingRecord.getPlaylist().getChapterStatuses();
+ Map<Chapters, Boolean> chapters = trainingRecord.getPlaylist().getChapterStatuses();
Boolean completed = chapters.get(mChapter);
if (completed == null || !completed) {
// Redirect back to training page...
String nextPage = mConfig.getString("dynamicRoot", "");
- nextPage += "/account/training/" + mChapter;
+ nextPage += "/account/training/" + mChapter.toString().toLowerCase();
getResponse().redirectSeeOther(nextPage);
return new StringRepresentation("Redirecting to " + nextPage);
}
@@ -105,25 +108,18 @@ public class ChapterCompletePage extends FreeMarkerPageResource {
assignAttribute();
// Find the next chapter
- String nextChapter = null;
- {
- int min = Integer.MAX_VALUE;
- for (Map.Entry<String, Boolean> chapter : chapters.entrySet()) {
- int index = chapterIndex(chapter.getKey());
- if (!chapter.getValue() && index < min) {
- min = index;
- nextChapter = chapter.getKey();
- }
- }
- }
+ Optional<Chapters> nextChapter = Arrays.stream(Chapters.values()).filter(c -> !chapters.get(c)).findFirst();
String nextOverride = getQueryValue("next");
if (nextOverride != null) {
- nextChapter = nextOverride;
+ nextChapter = Optional.of(Chapters.fromString(nextOverride));
}
- root.put("stage", mChapter);
- root.put("nextstage", nextChapter);
+ String nextChapterString = nextChapter.map(c -> c.toString().toLowerCase()).orElse(null);
+
+
+ root.put("stage", mChapter.toString().toLowerCase());
+ root.put("nextstage", nextChapterString);
/*
* We will display one of two transitional pages:
@@ -133,13 +129,13 @@ public class ChapterCompletePage extends FreeMarkerPageResource {
* complete message.
*/
Template t = mGrowFrontend.getTemplate("templates/stage-"
- + nextChapter + "-forward.ftl");
+ + nextChapterString + "-forward.ftl");
if (t == null) {
// Skip the chapter complete message for "Introduction"
- if ("introduction".equals(mChapter)) {
+ if (mChapter == Chapters.INTRODUCTION) {
String nextPage = mConfig.getString("dynamicRoot", "");
- nextPage += "/account/training/" + nextChapter;
+ nextPage += "/account/training/" + nextChapterString;
getResponse().redirectSeeOther(nextPage);
return new StringRepresentation("Redirecting to " + nextPage);
}
@@ -191,20 +187,4 @@ public class ChapterCompletePage extends FreeMarkerPageResource {
return response;
}
-
- int chapterIndex(String chapter) {
- if ("leader".equals(chapter)) {
- return 5;
- } else if ("teacher".equals(chapter)) {
- return 4;
- } else if ("disciple".equals(chapter)) {
- return 3;
- } else if ("believer".equals(chapter)) {
- return 2;
- } else if ("seeker".equals(chapter)) {
- return 1;
- } else {
- return Integer.MAX_VALUE;
- }
- }
}
diff --git a/src/main/java/com/p4square/grow/frontend/GroupLeaderTrainingPageResource.java b/src/main/java/com/p4square/grow/frontend/GroupLeaderTrainingPageResource.java
deleted file mode 100644
index 3ab140e..0000000
--- a/src/main/java/com/p4square/grow/frontend/GroupLeaderTrainingPageResource.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2013 Jesse Morgan
- */
-
-package com.p4square.grow.frontend;
-
-/**
- * Display the Group Leader training videos.
- *
- * @author Jesse Morgan <jesse@jesterpm.net>
- */
-public class GroupLeaderTrainingPageResource extends TrainingPageResource {
- private static final String[] CHAPTERS = { "leader" };
-
- @Override
- public void doInit() {
- super.doInit();
-
- mChapter = "leader";
- }
-
- @Override
- public String[] getChaptersInOrder() {
- return CHAPTERS;
- }
-}
diff --git a/src/main/java/com/p4square/grow/frontend/ProgressReporter.java b/src/main/java/com/p4square/grow/frontend/ProgressReporter.java
index 4662024..9f1e184 100644
--- a/src/main/java/com/p4square/grow/frontend/ProgressReporter.java
+++ b/src/main/java/com/p4square/grow/frontend/ProgressReporter.java
@@ -1,5 +1,6 @@
package com.p4square.grow.frontend;
+import com.p4square.grow.model.Chapters;
import org.restlet.security.User;
import java.io.IOException;
@@ -27,5 +28,5 @@ public interface ProgressReporter {
* @param chapter The chapter completed.
* @param date The completion date.
*/
- void reportChapterComplete(User user, String chapter, Date date) throws IOException;
+ void reportChapterComplete(User user, Chapters chapter, Date date) throws IOException;
}
diff --git a/src/main/java/com/p4square/grow/frontend/TrainingPageResource.java b/src/main/java/com/p4square/grow/frontend/TrainingPageResource.java
index 108c7a7..f3efca1 100644
--- a/src/main/java/com/p4square/grow/frontend/TrainingPageResource.java
+++ b/src/main/java/com/p4square/grow/frontend/TrainingPageResource.java
@@ -5,14 +5,10 @@
package com.p4square.grow.frontend;
import java.io.IOException;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.concurrent.ExecutorService;
+import com.p4square.grow.model.Chapters;
import freemarker.template.Template;
import org.restlet.data.MediaType;
@@ -46,8 +42,6 @@ import org.restlet.security.User;
*/
public class TrainingPageResource extends FreeMarkerPageResource {
private static final Logger LOG = Logger.getLogger(TrainingPageResource.class);
-
- private static final String[] CHAPTERS = { "introduction", "seeker", "believer", "disciple", "teacher", "leader" };
private static final Comparator<Map<String, Object>> VIDEO_COMPARATOR = (left, right) -> {
String leftNumberStr = (String) left.get("number");
String rightNumberStr = (String) right.get("number");
@@ -72,7 +66,7 @@ public class TrainingPageResource extends FreeMarkerPageResource {
private FeedData mFeedData;
// Fields pertaining to this request.
- protected String mChapter;
+ protected Chapters mChapter;
protected String mUserId;
@Override
@@ -99,7 +93,12 @@ public class TrainingPageResource extends FreeMarkerPageResource {
mFeedData = new FeedData(getContext(), mConfig);
- mChapter = getAttribute("chapter");
+ String chapterName = getAttribute("chapter");
+ if (chapterName == null) {
+ mChapter = null;
+ } else {
+ mChapter = Chapters.fromString(chapterName);
+ }
mUserId = getRequest().getClientInfo().getUser().getIdentifier();
}
@@ -117,20 +116,21 @@ public class TrainingPageResource extends FreeMarkerPageResource {
}
Playlist playlist = trainingRecord.getPlaylist();
- Map<String, Boolean> chapters = playlist.getChapterStatuses();
- Map<String, Boolean> allowedChapters = new LinkedHashMap<String, Boolean>();
+ Map<Chapters, Boolean> chapters = playlist.getChapterStatuses();
+ Map<String, Boolean> allowedChapters = new LinkedHashMap<>();
// The user is not allowed to view chapters after his highest completed chapter.
// In this loop we find which chapters are allowed and check if the user tried
// to skip ahead.
boolean allowUserToSkip = mConfig.getBoolean("allowUserToSkip", false) || getQueryValue("magicskip") != null;
- String defaultChapter = null;
- String highestCompletedChapter = null;
+ Chapters defaultChapter = null;
+ Chapters highestCompletedChapter = null;
boolean userTriedToSkip = false;
int overallProgress = 0;
boolean foundRequired = false;
- for (String chapterId : getChaptersInOrder()) {
+
+ for (Chapters chapterId : Chapters.values()) {
boolean allowed = true;
Boolean completed = chapters.get(chapterId);
@@ -145,12 +145,12 @@ public class TrainingPageResource extends FreeMarkerPageResource {
} else {
allowed = allowUserToSkip;
- if (!allowUserToSkip && chapterId.equals(mChapter)) {
+ if (!allowUserToSkip && chapterId == mChapter) {
userTriedToSkip = true;
}
}
- allowedChapters.put(chapterId, allowed);
+ allowedChapters.put(chapterId.identifier(), allowed);
if (completed) {
highestCompletedChapter = chapterId;
@@ -160,18 +160,18 @@ public class TrainingPageResource extends FreeMarkerPageResource {
}
// Overall progress is the percentage of chapters complete
- overallProgress = (int) ((double) overallProgress / getChaptersInOrder().length * 100);
+ overallProgress = (int) ((double) overallProgress / Chapters.values().length * 100);
if (defaultChapter == null) {
// Everything is completed... send them back to introduction.
- defaultChapter = "introduction";
+ defaultChapter = Chapters.INTRODUCTION;
}
if (mChapter == null || userTriedToSkip) {
// No chapter was specified or the user tried to skip ahead.
// Either case, redirect.
String nextPage = mConfig.getString("dynamicRoot", "");
- nextPage += "/account/training/" + defaultChapter;
+ nextPage += "/account/training/" + defaultChapter.toString().toLowerCase();
getResponse().redirectSeeOther(nextPage);
return new StringRepresentation("Redirecting to " + nextPage);
}
@@ -180,7 +180,7 @@ public class TrainingPageResource extends FreeMarkerPageResource {
// Get videos for the chapter.
List<Map<String, Object>> videos = null;
{
- JsonResponse response = backendGet("/training/" + mChapter);
+ JsonResponse response = backendGet("/training/" + mChapter.toString().toLowerCase());
if (!response.getStatus().isSuccess()) {
setStatus(Status.CLIENT_ERROR_NOT_FOUND);
return null;
@@ -208,7 +208,7 @@ public class TrainingPageResource extends FreeMarkerPageResource {
chapterProgress = chapterProgress * 100 / videos.size();
Map root = getRootObject();
- root.put("chapter", mChapter);
+ root.put("chapter", mChapter.identifier());
root.put("chapters", allowedChapters.keySet());
root.put("isChapterAllowed", allowedChapters);
root.put("chapterProgress", chapterProgress);
@@ -220,7 +220,7 @@ public class TrainingPageResource extends FreeMarkerPageResource {
boolean showfeed = true;
// Don't show the feed if the topic isn't allowed.
- if (!FeedData.TOPICS.contains(mChapter)) {
+ if (!FeedData.TOPICS.contains(mChapter.identifier())) {
showfeed = false;
}
@@ -236,7 +236,7 @@ public class TrainingPageResource extends FreeMarkerPageResource {
final User user = getRequest().getClientInfo().getUser();
// Get the date of the highest completed chapter.
final Date completionDate = playlist.getChaptersMap().get(highestCompletedChapter).getCompletionDate();
- final String completedChapter = highestCompletedChapter;
+ final Chapters completedChapter = highestCompletedChapter;
mThreadPool.execute(() -> {
try {
mProgressReporter.reportChapterComplete(user, completedChapter, completionDate);
@@ -260,13 +260,6 @@ public class TrainingPageResource extends FreeMarkerPageResource {
}
/**
- * This method returns a list of chapters in the correct order.
- */
- protected String[] getChaptersInOrder() {
- return CHAPTERS;
- }
-
- /**
* @return The backend endpoint URI
*/
private String getBackendEndpoint() {