diff options
author | Jesse Morgan <jesse@jesterpm.net> | 2013-11-09 15:24:56 -0800 |
---|---|---|
committer | Jesse Morgan <jesse@jesterpm.net> | 2013-11-09 15:24:56 -0800 |
commit | 0d90da39f77ac3cfa607a68bc59336bf0bdff240 (patch) | |
tree | 1a2133dea8035004052e1fddf9b4c022fb8e21e1 /src/com/p4square/grow/frontend/ChapterCompletePage.java | |
parent | ebbfb39ca9b63c170ca7b609dd07d234d89ab23a (diff) |
Refactored TrainingResource to use the Provider interface.
Playlists are now generated from a default playlist and regularly
merged with the default playlist to get updates.
Also adding the Question tests that got left out of a previous commit.
Diffstat (limited to 'src/com/p4square/grow/frontend/ChapterCompletePage.java')
-rw-r--r-- | src/com/p4square/grow/frontend/ChapterCompletePage.java | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/com/p4square/grow/frontend/ChapterCompletePage.java b/src/com/p4square/grow/frontend/ChapterCompletePage.java index 2f981ae..b0bfdd7 100644 --- a/src/com/p4square/grow/frontend/ChapterCompletePage.java +++ b/src/com/p4square/grow/frontend/ChapterCompletePage.java @@ -23,6 +23,9 @@ import com.p4square.fmfacade.json.JsonResponse; import com.p4square.fmfacade.json.ClientException; import com.p4square.grow.config.Config; +import com.p4square.grow.model.TrainingRecord; +import com.p4square.grow.provider.TrainingRecordProvider; +import com.p4square.grow.provider.Provider; /** * This resource displays the transitional page between chapters. @@ -35,6 +38,7 @@ public class ChapterCompletePage extends FreeMarkerPageResource { private GrowFrontend mGrowFrontend; private Config mConfig; private JsonRequestClient mJsonClient; + private Provider<String, TrainingRecord> mTrainingRecordProvider; private String mUserId; private String mChapter; @@ -47,6 +51,12 @@ public class ChapterCompletePage extends FreeMarkerPageResource { mConfig = mGrowFrontend.getConfig(); mJsonClient = new JsonRequestClient(getContext().getClientDispatcher()); + mTrainingRecordProvider = new TrainingRecordProvider<String>(new JsonRequestProvider<TrainingRecord>(getContext().getClientDispatcher(), TrainingRecord.class)) { + @Override + public String makeKey(String userid) { + return getBackendEndpoint() + "/accounts/" + userid + "/training"; + } + }; mUserId = getRequest().getClientInfo().getUser().getIdentifier(); @@ -69,17 +79,15 @@ public class ChapterCompletePage extends FreeMarkerPageResource { Map<String, Object> root = getRootObject(); // Get the training summary - Map<String, Object> trainingRecord = null; - Map<String, Boolean> chapters = null; - { - JsonResponse response = backendGet("/accounts/" + mUserId + "/training"); - if (response.getStatus().isSuccess()) { - trainingRecord = response.getMap(); - chapters = (Map<String, Boolean>) trainingRecord.get("chapters"); - } + TrainingRecord trainingRecord = mTrainingRecordProvider.get(mUserId); + if (trainingRecord == null) { + // Wait. What? Everyone has a training record... + setStatus(Status.SERVER_ERROR_INTERNAL); + return new ErrorPage("Could not retrieve your training record."); } // Verify they completed the chapter. + Map<String, Boolean> chapters = trainingRecord.getPlaylist().getChapterStatuses(); Boolean completed = chapters.get(mChapter); if (completed == null || !completed) { // Redirect back to training page... |