Author: jbellis
Date: Mon May  9 02:34:22 2011
New Revision: 1100864

URL: http://svn.apache.org/viewvc?rev=1100864&view=rev
Log:
JDBC ResultSetMetadata properties added to AbstractType

Added:
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractUUIDType.java
Removed:
    
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/ColumnMetaData.java
Modified:
    cassandra/branches/cassandra-0.8/CHANGES.txt
    
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/CResultSet.java
    
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraPreparedStatement.java
    
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/Utils.java
    
cassandra/branches/cassandra-0.8/drivers/java/test/org/apache/cassandra/cql/JdbcDriverTest.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractCommutativeType.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractType.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AsciiType.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/BytesType.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/IntegerType.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LocalByPartionerType.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LongType.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UUIDType.java

Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Mon May  9 02:34:22 2011
@@ -8,6 +8,8 @@
  * fix CQL treatment of > and < operators in range slices (CASSANDRA-2592)
  * fix potential double-application of counter updates on commitlog replay
    (CASSANDRA-2419)
+ * JDBC CQL driver exposes getColumn for access to timestamp
+ * JDBC ResultSetMetadata properties added to AbstractType
 
 
 0.8.0-beta2

Modified: 
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/CResultSet.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/CResultSet.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/CResultSet.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/CResultSet.java
 Mon May  9 02:34:22 2011
@@ -32,7 +32,6 @@ import java.sql.Clob;
 import java.sql.Date;
 import java.sql.NClob;
 import java.sql.Ref;
-import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.RowId;
 import java.sql.SQLException;
@@ -44,9 +43,7 @@ import java.sql.Time;
 import java.sql.Timestamp;
 import java.util.*;
 
-import org.apache.cassandra.db.marshal.BytesType;
 import org.apache.cassandra.db.marshal.CounterColumnType;
-import org.apache.cassandra.db.marshal.LongType;
 import org.apache.cassandra.thrift.Column;
 import org.apache.cassandra.thrift.CqlResult;
 import org.apache.cassandra.thrift.CqlRow;
@@ -1163,10 +1160,7 @@ public class CResultSet implements Cassa
             column--;
             checkIndex(column);
             TypedColumn tc = values.get(column);
-            if (tc.getValueType() instanceof ColumnMetaData)
-                return ((ColumnMetaData)tc.getValueType()).isCaseSensitive();
-            else
-                return tc.getValueType().getType().equals(String.class);
+            return tc.getValueType().isCaseSensitive();
         }
 
         public boolean isSearchable(int column) throws SQLException
@@ -1179,16 +1173,13 @@ public class CResultSet implements Cassa
             column--;
             checkIndex(column);
             TypedColumn tc = values.get(column);
-            if (tc.getValueType() instanceof ColumnMetaData)
-                return ((ColumnMetaData)tc.getValueType()).isCurrency();
-            else
-                return false;
+            return tc.getValueType().isCurrency();
         }
 
+        /** absence is the equivalent of null in Cassandra */
         public int isNullable(int column) throws SQLException
         {
-            // no such thing as null in cassandra.
-            return ResultSetMetaData.columnNullableUnknown;
+            return ResultSetMetaData.columnNullable;
         }
 
         public boolean isSigned(int column) throws SQLException
@@ -1196,7 +1187,7 @@ public class CResultSet implements Cassa
             column--;
             checkIndex(column);
             TypedColumn tc = values.get(column);
-            return Utils.isTypeSigned(tc.getValueType());
+            return tc.getValueType().isSigned();
         }
 
         public int getColumnDisplaySize(int column) throws SQLException
@@ -1228,25 +1219,15 @@ public class CResultSet implements Cassa
             column--;
             checkIndex(column);
             TypedColumn col = values.get(column);
-            if (col.getValueType() instanceof ColumnMetaData)
-                return ((ColumnMetaData)col.getValueType()).getPrecision();
-            else if (col.getValueType().getType().equals(String.class))
-                return col.getValueString().length();
-            else if (col.getValueType() == BytesType.instance)
-                return col.getValueString().length();
-            else if (col.getValueType().getType().equals(UUID.class))
-                return 36; // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
-            else if (col.getValueType() == LongType.instance)
-                return 19; // number of digits in 2**63-1.
-            else
-                return 0;
+            return col.getValueType().getPrecision(col.getValue());
         }
 
         public int getScale(int column) throws SQLException
         {
             column--;
             checkIndex(column);
-            return Utils.getTypeScale(values.get(column).getValueType());
+            TypedColumn tc = values.get(column);
+            return tc.getValueType().getScale(tc.getValue());
         }
 
         public String getTableName(int column) throws SQLException
