summaryrefslogtreecommitdiff
path: root/src/com/p4square/grow/backend/resources/SurveyResource.java
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2014-05-23 13:05:19 -0700
committerJesse Morgan <jesse@jesterpm.net>2014-05-23 13:05:19 -0700
commitef862e30975db691339fd143d2c4d60eb5132a3e (patch)
tree2388b461e98a6c6443294a172ddb9ab789de8a26 /src/com/p4square/grow/backend/resources/SurveyResource.java
parent728c8cfae2312e68fefd49241436517afb4c6134 (diff)
Abstracting out Cassandra.
Diffstat (limited to 'src/com/p4square/grow/backend/resources/SurveyResource.java')
-rw-r--r--src/com/p4square/grow/backend/resources/SurveyResource.java31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/com/p4square/grow/backend/resources/SurveyResource.java b/src/com/p4square/grow/backend/resources/SurveyResource.java
index 497978f..8723ee2 100644
--- a/src/com/p4square/grow/backend/resources/SurveyResource.java
+++ b/src/com/p4square/grow/backend/resources/SurveyResource.java
@@ -13,14 +13,17 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import org.restlet.data.MediaType;
import org.restlet.data.Status;
-import org.restlet.resource.ServerResource;
+import org.restlet.ext.jackson.JacksonRepresentation;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
+import org.restlet.resource.ServerResource;
import org.apache.log4j.Logger;
import com.p4square.grow.backend.GrowBackend;
-import com.p4square.grow.backend.db.CassandraDatabase;
+import com.p4square.grow.model.Question;
+import com.p4square.grow.provider.JsonEncodedProvider;
+import com.p4square.grow.provider.Provider;
/**
* This resource manages assessment questions.
@@ -30,9 +33,10 @@ import com.p4square.grow.backend.db.CassandraDatabase;
public class SurveyResource extends ServerResource {
private static final Logger LOG = Logger.getLogger(SurveyResource.class);
- private static final ObjectMapper MAPPER = new ObjectMapper();
+ private static final ObjectMapper MAPPER = JsonEncodedProvider.MAPPER;
- private CassandraDatabase mDb;
+ private Provider<String, Question> mQuestionProvider;
+ private Provider<String, String> mStringProvider;
private String mQuestionId;
@@ -41,7 +45,8 @@ public class SurveyResource extends ServerResource {
super.doInit();
final GrowBackend backend = (GrowBackend) getApplication();
- mDb = backend.getDatabase();
+ mQuestionProvider = backend.getQuestionProvider();
+ mStringProvider = backend.getStringProvider();
mQuestionId = getAttribute("questionId");
}
@@ -71,13 +76,22 @@ public class SurveyResource extends ServerResource {
if (mQuestionId != null) {
// Get a question by id
- result = mDb.getKey("strings", "/questions/" + mQuestionId);
+ Question question = null;
+ try {
+ question = mQuestionProvider.get(mQuestionId);
+ } catch (IOException e) {
+ LOG.error("IOException loading question: " + e);
+ }
- if (result == null) {
+ if (question == null) {
// 404
setStatus(Status.CLIENT_ERROR_NOT_FOUND);
return null;
}
+
+ JacksonRepresentation<Question> rep = new JacksonRepresentation<>(question);
+ rep.setObjectMapper(MAPPER);
+ return rep;
}
return new StringRepresentation(result);
@@ -85,7 +99,8 @@ public class SurveyResource extends ServerResource {
private Map<?, ?> getQuestionsSummary() {
try {
- String json = mDb.getKey("strings", "/questions");
+ // TODO: This could be better. Quick fix for provider support.
+ String json = mStringProvider.get("/questions");
if (json != null) {
return MAPPER.readValue(json, Map.class);