Skip to content

Commit

Permalink
Added glue between map and client interfaces
Browse files Browse the repository at this point in the history
(cherry picked from commit 39bfaae)
  • Loading branch information
lautis committed Aug 30, 2009
1 parent 6da6631 commit 10bad9e
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions src/main/scala/com/nodeta/scalandra/Client.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.nodeta.scalandra

import serializer.{Serializer, NonSerializer}
import map.{ColumnFamily, SuperColumnFamily, StandardColumnFamily}

import org.apache.cassandra.{service => cassandra}
import java.lang.IllegalArgumentException
Expand All @@ -27,6 +28,44 @@ class Client[A, B, C](
protected val value : Serializer[C]
) extends client.Base[A, B, C] with client.ReadWrite[A, B, C] {
val client = connection.client

lazy private val schema = { describe }

def apply(columnFamily : String) : ColumnFamily[_] = {
schema(columnFamily)("Type") match {
case "Super" => superColumnFamily(columnFamily)
case "Standard" => this.columnFamily(columnFamily)
}
}

def columnFamily(columnFamily : String) : StandardColumnFamily[B, C] = {
val _columnFamily = columnFamily
val parent = this

new StandardColumnFamily[B, C] {
protected val columnSerializer = column
protected val valueSerializer = value

protected val keyspace = parent.keyspace
protected val columnFamily = _columnFamily
protected val connection = parent.connection
}
}

def superColumnFamily(columnFamily : String) : SuperColumnFamily[A, B, C] = {
val _columnFamily = columnFamily
val parent = this

new SuperColumnFamily[A, B, C] {
protected val superColumnSerializer = superColumn
protected val columnSerializer = column
protected val valueSerializer = value

protected val keyspace = parent.keyspace
protected val columnFamily = _columnFamily
protected val connection = parent.connection
}
}

def build[K, V](k : Serializer[K], v : Serializer[V]) = {
new Client(connection, keyspace, k, k, v)
Expand Down

0 comments on commit 10bad9e

Please sign in to comment.