@@ -1263,7 +1244,7 @@ public class CResultSet implements Cassa
         {
             column--;
             checkIndex(column);
-            return Utils.getJdbcType(values.get(column).getValueType());
+            return values.get(column).getValueType().getJdbcType();
         }
 
         // todo: spec says "database specific type name". this means the 
abstract type.

Modified: 
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraPreparedStatement.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraPreparedStatement.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraPreparedStatement.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraPreparedStatement.java
 Mon May  9 02:34:22 2011
@@ -72,21 +72,7 @@ public class CassandraPreparedStatement 
     }
     
     // impl specific methods start here.
-    
-    // determines which types need to be quoted.
-    private static boolean needsQuotes(AbstractType type) 
-    {
-        if (type instanceof ColumnMetaData)
-            return ((ColumnMetaData)type).needsQuotes();
-        else
-            return type == BytesType.instance ||
-                   type == AsciiType.instance ||
-                   type == UTF8Type.instance ||
-                   type == LexicalUUIDType.instance ||
-                   type == TimeUUIDType.instance ||
-                   type == UUIDType.instance;
-    }
-    
+
     // double quotes strings (in parameters)
     private static String makeCqlString(String s) 
     {
@@ -116,7 +102,7 @@ public class CassandraPreparedStatement 
                     Object param = params.nextParam();
                     String stringParam = type == null ? param.toString() : 
type.toString(param);
                     stringParam = makeCqlString(stringParam);
-                    if (type == null || needsQuotes(type))
+                    if (type == null || type.needsQuotes())
                         stringParam = "'" + stringParam + "'";
                     sb.append(stringParam);
                 }
@@ -153,7 +139,7 @@ public class CassandraPreparedStatement 
                     Object param = params.nextParam();
                     AbstractType type = left ? ltype : rtype;
                     String stringParam = makeCqlString(type.toString(param));
-                    if (needsQuotes(type))
+                    if (type.needsQuotes())
                         stringParam = "'" + stringParam + "'";
                     sb.append(stringParam);
                 }

Modified: 
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/Utils.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/Utils.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/Utils.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/Utils.java
 Mon May  9 02:34:22 2011
@@ -63,40 +63,4 @@ class Utils
         
         return ByteBuffer.wrap(byteArray.toByteArray());
     }
-    
-    static int getJdbcType(AbstractType type) throws SQLException
-    {   
-        if (type instanceof ColumnMetaData)
-            return ((ColumnMetaData)type).getType();
-        else if (type == IntegerType.instance)
-            return Types.BIGINT;
-        else if (type.getType().equals(Long.class))
-            return Types.BIGINT; // not the best fit.
-        else if (type.getType().equals(String.class))
-            return Types.VARCHAR;
-        else if (type.getType().equals(UUID.class))
-            return Types.TIMESTAMP;
-        else if (type == BytesType.instance)
-            return Types.BINARY;
-        else
-            throw new SQLException("Uninterpretable JDBC type " + 
type.getClass().getName());
-    }
-    
-    static boolean isTypeSigned(AbstractType type)
-    {
-        if (type == IntegerType.instance || type == LongType.instance)
-            return true;
-        else if (type instanceof ColumnMetaData) 
-            return ((ColumnMetaData)type).isSigned();
-        else
-            return false;
-    }
-    
-    static int getTypeScale(AbstractType type) 
-    {
-        if (type instanceof ColumnMetaData)
-            return ((ColumnMetaData)type).getScale();
-        else
-            return 0;
-    }
 }

Modified: 
cassandra/branches/cassandra-0.8/drivers/java/test/org/apache/cassandra/cql/JdbcDriverTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/drivers/java/test/org/apache/cassandra/cql/JdbcDriverTest.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/drivers/java/test/org/apache/cassandra/cql/JdbcDriverTest.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/drivers/java/test/org/apache/cassandra/cql/JdbcDriverTest.java
 Mon May  9 02:34:22 2011
