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
