summaryrefslogtreecommitdiff
path: root/src/com/p4square/grow/provider
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/p4square/grow/provider')
-rw-r--r--src/com/p4square/grow/provider/DelegateProvider.java40
-rw-r--r--src/com/p4square/grow/provider/ProvidesUserRecords.java19
-rw-r--r--src/com/p4square/grow/provider/QuestionProvider.java41
3 files changed, 59 insertions, 41 deletions
diff --git a/src/com/p4square/grow/provider/DelegateProvider.java b/src/com/p4square/grow/provider/DelegateProvider.java
new file mode 100644
index 0000000..66c5666
--- /dev/null
+++ b/src/com/p4square/grow/provider/DelegateProvider.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2014 Jesse Morgan
+ */
+
+package com.p4square.grow.provider;
+
+import java.io.IOException;
+
+/**
+ * DelegateProvider wraps an existing Provider an transforms the key from
+ * type K to type D.
+ *
+ * @author Jesse Morgan <jesse@jesterpm.net>
+ */
+public abstract class DelegateProvider<K, D, V> implements Provider<K, V> {
+
+ private Provider<D, V> mProvider;
+
+ public DelegateProvider(final Provider<D, V> provider) {
+ mProvider = provider;
+ }
+
+ @Override
+ public V get(final K key) throws IOException {
+ return mProvider.get(makeKey(key));
+ }
+
+ @Override
+ public void put(final K key, final V obj) throws IOException {
+ mProvider.put(makeKey(key), obj);
+ }
+
+ /**
+ * Make a Key for questionId.
+ *
+ * @param questionId The question id.
+ * @return a key for questionId.
+ */
+ protected abstract D makeKey(final K input);
+}
diff --git a/src/com/p4square/grow/provider/ProvidesUserRecords.java b/src/com/p4square/grow/provider/ProvidesUserRecords.java
new file mode 100644
index 0000000..d77c878
--- /dev/null
+++ b/src/com/p4square/grow/provider/ProvidesUserRecords.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2014 Jesse Morgan
+ */
+
+package com.p4square.grow.provider;
+
+import com.p4square.grow.model.UserRecord;
+
+/**
+ * Indicates the ability to provide a UserRecord Provider.
+ *
+ * @author Jesse Morgan <jesse@jesterpm.net>
+ */
+public interface ProvidesUserRecords {
+ /**
+ * @return A Provider of Questions keyed by question id.
+ */
+ Provider<String, UserRecord> getUserRecordProvider();
+}
diff --git a/src/com/p4square/grow/provider/QuestionProvider.java b/src/com/p4square/grow/provider/QuestionProvider.java
deleted file mode 100644
index b569dc8..0000000
--- a/src/com/p4square/grow/provider/QuestionProvider.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2013 Jesse Morgan
- */
-
-package com.p4square.grow.provider;
-
-import java.io.IOException;
-
-import com.p4square.grow.model.Question;
-
-/**
- * QuestionProvider wraps an existing Provider to get and put Questions.
- *
- * @author Jesse Morgan <jesse@jesterpm.net>
- */
-public abstract class QuestionProvider<K> implements Provider<String, Question> {
-
- private Provider<K, Question> mProvider;
-
- public QuestionProvider(Provider<K, Question> provider) {
- mProvider = provider;
- }
-
- @Override
- public Question get(String key) throws IOException {
- return mProvider.get(makeKey(key));
- }
-
- @Override
- public void put(String key, Question obj) throws IOException {
- mProvider.put(makeKey(key), obj);
- }
-
- /**
- * Make a Key for questionId.
- *
- * @param questionId The question id.
- * @return a key for questionId.
- */
- protected abstract K makeKey(String questionId);
-}