summaryrefslogtreecommitdiff
path: root/src/com/p4square/grow/backend/db
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/p4square/grow/backend/db')
-rw-r--r--src/com/p4square/grow/backend/db/CassandraKey.java28
-rw-r--r--src/com/p4square/grow/backend/db/CassandraProviderImpl.java42
2 files changed, 70 insertions, 0 deletions
diff --git a/src/com/p4square/grow/backend/db/CassandraKey.java b/src/com/p4square/grow/backend/db/CassandraKey.java
new file mode 100644
index 0000000..8e23087
--- /dev/null
+++ b/src/com/p4square/grow/backend/db/CassandraKey.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2013 Jesse Morgan
+ */
+
+package com.p4square.grow.backend.db;
+
+/**
+ * CassandraKey represents a Cassandra key / column pair.
+ *
+ * @author Jesse Morgan <jesse@jesterpm.net>
+ */
+public class CassandraKey {
+ private final String mId;
+ private final String mColumn;
+
+ public CassandraKey(String id, String column) {
+ mId = id;
+ mColumn = column;
+ }
+
+ public String getId() {
+ return mId;
+ }
+
+ public String getColumn() {
+ return mColumn;
+ }
+}
diff --git a/src/com/p4square/grow/backend/db/CassandraProviderImpl.java b/src/com/p4square/grow/backend/db/CassandraProviderImpl.java
new file mode 100644
index 0000000..fb6e34e
--- /dev/null
+++ b/src/com/p4square/grow/backend/db/CassandraProviderImpl.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2013 Jesse Morgan
+ */
+
+package com.p4square.grow.backend.db;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.SerializationConfig;
+
+import com.p4square.grow.provider.JsonEncodedProvider;
+
+/**
+ * Provider implementation backed by a Cassandra ColumnFamily.
+ *
+ * @author Jesse Morgan <jesse@jesterpm.net>
+ */
+public class CassandraProviderImpl<V> extends JsonEncodedProvider<CassandraKey, V> {
+ private final CassandraDatabase mDb;
+ private final String mColumnFamily;
+
+ public CassandraProviderImpl(CassandraDatabase db, String columnFamily, Class<V> clazz) {
+ super(clazz);
+
+ mDb = db;
+ mColumnFamily = columnFamily;
+ }
+
+ @Override
+ public V get(CassandraKey key) throws IOException {
+ String blob = mDb.getKey(mColumnFamily, key.getId(), key.getColumn());
+ return decode(blob);
+ }
+
+ @Override
+ public void put(CassandraKey key, V obj) throws IOException {
+ String blob = encode(obj);
+ mDb.putKey(mColumnFamily, key.getId(), key.getColumn(), blob);
+ }
+}