Author: [email protected]
Date: Fri Sep 16 14:27:54 2011
New Revision: 1385

Log:
[AMDATUCASSANDRA-82] Implemented getSuperRow on the CPM mock.

Added:
   
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/RowImpl.java
   
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/SuperRowImpl.java
Removed:
   
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/Row.java
Modified:
   
trunk/amdatu-cassandra/cassandra-gadgetstore/src/test/java/org/amdatu/cassandra/test/unit/CassandraGadgetStoreTest.java
   
trunk/amdatu-cassandra/cassandra-store-consumer/src/test/java/org/amdatu/cassandra/test/unit/CassandraConsumerStoreTest.java
   
trunk/amdatu-cassandra/cassandra-store-token/src/test/java/org/amdatu/cassandra/test/unit/CassandraTokenStoreTest.java
   
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/ColumnFamily.java
   
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/HectorUtil.java

Modified: 
trunk/amdatu-cassandra/cassandra-gadgetstore/src/test/java/org/amdatu/cassandra/test/unit/CassandraGadgetStoreTest.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-gadgetstore/src/test/java/org/amdatu/cassandra/test/unit/CassandraGadgetStoreTest.java
     (original)
+++ 
trunk/amdatu-cassandra/cassandra-gadgetstore/src/test/java/org/amdatu/cassandra/test/unit/CassandraGadgetStoreTest.java
     Fri Sep 16 14:27:54 2011