@@ -82,15 +82,15 @@ public class JdbcDriverTest extends Embe
     private static void expectedMetaData(ResultSetMetaData md, int col, String 
colClass, String table, String schema,
                                   String label, int type, String typeName, 
boolean signed, boolean caseSensitive) throws SQLException
     {
-        assert colClass.equals(md.getColumnClassName(col)); // full class name 
of type<T>
-        assert table.equals(md.getTableName(col));
-        assert schema.equals(md.getSchemaName(col));
-        assert label.equals(md.getColumnLabel(col)) : "expected " + label + " 
got " + md.getColumnLabel(col);
-        assert label.equals(md.getColumnName(col));
-        assert type == md.getColumnType(col);
-        assert typeName.equals(md.getColumnTypeName(col)) : "expected " + 
typeName + " got " + md.getColumnTypeName(col); // simple name of abstract type.
-        assert md.isSigned(col) == signed;
-        assert md.isCaseSensitive(col) == caseSensitive;
+        assertEquals(colClass, md.getColumnClassName(col)); // full class name 
of type<T>
+        assertEquals(table, md.getTableName(col));
+        assertEquals(schema, md.getSchemaName(col));
+        assertEquals(label, md.getColumnLabel(col));
+        assertEquals(label, md.getColumnName(col));
+        assertEquals(type, md.getColumnType(col));
+        assertEquals(typeName, md.getColumnTypeName(col));
+        assertEquals(signed, md.isSigned(col));
+        assertEquals(caseSensitive, md.isCaseSensitive(col));
     }
     
     private static void expectedMetaData(ResultSetMetaData md, int col,
@@ -174,19 +174,13 @@ public class JdbcDriverTest extends Embe
         
         ResultSetMetaData md = rs.getMetaData();
         assert md.getColumnCount() == 2;
-        expectedMetaData(md, 1, Long.class.getName(), "JdbcLong", "Keyspace1", 
"1", Types.BIGINT, LongType.class.getSimpleName(), true, false);
-        expectedMetaData(md, 2, Long.class.getName(), "JdbcLong", "Keyspace1", 
"2", Types.BIGINT, LongType.class.getSimpleName(), true, false);
+        expectedMetaData(md, 1, Long.class.getName(), "JdbcLong", "Keyspace1", 
"1", Types.INTEGER, LongType.class.getSimpleName(), true, false);
+        expectedMetaData(md, 2, Long.class.getName(), "JdbcLong", "Keyspace1", 
"2", Types.INTEGER, LongType.class.getSimpleName(), true, false);
         
         for (int i = 0; i < md.getColumnCount(); i++)
-            expectedMetaData(md,
-                             i + 1,
-                             Long.class.getName(),
-                             Types.BIGINT,
-                             LongType.class.getSimpleName(),
-                             true,
-                             false);
+            expectedMetaData(md, i + 1, Long.class.getName(), Types.INTEGER, 
LongType.class.getSimpleName(), true, false);
     }
-    
+
     @Test
     public void testStringMetadata() throws SQLException
     {

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractCommutativeType.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractCommutativeType.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractCommutativeType.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractCommutativeType.java
 Mon May  9 02:34:22 2011
@@ -21,6 +21,7 @@
 package org.apache.cassandra.db.marshal;
 
 import java.nio.ByteBuffer;
+import java.sql.Types;
 
 import org.apache.cassandra.db.Column;
 import org.apache.cassandra.db.context.CounterContext;
@@ -52,4 +53,39 @@ public abstract class AbstractCommutativ
     {
         return Long.class;
     }
+
+    public boolean isSigned()
+    {
+        return true;
+    }
+
+    public boolean isCaseSensitive()
+    {
+        return false;
+    }
+
+    public boolean isCurrency()
+    {
+        return false;
+    }
+
+    public int getPrecision(Long obj)
+    {
+        return obj.toString().length();
+    }
+
+    public int getScale(Long obj)
+    {
+        return 0;
+    }
+
+    public int getJdbcType()
+    {
+        return Types.INTEGER;
+    }
+
+    public boolean needsQuotes()
+    {
+        return false;
+    }
 }

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractType.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractType.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractType.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractType.java
 Mon May  9 02:34:22 2011
@@ -147,4 +147,16 @@ public abstract class AbstractType<T> im
     
     /** returns the class this AbstractType represents. */
     public abstract Class<T> getType();
