Repository: metamodel
Updated Branches:
  refs/heads/master bbc460f75 -> 573a5b069


METAMODEL-149 Fix. Fixes #27


Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/573a5b06
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/573a5b06
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/573a5b06

Branch: refs/heads/master
Commit: 573a5b069a92e72958ea8a571886591c9fe5d030
Parents: bbc460f
Author: Alberto Rodriguez <[email protected]>
Authored: Wed Jun 17 09:26:19 2015 +0200
Committer: Alberto Rodriguez <[email protected]>
Committed: Wed Jun 17 09:26:19 2015 +0200

----------------------------------------------------------------------
 .../cassandra/CassandraDataContext.java         |  1 +
 .../metamodel/cassandra/CassandraUtils.java     |  2 +
 .../cassandra/CassandraDataContextTest.java     | 44 +++++++++++++++++---
 3 files changed, 42 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/metamodel/blob/573a5b06/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraDataContext.java
----------------------------------------------------------------------
diff --git 
a/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraDataContext.java
 
b/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraDataContext.java
index f7af49b..e99570b 100644
--- 
a/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraDataContext.java
+++ 
b/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraDataContext.java
@@ -186,6 +186,7 @@ public class CassandraDataContext extends 
QueryPostprocessDataContext implements
     private static ColumnType getColumnTypeFromMetaDataField(DataType.Name 
metaDataName) {
         switch (metaDataName) {
         case BIGINT:
+        case COUNTER:
             return ColumnType.BIGINT;
         case BLOB:
             return ColumnType.BLOB;

http://git-wip-us.apache.org/repos/asf/metamodel/blob/573a5b06/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraUtils.java
----------------------------------------------------------------------
diff --git 
a/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraUtils.java 
b/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraUtils.java
index 8707834..0805dfe 100644
--- a/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraUtils.java
+++ b/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraUtils.java
@@ -67,6 +67,8 @@ public class CassandraUtils {
         switch (columnType.getName()) {
         case BIGINT:
             return row.getVarint(columnName);
+        case COUNTER:
+            return row.getLong(columnName);
         case BLOB:
             return row.getBytes(columnName);
         case BOOLEAN:

http://git-wip-us.apache.org/repos/asf/metamodel/blob/573a5b06/cassandra/src/test/java/org/apache/metamodel/cassandra/CassandraDataContextTest.java
----------------------------------------------------------------------
diff --git 
a/cassandra/src/test/java/org/apache/metamodel/cassandra/CassandraDataContextTest.java
 
b/cassandra/src/test/java/org/apache/metamodel/cassandra/CassandraDataContextTest.java
index a48e3a9..931a4fd 100644
--- 
a/cassandra/src/test/java/org/apache/metamodel/cassandra/CassandraDataContextTest.java
+++ 
b/cassandra/src/test/java/org/apache/metamodel/cassandra/CassandraDataContextTest.java
@@ -20,7 +20,6 @@ package org.apache.metamodel.cassandra;
 
 import java.util.Arrays;
 import java.util.List;
-
 import javax.swing.table.TableModel;
 
 import org.apache.metamodel.data.DataSet;
@@ -39,12 +38,14 @@ public class CassandraDataContextTest extends 
CassandraTestCase {
     private Cluster cluster;
     private CassandraDataContext dc;
     private String testTableName = "songs";
+    private String testCounterTableName = "counter";
     private String firstRowId = "756716f7-2e54-4715-9f00-91dcbea6cf51";
     private String secondRowId = "756716f7-2e54-4715-9f00-91dcbea6cf52";
     private String thirdRowId = "756716f7-2e54-4715-9f00-91dcbea6cf53";
     private String firstRowTitle = "My first song";
     private String secondRowTitle = "My second song";
     private String thirdRowTitle = "My third song";
+    private String urlName = "my_url";
 
     @Override
     protected void setUp() throws Exception {
@@ -54,8 +55,9 @@ public class CassandraDataContextTest extends 
CassandraTestCase {
             cluster = client.getCluster();
             Session session = cluster.connect();
             dc = new CassandraDataContext(cluster, getKeyspaceName());
-            createCassandraKeySpaceAndTable(session);
+            createCassandraKeySpaceAndTables(session);
             populateCassandraTableWithSomeData(session);
+            populateCassandraCounterTableWithSomeData(session);
         }
     }
 
@@ -73,7 +75,7 @@ public class CassandraDataContextTest extends 
CassandraTestCase {
             return;
         }
 
-        assertEquals("[" + testTableName + "]", 
Arrays.toString(dc.getDefaultSchema().getTableNames()));
+        assertEquals("[" + testCounterTableName +", "+testTableName + "]", 
Arrays.toString(dc.getDefaultSchema().getTableNames()));
 
         Table table = dc.getDefaultSchema().getTableByName(testTableName);
 
@@ -210,13 +212,38 @@ public class CassandraDataContextTest extends 
CassandraTestCase {
         }
     }
 
-    private void createCassandraKeySpaceAndTable(Session session) {
+    public void testCounterDataType() throws Exception {
+        if (!isConfigured()) {
+            System.err.println(getInvalidConfigurationMessage());
+            return;
+        }
+        Table table = 
dc.getDefaultSchema().getTableByName(testCounterTableName);
+
+        assertEquals(ColumnType.BIGINT, 
table.getColumnByName("counter_value").getType());
+        assertEquals(ColumnType.STRING, 
table.getColumnByName("url_name").getType());
+
+        DataSet ds = 
dc.query().from(testCounterTableName).select("counter_value").and("url_name").execute();
+        assertEquals(CassandraDataSet.class, ds.getClass());
+
+        try {
+            assertTrue(ds.next());
+            assertEquals("Row[values=[" + 1 + ", " + urlName + "]]", 
ds.getRow().toString());
+            assertFalse(ds.next());
+        } finally {
+            ds.close();
+        }
+    }
+
+    private void createCassandraKeySpaceAndTables(Session session) {
         session.execute("CREATE KEYSPACE IF NOT EXISTS " + getKeyspaceName() + 
" WITH replication "
                 + "= {'class':'SimpleStrategy', 'replication_factor':1};");
         session.execute("DROP TABLE IF EXISTS " + getKeyspaceName() + "." + 
testTableName + ";");
         session.execute("CREATE TABLE IF NOT EXISTS " + getKeyspaceName() + 
"." + testTableName + " ("
                 + "id uuid PRIMARY KEY," + "title text," + "hit boolean," + 
"duration float," + "position int,"
                 + "creationtime timestamp" + ");");
+        session.execute("DROP TABLE IF EXISTS " + getKeyspaceName() + "." + 
testCounterTableName + ";");
+        session.execute("CREATE TABLE IF NOT EXISTS " + getKeyspaceName() + 
"." + testCounterTableName + " ("
+                + "counter_value counter, url_name varchar, PRIMARY KEY 
(url_name)" + ");");
     }
 
     private void populateCassandraTableWithSomeData(Session session) {
@@ -236,4 +263,11 @@ public class CassandraDataContextTest extends 
CassandraTestCase {
                 + " (id, title, hit, duration, position, creationtime) " + 
"VALUES (" + thirdRowId + ","
                 + "'My third song'," + "false," + "3.15," + "3," + 
"dateof(now()))" + ";");
     }
-}
+
+    private void populateCassandraCounterTableWithSomeData(Session session) {
+
+        // create 1 record
+        session.execute("UPDATE " + getKeyspaceName() + "." + 
testCounterTableName
+                + " SET counter_value = counter_value + 1 WHERE url_name='" + 
urlName + "';");
+    }
+}
\ No newline at end of file

Reply via email to