@@ -31,7 +31,7 @@
     public void test() {
         // Create the mock objects
         LogServiceMock logService = new LogServiceMock();
-        CassandraPersistenceManagerMock<String, Object> pm = new 
CassandraPersistenceManagerMock<String, Object>("Default");
+        CassandraPersistenceManagerMock<String, String, Object> pm = new 
CassandraPersistenceManagerMock<String, String, Object>("Default");
         ColumnFamilyDefinition[] colDefs = new 
GadgetColumnFamilyProvider().getColumnFamilies();
         pm.addColumnFamily(colDefs);
 
@@ -51,6 +51,7 @@
         GadgetDefinition gadget2 = new GadgetDefinition("http://gadget2";, 
cat1, false);
         gadgetStore.addGadget(gadget1);
         gadgetStore.addGadget(gadget2);
+                
         Assert.assertEquals("http://gadget1";, 
gadgetStore.getGadget("http://gadget1";).getUrl());
         Assert.assertEquals("http://gadget2";, 
gadgetStore.getGadget("http://gadget2";).getUrl());
         Assert.assertEquals(2, gadgetStore.getGadgets().length);

Modified: 
trunk/amdatu-cassandra/cassandra-store-consumer/src/test/java/org/amdatu/cassandra/test/unit/CassandraConsumerStoreTest.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-store-consumer/src/test/java/org/amdatu/cassandra/test/unit/CassandraConsumerStoreTest.java
        (original)
+++ 
trunk/amdatu-cassandra/cassandra-store-consumer/src/test/java/org/amdatu/cassandra/test/unit/CassandraConsumerStoreTest.java
        Fri Sep 16 14:27:54 2011
@@ -34,7 +34,7 @@
     ConsumerNotFoundException {
         // Create the mock objects
         LogServiceMock logService = new LogServiceMock();
-        CassandraPersistenceManagerMock pm = new 
CassandraPersistenceManagerMock("Default");
+        CassandraPersistenceManagerMock<String, String, Object> pm = new 
CassandraPersistenceManagerMock<String, String, Object>("Default");
         ColumnFamilyDefinition[] colDefs = new 
ConsumerColumnFamilyProvider().getColumnFamilies();
         pm.addColumnFamily(colDefs);
 
@@ -64,7 +64,7 @@
 
         // Retrieve the consumer we just created
         Assert.assertTrue(consumer.equals(consumerStore.getConsumer("ckey")));
-
+        
         // Now try to add some properties
         consumer.getProperties().put("key1", "value1");
         consumer.getProperties().put("key2", "value2");

Modified: 
trunk/amdatu-cassandra/cassandra-store-token/src/test/java/org/amdatu/cassandra/test/unit/CassandraTokenStoreTest.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-store-token/src/test/java/org/amdatu/cassandra/test/unit/CassandraTokenStoreTest.java
      (original)
+++ 
trunk/amdatu-cassandra/cassandra-store-token/src/test/java/org/amdatu/cassandra/test/unit/CassandraTokenStoreTest.java
      Fri Sep 16 14:27:54 2011
@@ -30,7 +30,7 @@
     public void test() throws Exception {
      // Create the mock objects
         LogServiceMock logService = new LogServiceMock();
-        CassandraPersistenceManagerMock pm = new 
CassandraPersistenceManagerMock("Default");
+        CassandraPersistenceManagerMock<String, String, Object> pm = new 
CassandraPersistenceManagerMock<String, String, Object>("Default");
         ColumnFamilyDefinition[] colDefs = new 
TokenColumnFamilyProvider().getColumnFamilies();
         pm.addColumnFamily(colDefs);
 

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
   Fri Sep 16 14:27:54 2011
@@ -22,6 +22,7 @@
 import me.prettyprint.cassandra.model.HColumnImpl;
 import me.prettyprint.hector.api.beans.HColumn;
 import me.prettyprint.hector.api.beans.HSuperColumn;
+import me.prettyprint.hector.api.beans.Row;
 import me.prettyprint.hector.api.beans.SuperRow;
 import me.prettyprint.hector.api.exceptions.HInvalidRequestException;
 
@@ -85,16 +86,17 @@
     }
 
     public boolean exists(String columnFamilyName, String rowKey) {
+        if (!exists(columnFamilyName)) {
+            return false;
+        }
         if (columnFamilyName == null || rowKey == null) {
             throw new IllegalArgumentException("ColumnFamily or row key may 
not be null");
         }
         ColumnFamily<SN, N, V> cf = 
m_keyspace.getColumnFamily(columnFamilyName);
-        if (cf != null) {
-            List<Row<SN, N, V>> rows = cf.getRows();
-            for (Row<SN, N, V> row : rows) {
-                if (row.getKey().equals(rowKey)) {
-                    return true;
-                }
+        List<String> rowKeys = cf.getRowKeys();
+        for (String cRowKey : rowKeys) {
+            if (cRowKey.equals(rowKey)) {
+                return true;
             }
         }
         return false;
@@ -130,12 +132,8 @@
         if (!exists(columnFamilyName)) {
             throw new HInvalidRequestException("ColumnFamily '" + 
columnFamilyName + "' does not exist");
         }
-        List<Row<SN, N, V>> rows = 
m_keyspace.getColumnFamily(columnFamilyName).getRows();
-        List<String> rowKeys = new ArrayList<String>();
-        for (Row<SN, N, V> row : rows) {
-            rowKeys.add(row.getKey());
-        }
-        return rowKeys;
+        ColumnFamily<SN, N, V> cf = 
m_keyspace.getColumnFamily(columnFamilyName);
+        return cf.getRowKeys();
     }
 
     public List<String> getRowKeys(String columnFamilyName, String column, 
String superColumn) {
@@ -143,7 +141,13 @@
     }
 
     public List<String> getColumnNames(String columnFamilyName, String rowKey) 
{
-        throw new IllegalArgumentException("This method is not yet implemented 
by this mock object");
+        ColumnFamily<SN, N, V> cf = getExpectedColumnFamily(columnFamilyName, 
ColumnType.STANDARD);
+        List<HColumn<N, V>> columns = cf.getColumns(rowKey);
+        List<String> columnNames = new ArrayList<String>();
+        for (HColumn<N, V> column : columns) {
+            columnNames.add(column.getName().toString());
+        }
+        return columnNames;
     }
 
     @SuppressWarnings("unchecked")
@@ -152,37 +156,41 @@
             throw new HInvalidRequestException("ColumnFamily '" + columnFamily 
+ "' does not exist");
         }
         ColumnFamily<SN, N, V> cf = m_keyspace.getColumnFamily(columnFamily);
-        if (cf != null) {
-            Row<SN, N, V> row = cf.getRow(rowKey);
+        if (superColumn != null) {
+            // Super Column case
+            SuperRowImpl<SN, N, V> superRow = cf.getSuperRow(rowKey);
+            if (superRow == null) {
+                superRow = new SuperRowImpl<SN, N, V>(rowKey);
+                cf.addSuperRow(superRow);
+            }
+            HSuperColumn<SN, N, V> hSuperColumn = 
superRow.getSuperColumn(superColumn);
+            if (hSuperColumn == null) {
+                hSuperColumn = HectorUtil.createSuperColumn(superColumn, 
column, value);
+                superRow.addSuperColumn(hSuperColumn);
+
+            }
+            HColumn<N, V> hColumn = HectorUtil.getColumn(hSuperColumn, column);
+            if (hColumn == null) {
+                HectorUtil.addColumn(hSuperColumn, column, value);
+            }
+            else {
+                hColumn.setValue((V) value);
+            }
+        }
+        else {
+            // Column case
+            RowImpl<SN, N, V> row = cf.getRow(rowKey);
             if (row == null) {
-                row = new Row<SN, N, V>(cf, rowKey);
+                row = new RowImpl<SN, N, V>(rowKey);
                 cf.addRow(row);
             }
-            if (superColumn != null) {
-                // Super Column case
-                HSuperColumn<SN, N, V> hSuperColumn = 
row.getSuperColumn(superColumn);
-                if (hSuperColumn == null) {
-                    hSuperColumn = HectorUtil.createHSuperColumn(superColumn, 
column, value);
-                    row.addSuperColumn(hSuperColumn);
-                }
-                HColumn<N, V> hColumn = HectorUtil.getHColumn(hSuperColumn, 
column);
-                if (hColumn == null) {
-                    HectorUtil.addHColumn(hSuperColumn, column, value);
-                }
-                else {
-                    hColumn.setValue((V) value);
-                }
+            HColumn<N, V> col = row.getColumn(column);
+            if (col == null) {
+                col = new HColumnImpl<N, V>((N) column, (V) value, 
System.currentTimeMillis());
+                row.addColumn(col);
             }
             else {
-                // Column case
-                HColumn<N, V> col = row.getColumn(column);
-                if (col == null) {
-                    col = new HColumnImpl<N, V>((N) column, (V) value, 
System.currentTimeMillis());
-                    row.addColumn(col);
-                }
-                else {
-                    col.setValue((V) value);
-                }
+                col.setValue((V) value);
             }
         }
     }
@@ -223,36 +231,51 @@
         return null;
     }
 
-    @Override
     public <T> Iterator<SuperRow<String, String, String, T>> 
getSuperRows(String columnFamily, Class<T> clazz) {
-        throw new IllegalArgumentException("This method is not (yet) 
implemented by this mock object");
+        ColumnFamily<SN, N, V> cf = getExpectedColumnFamily(columnFamily, 
ColumnType.SUPER);
+        List<SuperRowImpl<SN, N, V>> superRows = cf.getSuperRows();
+        return HectorUtil.getSuperRowIterator(superRows);
     }
 
     @Override
     public <T> Iterator<SuperRow<String, String, String, T>> 
getSuperRows(String columnFamily, String superColumn,
         Class<T> clazz) {
+        // TODO: implement
         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, Class<T> clazz) {
-        throw new IllegalArgumentException("This method is not (yet) 
implemented by this mock object");
+        ColumnFamily<SN, N, V> cf = getExpectedColumnFamily(columnFamily, 
ColumnType.SUPER);
+        List<SuperRowImpl<SN, N, V>> superRows = cf.getSuperRows();
+        for (SuperRowImpl<SN, N, V> superRow : superRows) {
+            if (superRow.getKey().equals(rowKey)) {
+                return HectorUtil.convertSuperRow(superRow);
+            }
+        }
+        return null;
     }
 
     @Override
     public <T> SuperRow<String, String, String, T> getSuperRow(String 
columnFamily, String rowKey,
         String superColumn, Class<T> clazz) {
+        // TODO: implement
         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,
+    public <T> Iterator<Row<String, String, T>> getRows(String columnFamily,
         Class<T> clazz) {
-        throw new IllegalArgumentException("This method is not yet implemented 
by this mock object");
+        ColumnFamily<SN, N, V> cf = m_keyspace.getColumnFamily(columnFamily);
+        if (cf == null) {
+            throw new IllegalArgumentException("The ColumnFamily '" + 
columnFamily + "' does not exist");
+        }
+        List<RowImpl<SN, N, V>> rows = cf.getRows();
+        return HectorUtil.getRowIterator(rows);
     }
 
     @Override
     public <T> List<HSuperColumn<String, String, T>> getSuperColumns(String 
columnFamily, String rowKey, Class<T> clazz) {
+        // TODO: implement
         throw new IllegalArgumentException("This method is not yet implemented 
by this mock object");
     }
 
@@ -261,6 +284,10 @@
         if (!exists(columnFamily)) {
             throw new IllegalArgumentException("Specified ColumnFamily '" + 
columnFamily + "' does not exist");
         }
+        ColumnFamily<SN, N, V> cf = m_keyspace.getColumnFamily(columnFamily);
+        if (cf.getType() == ColumnType.SUPER) {
+            throw new IllegalArgumentException("Specified ColumnFamily '" + 
columnFamily + "' is of type super");
+        }
         List<HColumn<N, V>> columns = 
m_keyspace.getColumnFamily(columnFamily).getColumns(rowKey);
         if (columns != null) {
             List<HColumn<String, T>> hColumns = new ArrayList<HColumn<String, 
T>>();
@@ -274,20 +301,40 @@
         return null;
     }
 
-    @Override
     public void deleteRow(String columnFamily, String rowKey) {
-        m_keyspace.getColumnFamily(columnFamily).removeRow(rowKey);
+        if (!exists(columnFamily)) {
+            throw new HInvalidRequestException("ColumnFamily '" + columnFamily 
+ "' does not exist");
+        }
+        ColumnFamily<SN, N, V> cf = m_keyspace.getColumnFamily(columnFamily);
+        if (cf.getType() == ColumnType.STANDARD) {
+            cf.removeRow(rowKey);
+        }
+        else {
+            cf.removeSuperRow(rowKey);
+        }
     }
 
     @Override
     public void deleteSuperColumn(String columnFamily, String rowKey, String 
superColumn) {
+        // TODO: implement
         throw new IllegalArgumentException("This method is not yet implemented 
by this mock object");
     }
 
     @Override
     public void deleteColumn(String columnFamily, String rowKey, String 
superColumn, String column) {
+        // TODO: implement
         throw new IllegalArgumentException("This method is not yet implemented 
by this mock object");
     }
-    
-  
+
+    private ColumnFamily<SN, N, V> getExpectedColumnFamily(String 
columnFamily, ColumnType type) {
+        if (!exists(columnFamily)) {
+            throw new HInvalidRequestException("ColumnFamily '" + columnFamily 
+ "' does not exist");
+        }
+        ColumnFamily<SN, N, V> cf = m_keyspace.getColumnFamily(columnFamily);
+        if (!cf.getType().equals(type)) {
+            throw new IllegalArgumentException("The ColumnFamily '" + 
columnFamily + "' is of unexpected type "
+                + cf.getType());
+        }
+        return cf;
+    }
 }

Modified: 
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/ColumnFamily.java
==============================================================================
--- 
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/ColumnFamily.java
      (original)
+++ 
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/ColumnFamily.java
      Fri Sep 16 14:27:54 2011
@@ -38,7 +38,8 @@
     private ColumnFamilyDefinition.ColumnType m_type;
 
     // Rows contained by the column family
-    private List<Row<SN, N, V>> m_rows = new ArrayList<Row<SN, N, V>>();
+    private List<RowImpl<SN, N, V>> m_rows = new ArrayList<RowImpl<SN, N, 
V>>();
+    private List<SuperRowImpl<SN, N, V>> m_superRows = new 
ArrayList<SuperRowImpl<SN, N, V>>();
 
     public ColumnFamily(String name, ColumnFamilyDefinition.ColumnType type) {
         m_name = name;
@@ -52,17 +53,70 @@
     public ColumnFamilyDefinition.ColumnType getType() {
         return m_type;
     }
+    
+    public List<String> getRowKeys() {
+        List<String> rowKeys = new ArrayList<String>();
+        if (m_type == ColumnType.STANDARD) {
+            List<RowImpl<SN, N, V>> rows = getRows();
+            for (RowImpl<SN, N, V> row : rows) {
+                rowKeys.add(row.getKey());
+            }
+        }
+        else {
+            List<SuperRowImpl<SN, N, V>> superRows = getSuperRows();
+            for (SuperRowImpl<SN, N, V> row : superRows) {
+                rowKeys.add(row.getKey());
+            }
+        }
+        return rowKeys;
+    }
 
-    public void addRow(Row<SN, N, V> row) {
+    public void addRow(RowImpl<SN, N, V> row) {
+        if (m_type == ColumnType.SUPER) {
+            throw new HInvalidRequestException(
+                "Cannot append rows to a ColumnFamily of type super, add super 
rows instead");
+        }
         m_rows.add(row);
     }
 
-    public List<Row<SN, N, V>> getRows() {
+    public void addSuperRow(SuperRowImpl<SN, N, V> superRow) {
+        if (m_type == ColumnType.STANDARD) {
+            throw new HInvalidRequestException(
+                "Cannot append super rows to a ColumnFamily of type standard, 
add rows instead");
+        }
+        m_superRows.add(superRow);
+    }
+
+    public List<RowImpl<SN, N, V>> getRows() {
+        if (m_type == ColumnType.SUPER) {
+            throw new HInvalidRequestException(
+                "Cannot retrieve rows from a ColumnFamily of type super, 
retrieve super rows instead");
+        }
         return m_rows;
     }
 
+    public List<SuperRowImpl<SN, N, V>> getSuperRows() {
+        if (m_type == ColumnType.STANDARD) {
+            throw new HInvalidRequestException(
+                "Cannot retrieve super rows from a ColumnFamily of type 
standard, retrieve rows instead");
+        }
+        return m_superRows;
+    }
+    
+    public List<SuperRowImpl<SN, N, V>> getSuperRows(String superColumn) {
+        if (m_type == ColumnType.STANDARD) {
+            throw new HInvalidRequestException(
+                "Cannot retrieve super rows from a ColumnFamily of type 
standard, retrieve rows instead");
+        }
+        return m_superRows;
+    }
+
     public void removeRow(String rowKey) {
-        for (Row<SN, N, V> row : m_rows) {
+        if (m_type == ColumnType.SUPER) {
+            throw new HInvalidRequestException(
+                "Cannot remove rows from a ColumnFamily of type super, remove 
super rows instead");
+        }
+        for (RowImpl<SN, N, V> row : m_rows) {
             if (row.getKey().equals(rowKey)) {
                 m_rows.remove(row);
                 break;
@@ -70,8 +124,38 @@
         }
     }
 
-    public Row<SN, N, V> getRow(String rowKey) {
-        for (Row<SN, N, V> row : m_rows) {
+    public void removeSuperRow(String rowKey) {
+        if (m_type == ColumnType.STANDARD) {
+            throw new HInvalidRequestException(
+                "Cannot remove super rows from a ColumnFamily of type 
standard, remove rows instead");
+        }
+        for (SuperRowImpl<SN, N, V> superRow : m_superRows) {
+            if (superRow.getKey().equals(rowKey)) {
+                m_rows.remove(superRow);
+                break;
+            }
+        }
+    }
+
+    public RowImpl<SN, N, V> getRow(String rowKey) {
+        if (m_type == ColumnType.SUPER) {
+            throw new HInvalidRequestException(
+                "Cannot retrieve row from a ColumnFamily of type super, 
retrieve rows instead");
+        }
+        for (RowImpl<SN, N, V> row : m_rows) {
+            if (row.getKey().equals(rowKey)) {
+                return row;
+            }
+        }
+        return null;
+    }
+
+    public SuperRowImpl<SN, N, V> getSuperRow(String rowKey) {
+        if (m_type == ColumnType.STANDARD) {
+            throw new HInvalidRequestException(
+                "Cannot retrieve super rows from a ColumnFamily of type 
standard, retrieve rows instead");
+        }
+        for (SuperRowImpl<SN, N, V> row : m_superRows) {
             if (row.getKey().equals(rowKey)) {
                 return row;
             }
@@ -81,9 +165,9 @@
 
     public List<HSuperColumn<SN, N, V>> getSuperColumns(String rowKey) {
         if (m_type == ColumnType.SUPER) {
-            for (Row<SN, N, V> row : m_rows) {
-                if (row.getKey().equals(rowKey)) {
-                    return row.getSuperColumns();
+            for (SuperRowImpl<SN, N, V> superRow : m_superRows) {
+                if (superRow.getKey().equals(rowKey)) {
+                    return superRow.getSuperColumns();
                 }
             }
             return null;
@@ -96,7 +180,7 @@
 
     public List<HColumn<N, V>> getColumns(String rowKey) {
         if (m_type == ColumnType.STANDARD) {
-            for (Row<SN, N, V> row : m_rows) {
+            for (RowImpl<SN, N, V> row : m_rows) {
                 if (row.getKey().equals(rowKey)) {
                     return row.getColumns();
                 }

Modified: 
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/HectorUtil.java
==============================================================================
--- 
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/HectorUtil.java
        (original)
+++ 
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/HectorUtil.java
        Fri Sep 16 14:27:54 2011
@@ -16,6 +16,7 @@
 package org.amdatu.cassandra.test.unit.framework.mock;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 import me.prettyprint.cassandra.model.HColumnImpl;
@@ -23,12 +24,16 @@
 import me.prettyprint.cassandra.serializers.SerializerTypeInferer;
 import me.prettyprint.cassandra.serializers.StringSerializer;
 import me.prettyprint.hector.api.Serializer;
+import me.prettyprint.hector.api.beans.ColumnSlice;
 import me.prettyprint.hector.api.beans.HColumn;
 import me.prettyprint.hector.api.beans.HSuperColumn;
+import me.prettyprint.hector.api.beans.Row;
+import me.prettyprint.hector.api.beans.SuperRow;
+import me.prettyprint.hector.api.beans.SuperSlice;
 
 public class HectorUtil {
     @SuppressWarnings("unchecked")
-    public static <SN, N, V> HSuperColumn<SN, N, V> createHSuperColumn(String 
superColumn, String column, Object value) {
+    public static <SN, N, V> HSuperColumn<SN, N, V> createSuperColumn(String 
superColumn, String column, Object value) {
         // First initialize the serializers
         Serializer<SN> snSer = (Serializer<SN>) StringSerializer.get();
         Serializer<N> nSer = (Serializer<N>) StringSerializer.get();
@@ -45,14 +50,14 @@
     }
     
     @SuppressWarnings("unchecked")
-    public static <SN, N, V> void addHColumn(HSuperColumn<SN, N, V> 
hSuperColumn, String column, Object value) {
+    public static <SN, N, V> void addColumn(HSuperColumn<SN, N, V> 
hSuperColumn, String column, Object value) {
         List<HColumn<N, V>> hColumns = hSuperColumn.getColumns();
         HColumn<N, V> hColumn = new HColumnImpl<N, V>((N) column, (V) value, 
System.currentTimeMillis());
         hColumns.add(hColumn);
         hSuperColumn.setSubcolumns(hColumns);
     }
     
-    public static <SN, N, V>  HColumn<N, V> getHColumn(HSuperColumn<SN, N, V> 
hSuperColumn, String column) {
+    public static <SN, N, V>  HColumn<N, V> getColumn(HSuperColumn<SN, N, V> 
hSuperColumn, String column) {
         for (HColumn<N, V> hColumn : hSuperColumn.getColumns()) {
             if (hColumn.getName().equals(column)) {
                 return hColumn;
@@ -60,4 +65,117 @@
         }
         return null;
     }
+    
+    public static <T, SN, N, V> Row<String, String, T> convertRow(final 
RowImpl<SN, N, V> row) {
+        return new Row<String, String, T>() {
+            public String getKey() {
+                return row.getKey();
+            }
+            public ColumnSlice<String, T> getColumnSlice() {
+                return new ColumnSlice<String, T>() {
+                    public List<HColumn<String, T>> getColumns() {
+                        return convertColumns(row.getColumns());
+                    }
+                    public HColumn<String, T> getColumnByName(String 
columnName) {
+                        for (HColumn<String, T> col : getColumns()) {
+                            if (col.getName().equals(columnName)) {
+                                return col;
+                            }
+                        }
+                        return null;
+                    }
+                    
+                };
+            }
+        };
+    }
+    
+    public static <T, SN, N, V> SuperRow<String, String, String, T> 
convertSuperRow(final SuperRowImpl<SN,N,V>  superRow) {
+        return new SuperRow<String, String, String, T>() {
+            public String getKey() {
+                return superRow.getKey();
+            }
+          
+            public SuperSlice<String, String, T> getSuperSlice() {
+                return new SuperSlice<String, String, T>() {
+                    public List<HSuperColumn<String, String, T>> 
getSuperColumns() {
+                        return convertSuperColumns(superRow.getSuperColumns());
+                    }
+
+                    public HSuperColumn<String, String, T> 
getColumnByName(String columnName) {
+                        for (HSuperColumn<String, String, T> col : 
getSuperColumns()) {
+                            if (col.getName().equals(columnName)) {
+                                return col;
+                            }
+                        }
+                        return null;
+                    }
+                };
+            }
+        };
+    }
+    
+    @SuppressWarnings("unchecked")
+    public static <T, N, V> List<HColumn<String, T>> 
convertColumns(List<HColumn<N, V>> hColumns) {
+        List<HColumn<String, T>> cols = new ArrayList<HColumn<String, T>>();
+        for (HColumn<N, V> col : hColumns) {
+            HColumn<String, T> ccol = (HColumn<String, T>) col;
+            cols.add(ccol);
+        }
+        return cols;
+    }
+    
+    @SuppressWarnings("unchecked")
+    public static <T, SN, N, V> List<HSuperColumn<String, String, T>> 
convertSuperColumns(List<HSuperColumn<SN, N, V>> hSuperColumns) {
+        List<HSuperColumn<String, String, T>> cols = new 
ArrayList<HSuperColumn<String, String, T>>();
+        for (HSuperColumn<SN, N, V> col : hSuperColumns) {
+            HSuperColumn<String, String, T> ccol = (HSuperColumn<String, 
String, T>)  col;
+            cols.add(ccol);
+        }
+        return cols;
+    }
+    
+    public static <T, SN, N, V> Iterator<Row<String, String, T>> 
getRowIterator(final List<RowImpl<SN, N, V>> rows) {
+        return new Iterator<Row<String, String, T>>() {
+            int index = 0;
+            
+            public boolean hasNext() {
+                return index < rows.size();
+            }
+
+            public Row<String, String, T> next() {
+                if (!hasNext()) {
+                    return null;
+                }
+                RowImpl<SN, N, V> row = rows.get(index++);
+                return convertRow(row);
+            }
+
+            public void remove() {
+                throw new IllegalArgumentException("Not implemented");
+            }
+        };
+    }
+    
+    public static <T, SN, N, V> Iterator<SuperRow<String, String, String, T>> 
getSuperRowIterator(final List<SuperRowImpl<SN, N, V>> rows) {
+        return new Iterator<SuperRow<String, String, String, T>>() {
+            int index = 0;
+            
+            public boolean hasNext() {
+                return index < rows.size();
+            }
+
+            public SuperRow<String, String, String, T> next() {
+                if (!hasNext()) {
+                    return null;
+                }
+                SuperRowImpl<SN,N,V> row = rows.get(index++);
+                return convertSuperRow(row);
+            }
+
+            public void remove() {
+                throw new IllegalArgumentException("Not implemented");
+            }
+        };
+    }
 }

Added: 
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/RowImpl.java
==============================================================================
--- (empty file)
+++ 
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/RowImpl.java
   Fri Sep 16 14:27:54 2011
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2010, 2011 The Amdatu Foundation
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.amdatu.cassandra.test.unit.framework.mock;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import me.prettyprint.hector.api.beans.HColumn;
+
+public class RowImpl<SN, N, V> {
+    private String m_key;
+    private List<HColumn<N, V>> m_columns = new ArrayList<HColumn<N, V>>();
+
+    public RowImpl(String key) {
+        m_key = key;
+    }
+
+    public String getKey() {
+        return m_key;
+    }
+
+    public void addColumn(HColumn<N, V> column) {
+        m_columns.add(column);
+    }
+
+    public List<HColumn<N, V>> getColumns() {
+        return m_columns;
+    }
+
+    public HColumn<N, V> getColumn(String name) {
+        for (HColumn<N, V> column : m_columns) {
+            if (column.getName().equals(name)) {
+                return column;
+            }
+        }
+        return null;
+    }
+}

Added: 
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/SuperRowImpl.java
==============================================================================
--- (empty file)
+++ 
trunk/amdatu-cassandra/test-unit/src/main/java/org/amdatu/cassandra/test/unit/framework/mock/SuperRowImpl.java
      Fri Sep 16 14:27:54 2011
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2010, 2011 The Amdatu Foundation
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.amdatu.cassandra.test.unit.framework.mock;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import me.prettyprint.hector.api.beans.HSuperColumn;
+
+public class SuperRowImpl<SN, N, V> {
+    private String m_key;
+    private List<HSuperColumn<SN, N, V>> m_superColumns = new 
ArrayList<HSuperColumn<SN, N, V>>();
+
+    public SuperRowImpl(String key) {
+        m_key = key;
+    }
+
+    public String getKey() {
+        return m_key;
+    }
+
+    public void addSuperColumn(HSuperColumn<SN, N, V> superColumn) {
+        m_superColumns.add(superColumn);
+    }
+
+    public List<HSuperColumn<SN, N, V>> getSuperColumns() {
+        return m_superColumns;
+    }
+
+    public HSuperColumn<SN, N, V> getSuperColumn(String name) {
+        for (HSuperColumn<SN, N, V> column : m_superColumns) {
+            if (column.getName().equals(name)) {
+                return column;
+            }
+        }
+        return null;
+    }
+}
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to