+
+    //
+    // JDBC metadata
+    //
+
+    public abstract boolean isSigned();
+    public abstract boolean isCaseSensitive();
+    public abstract boolean isCurrency();
+    public abstract int getPrecision(T obj);
+    public abstract int getScale(T obj);
+    public abstract int getJdbcType();
+    public abstract boolean needsQuotes();
 }

Added: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractUUIDType.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractUUIDType.java?rev=1100864&view=auto
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractUUIDType.java
 (added)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AbstractUUIDType.java
 Mon May  9 02:34:22 2011
@@ -0,0 +1,47 @@
+package org.apache.cassandra.db.marshal;
+
+import java.sql.Types;
+import java.util.UUID;
+
+public abstract class AbstractUUIDType extends AbstractType<UUID>
+{
+    public Class<UUID> getType()
+    {
+        return UUID.class;
+    }
+
+    public boolean isSigned()
+    {
+        return false;
+    }
+
+    public boolean isCaseSensitive()
+    {
+        return false;
+    }
+
+    public boolean isCurrency()
+    {
+        return false;
+    }
+
+    public int getPrecision(UUID obj)
+    {
+        return -1;
+    }
+
+    public int getScale(UUID obj)
+    {
+        return -1;
+    }
+
+    public int getJdbcType()
+    {
+        return Types.OTHER;
+    }
+
+    public boolean needsQuotes()
+    {
+        return false;
+    }
+}

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AsciiType.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AsciiType.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AsciiType.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/AsciiType.java
 Mon May  9 02:34:22 2011
@@ -23,6 +23,7 @@ package org.apache.cassandra.db.marshal;
 
 import java.nio.ByteBuffer;
 import java.nio.charset.CharacterCodingException;
+import java.sql.Types;
 
 import com.google.common.base.Charsets;
 
@@ -86,4 +87,39 @@ public class AsciiType extends AbstractT
     {
         return String.class;
     }
+
+    public boolean isSigned()
+    {
+        return false;
+    }
+
+    public boolean isCaseSensitive()
+    {
+        return true;
+    }
+
+    public boolean isCurrency()
+    {
+        return false;
+    }
+
+    public int getPrecision(String obj)
+    {
+        return -1;
+    }
+
+    public int getScale(String obj)
+    {
+        return -1;
+    }
+
+    public int getJdbcType()
+    {
+        return Types.VARCHAR;
+    }
+
+    public boolean needsQuotes()
+    {
+        return true;
+    }
 }

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/BytesType.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/BytesType.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/BytesType.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/BytesType.java
 Mon May  9 02:34:22 2011
@@ -22,6 +22,7 @@ package org.apache.cassandra.db.marshal;
 
 
 import java.nio.ByteBuffer;
+import java.sql.Types;
 
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.FBUtilities;
@@ -88,4 +89,39 @@ public class BytesType extends AbstractT
     {
         return ByteBuffer.class;
     }
+
+    public boolean isSigned()
+    {
+        return false;
+    }
+
+    public boolean isCaseSensitive()
+    {
+        return false;
+    }
+
+    public boolean isCurrency()
+    {
+        return false;
+    }
+
+    public int getPrecision(ByteBuffer obj)
+    {
+        return -1;
+    }
+
+    public int getScale(ByteBuffer obj)
+    {
+        return -1;
+    }
+
+    public int getJdbcType()
+    {
+        return Types.BINARY;
+    }
+
+    public boolean needsQuotes()
+    {
+        return true;
+    }
 }

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/IntegerType.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/IntegerType.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/IntegerType.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/IntegerType.java
 Mon May  9 02:34:22 2011
@@ -21,6 +21,7 @@ package org.apache.cassandra.db.marshal;
 
 import java.math.BigInteger;
 import java.nio.ByteBuffer;
+import java.sql.Types;
 
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.thrift.TBaseHelper;
@@ -169,4 +170,39 @@ public final class IntegerType extends A
     {
         return BigInteger.class;
     }
