Author: [email protected]
Date: Wed Sep 14 13:58:52 2011
New Revision: 1361
Log:
[AMDATUCASSANDRA-83] Also added method <T> SuperRow<String, String, String, T>
getSuperRow(String columnFamily, String rowKey, String superColumn, Class<T>
clazz);
Modified:
trunk/amdatu-cassandra/cassandra-persistencemanager/src/main/java/org/amdatu/cassandra/persistencemanager/CassandraPersistenceManager.java
trunk/amdatu-cassandra/cassandra-persistencemanager/src/main/java/org/amdatu/cassandra/persistencemanager/service/HectorCassandraPersistenceManagerImpl.java
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/CassandraPersistenceManagerTest.java
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/CassandraPersistenceManagerMock.java
Modified:
trunk/amdatu-cassandra/cassandra-persistencemanager/src/main/java/org/amdatu/cassandra/persistencemanager/CassandraPersistenceManager.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-persistencemanager/src/main/java/org/amdatu/cassandra/persistencemanager/CassandraPersistenceManager.java
(original)
+++
trunk/amdatu-cassandra/cassandra-persistencemanager/src/main/java/org/amdatu/cassandra/persistencemanager/CassandraPersistenceManager.java
Wed Sep 14 13:58:52 2011
@@ -202,6 +202,29 @@
<T> T getValue(String columnFamily, String rowKey, String superColumn,
String column, Class<T> expectedClazz);
/**
+ * Returns the super row with the specified row key in the specified
Column Family (which must be of type "Super")
+ * which contains only the Super Columns matching the specified name. This
method assumes that the values
+ * stored in all Columns are of type T. If the specified ColumnFamily does
not exist, an unchecked exception
+ * will be thrown.
+ *
+ * @param <T>
+ * The expected return type of the value contained by the specified
column
+ * @param rowKey
+ *
+ * @param columnFamily
+ * The name of the ColumnFamily to retrieve all super rows for.
+ * @param superColumn
+ * The name of the superColumns to retrieve
+ * @param clazz
+ * The generic type T of all values being retrieved (i.e.
String.class).
+ * @return Super row with the specified row key in the specified
ColumnFamily but containing only the SuperColumns
+ * matching the specified superColumn name and assuming all values
are of type T.
+ * Returns null if there is no row with the specified row key.
+ */
+ <T> SuperRow<String, String, String, T> getSuperRow(String columnFamily,
String rowKey, String superColumn,
+ Class<T> clazz);
+
+ /**
* Returns an iterator over all super rows in the specified Column Family
(which must be of type "Super")
* which contains all Super Columns and Columns. This method assumes that
the values stored in all Columns are of
* type T. If the specified ColumnFamily does not exist, an unchecked
exception will be thrown.
Modified:
trunk/amdatu-cassandra/cassandra-persistencemanager/src/main/java/org/amdatu/cassandra/persistencemanager/service/HectorCassandraPersistenceManagerImpl.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-persistencemanager/src/main/java/org/amdatu/cassandra/persistencemanager/service/HectorCassandraPersistenceManagerImpl.java
(original)
+++
trunk/amdatu-cassandra/cassandra-persistencemanager/src/main/java/org/amdatu/cassandra/persistencemanager/service/HectorCassandraPersistenceManagerImpl.java
Wed Sep 14 13:58:52 2011
@@ -167,7 +167,7 @@
List<String> rowKeys = new ArrayList<String>();
if (isSuperColumnFamily(columnFamilyName)) {
Iterator<SuperRow<String, String, String, ByteBuffer>> iter =
- getSuperRows(columnFamilyName, ByteBuffer.class, 1, column,
superColumn);
+ getSuperRows(columnFamilyName, null, ByteBuffer.class, 1,
column, superColumn);
while (iter.hasNext()) {
SuperRow<String, String, String, ByteBuffer> row = iter.next();
int scSize = row.getSuperSlice().getSuperColumns().size();
@@ -303,15 +303,25 @@
return null;
}
}
-
+
+ public <T> SuperRow<String, String, String, T> getSuperRow(String
columnFamilyName, String rowKey,
+ String superColumn, Class<T> clazz) {
+ Iterator<SuperRow<String, String, String, T>> superRows =
getSuperRows(columnFamilyName, rowKey, clazz, COLUMN_LIMIT, null, superColumn);
+ if (superRows.hasNext()) {
+ return superRows.next();
+ } else {
+ return null;
+ }
+ }
+
public <T> Iterator<SuperRow<String, String, String, T>>
getSuperRows(final String columnFamilyName,
final Class<T> clazz) {
- return getSuperRows(columnFamilyName, clazz, COLUMN_LIMIT, null, null);
+ return getSuperRows(columnFamilyName, null, clazz, COLUMN_LIMIT, null,
null);
}
public <T> Iterator<SuperRow<String, String, String, T>>
getSuperRows(String columnFamilyName, String superColumn,
Class<T> clazz) {
- return getSuperRows(columnFamilyName, clazz, COLUMN_LIMIT, null,
superColumn);
+ return getSuperRows(columnFamilyName, null, clazz, COLUMN_LIMIT, null,
superColumn);
}
public <T> Iterator<Row<String, String, T>> getRows(final String
columnFamilyName, final Class<T> clazz) {
@@ -394,7 +404,7 @@
}
private <T> Iterator<SuperRow<String, String, String, T>>
getSuperRows(final String columnFamilyName,
- final Class<T> clazz, final int colLimit, final String column, final
String superColumn) {
+ final String rowKey, final Class<T> clazz, final int colLimit, final
String column, final String superColumn) {
StringSerializer serializer = StringSerializer.get();
Serializer<T> valueSerializer = getSerializer(clazz);
RangeSuperSlicesQuery<String, String, String, T> rangeSlicesQuery =
@@ -403,6 +413,9 @@
.setKeys(null, null)
.setRange(superColumn, superColumn, false, colLimit)
.setRowCount(ROW_LIMIT);
+ if (rowKey != null) {
+ rangeSlicesQuery.setKeys(rowKey, rowKey);
+ }
if (superColumn != null && column != null) {
rangeSlicesQuery.setColumnNames(superColumn, column);
}
Modified:
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/CassandraPersistenceManagerTest.java
==============================================================================
---
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/CassandraPersistenceManagerTest.java
(original)
+++
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/CassandraPersistenceManagerTest.java
Wed Sep 14 13:58:52 2011
@@ -123,6 +123,11 @@
Assert.assertTrue(count == 1);
count++;
}
+
+ // Verify getSuperRow
+ SuperRow<String, String, String, String> superRow =
m_pm.getSuperRow(COLUMNFAMILY, rowKey, "SuperColumn_" + (colSize-1),
String.class);
+ Assert.assertTrue(superRow != null);
+ Assert.assertTrue(superRow.getSuperSlice().getSuperColumns().size() ==
1);
}
/**
Modified:
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/CassandraPersistenceManagerMock.java
==============================================================================
---
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/CassandraPersistenceManagerMock.java
(original)
+++
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/CassandraPersistenceManagerMock.java
Wed Sep 14 13:58:52 2011
@@ -188,6 +188,12 @@
Class<T> clazz) {
throw new IllegalArgumentException("This method is not (yet)
implemented by this mock object");
}
+
+ @Override
+ public <T> SuperRow<String, String, String, T> getSuperRow(String
columnFamily, String rowKey,
+ String superColumn, Class<T> clazz) {
+ throw new IllegalArgumentException("This method is not (yet)
implemented by this mock object");
+ }
@Override
public <T> Iterator<me.prettyprint.hector.api.beans.Row<String, String,
T>> getRows(String columnFamily,
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits