summaryrefslogtreecommitdiff
path: root/src/com/p4square/grow/backend/db/CassandraDatabase.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/p4square/grow/backend/db/CassandraDatabase.java')
-rw-r--r--src/com/p4square/grow/backend/db/CassandraDatabase.java212
1 files changed, 0 insertions, 212 deletions
diff --git a/src/com/p4square/grow/backend/db/CassandraDatabase.java b/src/com/p4square/grow/backend/db/CassandraDatabase.java
deleted file mode 100644
index b8cb6df..0000000
--- a/src/com/p4square/grow/backend/db/CassandraDatabase.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright 2013 Jesse Morgan
- */
-
-package com.p4square.grow.backend.db;
-
-import com.netflix.astyanax.AstyanaxContext;
-import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
-import com.netflix.astyanax.connectionpool.impl.ConnectionPoolConfigurationImpl;
-import com.netflix.astyanax.connectionpool.impl.CountingConnectionPoolMonitor;
-import com.netflix.astyanax.connectionpool.NodeDiscoveryType;
-import com.netflix.astyanax.connectionpool.OperationResult;
-import com.netflix.astyanax.impl.AstyanaxConfigurationImpl;
-import com.netflix.astyanax.Keyspace;
-import com.netflix.astyanax.ColumnMutation;
-import com.netflix.astyanax.model.Column;
-import com.netflix.astyanax.model.ColumnFamily;
-import com.netflix.astyanax.model.ColumnList;
-import com.netflix.astyanax.ColumnListMutation;
-import com.netflix.astyanax.MutationBatch;
-import com.netflix.astyanax.serializers.StringSerializer;
-import com.netflix.astyanax.thrift.ThriftFamilyFactory;
-
-import org.apache.log4j.Logger;
-
-/**
- * Cassandra Database Abstraction for the Backend.
- *
- * @author Jesse Morgan <jesse@jesterpm.net>
- */
-public class CassandraDatabase {
- private static Logger cLog = Logger.getLogger(CassandraDatabase.class);
-
- // Configuration fields.
- private String mClusterName;
- private String mKeyspaceName;
- private String mSeedEndpoint = "127.0.0.1:9160";
- private int mPort = 9160;
-
- private AstyanaxContext<Keyspace> mContext;
- private Keyspace mKeyspace;
-
- /**
- * Connect to Cassandra.
- *
- * Cluster and Keyspace must be set before calling init().
- */
- public void init() {
- mContext = new AstyanaxContext.Builder()
- .forCluster(mClusterName)
- .forKeyspace(mKeyspaceName)
- .withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
- .setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
- )
- .withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
- .setPort(mPort)
- .setMaxConnsPerHost(1)
- .setSeeds(mSeedEndpoint)
- )
- .withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
- .buildKeyspace(ThriftFamilyFactory.getInstance());
-
- mContext.start();
- mKeyspace = mContext.getClient();
- }
-
- /**
- * Close the database connection.
- */
- public void close() {
- mContext.shutdown();
- }
-
- /**
- * Set the cluster name to connect to.
- */
- public void setClusterName(final String cluster) {
- mClusterName = cluster;
- }
-
- /**
- * Set the name of the keyspace to open.
- */
- public void setKeyspaceName(final String keyspace) {
- mKeyspaceName = keyspace;
- }
-
- /**
- * Change the seed endpoint.
- * The default is 127.0.0.1:9160.
- */
- public void setSeedEndpoint(final String endpoint) {
- mSeedEndpoint = endpoint;
- }
-
- /**
- * Change the port to connect to.
- * The default is 9160.
- */
- public void setPort(final int port) {
- mPort = port;
- }
-
- /**
- * @return The entire row associated with this key.
- */
- public ColumnList<String> getRow(final String cfName, final String key) {
- try {
- ColumnFamily<String, String> cf = new ColumnFamily(cfName,
- StringSerializer.get(),
- StringSerializer.get());
-
- OperationResult<ColumnList<String>> result =
- mKeyspace.prepareQuery(cf)
- .getKey(key)
- .execute();
-
- return result.getResult();
-
- } catch (ConnectionException e) {
- cLog.error("getRow failed due to Connection Exception", e);
- throw new RuntimeException(e);
- }
- }
-
- /**
- * @return The value associated with the given key.
- */
- public String getKey(final String cfName, final String key) {
- return getKey(cfName, key, "value");
- }
-
- /**
- * @return The value associated with the given key, column pair.
- */
- public String getKey(final String cfName, final String key, final String column) {
- final ColumnList<String> row = getRow(cfName, key);
-
- if (row != null) {
- final Column rowColumn = row.getColumnByName(column);
- if (rowColumn != null) {
- return rowColumn.getStringValue();
- }
- }
-
- return null;
- }
-
- /**
- * Assign value to key.
- */
- public void putKey(final String cfName, final String key, final String value) {
- putKey(cfName, key, "value", value);
- }
-
- /**
- * Assign value to the key, column pair.
- */
- public void putKey(final String cfName, final String key,
- final String column, final String value) {
-
- ColumnFamily<String, String> cf = new ColumnFamily(cfName,
- StringSerializer.get(),
- StringSerializer.get());
-
- MutationBatch m = mKeyspace.prepareMutationBatch();
- m.withRow(cf, key).putColumn(column, value);
-
- try {
- m.execute();
- } catch (ConnectionException e) {
- cLog.error("putKey failed due to Connection Exception", e);
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Remove a key, column pair.
- */
- public void deleteKey(final String cfName, final String key, final String column) {
- ColumnFamily<String, String> cf = new ColumnFamily(cfName,
- StringSerializer.get(),
- StringSerializer.get());
-
- try {
- ColumnMutation m = mKeyspace.prepareColumnMutation(cf, key, column);
- m.deleteColumn().execute();
- } catch (ConnectionException e) {
- cLog.error("deleteKey failed due to Connection Exception", e);
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Remove a row
- */
- public void deleteRow(final String cfName, final String key) {
- ColumnFamily<String, String> cf = new ColumnFamily(cfName,
- StringSerializer.get(),
- StringSerializer.get());
-
- try {
- MutationBatch batch = mKeyspace.prepareMutationBatch();
- ColumnListMutation<String> cfm = batch.withRow(cf, key).delete();
- batch.execute();
-
- } catch (ConnectionException e) {
- cLog.error("deleteRow failed due to Connection Exception", e);
- throw new RuntimeException(e);
- }
- }
-}