+
+    public boolean isSigned()
+    {
+        return true;
+    }
+
+    public boolean isCaseSensitive()
+    {
+        return false;
+    }
+
+    public boolean isCurrency()
+    {
+        return false;
+    }
+
+    public int getPrecision(BigInteger obj)
+    {
+        return obj.toString().length();
+    }
+
+    public int getScale(BigInteger obj)
+    {
+        return 0;
+    }
+
+    public int getJdbcType()
+    {
+        return Types.BIGINT;
+    }
+
+    public boolean needsQuotes()
+    {
+        return false;
+    }
 }

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
 Mon May  9 02:34:22 2011
@@ -27,7 +27,7 @@ import java.util.UUID;
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.UUIDGen;
 
-public class LexicalUUIDType extends AbstractType<UUID>
+public class LexicalUUIDType extends AbstractUUIDType
 {
     public static final LexicalUUIDType instance = new LexicalUUIDType();
 

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LocalByPartionerType.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LocalByPartionerType.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LocalByPartionerType.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LocalByPartionerType.java
 Mon May  9 02:34:22 2011
@@ -77,4 +77,39 @@ public class LocalByPartionerType<T exte
     {
         return ByteBuffer.class;
     }
+
+    public boolean isSigned()
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isCaseSensitive()
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isCurrency()
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getPrecision(ByteBuffer obj)
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getScale(ByteBuffer obj)
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getJdbcType()
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean needsQuotes()
+    {
+        throw new UnsupportedOperationException();
+    }
 }

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LongType.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LongType.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LongType.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/LongType.java
 Mon May  9 02:34:22 2011
@@ -22,6 +22,7 @@ package org.apache.cassandra.db.marshal;
 
 
 import java.nio.ByteBuffer;
+import java.sql.Types;
 
 import org.apache.cassandra.utils.ByteBufferUtil;
 
@@ -109,4 +110,39 @@ public class LongType extends AbstractTy
     {
         return Long.class;
     }
+
+    public boolean isSigned()
+    {
+        return true;
+    }
+
+    public boolean isCaseSensitive()
+    {
+        return false;
+    }
+
+    public boolean isCurrency()
+    {
+        return false;
+    }
+
+    public int getPrecision(Long obj)
+    {
+        return obj.toString().length();
+    }
+
+    public int getScale(Long obj)
+    {
+        return 0;
+    }
+
+    public int getJdbcType()
+    {
+        return Types.INTEGER;
+    }
+
+    public boolean needsQuotes()
+    {
+        return false;
+    }
 }

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
 Mon May  9 02:34:22 2011
@@ -31,7 +31,7 @@ import org.apache.cassandra.utils.FBUtil
 import org.apache.cassandra.utils.UUIDGen;
 import org.apache.commons.lang.time.DateUtils;
 
-public class TimeUUIDType extends AbstractType<UUID>
+public class TimeUUIDType extends AbstractUUIDType
 {
     public static final TimeUUIDType instance = new TimeUUIDType();
 

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UTF8Type.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
 Mon May  9 02:34:22 2011
@@ -22,6 +22,7 @@ package org.apache.cassandra.db.marshal;
 
 import java.nio.ByteBuffer;
 import java.nio.charset.CharacterCodingException;
+import java.sql.Types;
 
 import com.google.common.base.Charsets;
 import org.apache.cassandra.utils.ByteBufferUtil;
@@ -196,4 +197,39 @@ public class UTF8Type extends AbstractTy
     {
         return String.class;
     }
+
+    public boolean isSigned()
+    {
+        return false;
+    }
+
+    public boolean isCaseSensitive()
+    {
+        return true;
+    }
+
+    public boolean isCurrency()
+    {
+        return false;
+    }
+
+    public int getPrecision(String obj)
+    {
+        return -1;
+    }
+
+    public int getScale(String obj)
+    {
+        return -1;
+    }
+
+    public int getJdbcType()
+    {
+        return Types.VARCHAR;
+    }
+
+    public boolean needsQuotes()
+    {
+        return true;
+    }
 }

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UUIDType.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UUIDType.java?rev=1100864&r1=1100863&r2=1100864&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UUIDType.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UUIDType.java
 Mon May  9 02:34:22 2011
@@ -43,7 +43,7 @@ import org.apache.cassandra.utils.UUIDGe
  * @see "com.fasterxml.uuid.UUIDComparator"
  * 
  */
-public class UUIDType extends AbstractType<UUID>
+public class UUIDType extends AbstractUUIDType
 {
     public static final UUIDType instance = new UUIDType();
 


Reply via email to