From cfb2c5ef6582e51ae9cfdfff35e12b5b7fdc24fb Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Mon, 24 Mar 2014 21:38:02 -0700 Subject: Enabling the Feed and various bug fixes. * Fixing thread ordering. * Adding a limit of 5 threads per topic. * Changing frontend /account references to UserRecord. --- .../p4square/grow/frontend/SurveyPageResource.java | 47 +++++++++++----------- 1 file changed, 23 insertions(+), 24 deletions(-) (limited to 'src/com/p4square/grow/frontend/SurveyPageResource.java') diff --git a/src/com/p4square/grow/frontend/SurveyPageResource.java b/src/com/p4square/grow/frontend/SurveyPageResource.java index f864014..1f9c56c 100644 --- a/src/com/p4square/grow/frontend/SurveyPageResource.java +++ b/src/com/p4square/grow/frontend/SurveyPageResource.java @@ -29,8 +29,11 @@ import com.p4square.fmfacade.FreeMarkerPageResource; import com.p4square.grow.config.Config; import com.p4square.grow.model.Question; -import com.p4square.grow.provider.QuestionProvider; +import com.p4square.grow.model.UserRecord; +import com.p4square.grow.provider.DelegateProvider; +import com.p4square.grow.provider.JsonEncodedProvider; import com.p4square.grow.provider.Provider; +import com.p4square.grow.provider.QuestionProvider; /** * SurveyPageResource handles rendering the survey and processing user's answers. @@ -49,6 +52,7 @@ public class SurveyPageResource extends FreeMarkerPageResource { private Template mSurveyTemplate; private JsonRequestClient mJsonClient; private Provider mQuestionProvider; + private Provider mUserRecordProvider; // Fields pertaining to this request. private String mQuestionId; @@ -74,6 +78,15 @@ public class SurveyPageResource extends FreeMarkerPageResource { } }; + mUserRecordProvider = new DelegateProvider( + new JsonRequestProvider(getContext().getClientDispatcher(), + UserRecord.class)) { + @Override + public String makeKey(String userid) { + return getBackendEndpoint() + "/accounts/" + userid; + } + }; + mQuestionId = getAttribute("questionId"); mUserId = getRequest().getClientInfo().getUser().getIdentifier(); } @@ -205,24 +218,6 @@ public class SurveyPageResource extends FreeMarkerPageResource { } } - private Map getAccount(String id) { - try { - Map account = null; - - JsonResponse response = backendGet("/accounts/" + id); - if (!response.getStatus().isSuccess()) { - return null; - } - account = response.getMap(); - - return account; - - } catch (ClientException e) { - LOG.warn("Error fetching account.", e); - return null; - } - } - private Question getQuestion(String id) { try { return mQuestionProvider.get(id); @@ -252,12 +247,16 @@ public class SurveyPageResource extends FreeMarkerPageResource { if (nextQuestionId == null) { // Just finished the last question. Update the user's account - Map account = getAccount(mUserId); - if (account == null) { - account = new HashMap(); + try { + UserRecord account = mUserRecordProvider.get(mUserId); + if (account == null) { + account = new UserRecord(); + } + account.setLanding("training"); + mUserRecordProvider.put(mUserId, account); + } catch (IOException e) { + LOG.warn("IOException updating landing for " + mUserId, e); } - account.put("landing", "training"); - backendPut("/accounts/" + mUserId, account); String nextPage = mConfig.getString("dynamicRoot", ""); nextPage += "/account/assessment/results"; -- cgit v1.2.3