diff options
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... |