You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ee...@apache.org on 2010/01/04 21:14:49 UTC

svn commit: r895759 - /incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java

Author: eevans
Date: Mon Jan  4 20:14:48 2010
New Revision: 895759

URL: http://svn.apache.org/viewvc?rev=895759&view=rev
Log:
pretty-print column names in cli output

Patch by Ryan Daum; reviewed by eevans for CASSANDRA-661

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java?rev=895759&r1=895758&r2=895759&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Mon Jan  4 20:14:48 2010
@@ -17,6 +17,8 @@
  */
 package org.apache.cassandra.cli;
 
+import org.apache.cassandra.db.marshal.AbstractType;
+import org.apache.cassandra.db.marshal.BytesType;
 import org.apache.thrift.*;
 
 import org.antlr.runtime.tree.*;
@@ -41,7 +43,7 @@
     }
 
     // Execute a CLI Statement 
-    public void executeCLIStmt(String stmt) throws TException, NotFoundException, InvalidRequestException, UnavailableException, TimedOutException
+    public void executeCLIStmt(String stmt) throws TException, NotFoundException, InvalidRequestException, UnavailableException, TimedOutException, IllegalAccessException, ClassNotFoundException, InstantiationException
     {
         CommonTree ast = null;
 
@@ -235,7 +237,7 @@
     }  
     
     private void doSlice(String keyspace, String key, String columnFamily, byte[] superColumnName)
-    throws InvalidRequestException, UnavailableException, TimedOutException, TException, UnsupportedEncodingException
+            throws InvalidRequestException, UnavailableException, TimedOutException, TException, UnsupportedEncodingException, IllegalAccessException, NotFoundException, InstantiationException, ClassNotFoundException
     {
         SliceRange range = new SliceRange(ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.EMPTY_BYTE_ARRAY, true, 1000000);
         List<ColumnOrSuperColumn> columns = thriftClient_.get_slice(keyspace, key, new ColumnParent(columnFamily, superColumnName),
@@ -248,9 +250,10 @@
             if (cosc.isSetSuper_column())
             {
                 SuperColumn superColumn = cosc.super_column;
-                css_.out.printf("=> (super_column=%s,", new String(superColumn.name, "UTF-8"));
+
+                css_.out.printf("=> (super_column=%s,", formatSuperColumnName(keyspace, columnFamily, superColumn));
                 for (Column col : superColumn.getColumns())
-                    css_.out.printf("\n     (column=%s, value=%s, timestamp=%d)", new String(col.name, "UTF-8"),
+                    css_.out.printf("\n     (column=%s, value=%s, timestamp=%d)", formatSubcolumnName(keyspace, columnFamily, col),
                                     new String(col.value, "UTF-8"), col.timestamp);
                 
                 css_.out.println(")"); 
@@ -258,7 +261,7 @@
             else
             {
                 Column column = cosc.column;
-                css_.out.printf("=> (column=%s, value=%s, timestamp=%d)\n", new String(column.name, "UTF-8"),
+                css_.out.printf("=> (column=%s, value=%s, timestamp=%d)\n", formatColumnName(keyspace, columnFamily, column),
                                 new String(column.value, "UTF-8"), column.timestamp);
             }
         }
@@ -266,8 +269,34 @@
         css_.out.println("Returned " + size + " results.");
     }
  
+    private String formatSuperColumnName(String keyspace, String columnFamily, SuperColumn column) throws NotFoundException, TException, ClassNotFoundException, IllegalAccessException, InstantiationException
+    {
+        return getFormatTypeForColumn(getCFMetaData(keyspace).get(columnFamily).get("CompareWith")).getString(column.name);
+    }
+
+    private String formatSubcolumnName(String keyspace, String columnFamily, Column subcolumn) throws NotFoundException, TException, ClassNotFoundException, IllegalAccessException, InstantiationException
+    {
+        return getFormatTypeForColumn(getCFMetaData(keyspace).get(columnFamily).get("CompareSubcolumnsWith")).getString(subcolumn.name);
+    }
+
+    private String formatColumnName(String keyspace, String columnFamily, Column column) throws ClassNotFoundException, NotFoundException, TException, IllegalAccessException, InstantiationException
+    {
+        return getFormatTypeForColumn(getCFMetaData(keyspace).get(columnFamily).get("CompareWith")).getString(column.name);
+    }
+
+    private AbstractType getFormatTypeForColumn(String compareWith) throws ClassNotFoundException, IllegalAccessException, InstantiationException
+    {
+        AbstractType type;
+        try {
+            type = (AbstractType) Class.forName(compareWith).newInstance();
+        } catch (ClassNotFoundException e) {
+            type = BytesType.class.newInstance();
+        }
+        return type;
+    }
+
     // Execute GET statement
-    private void executeGet(CommonTree ast) throws TException, NotFoundException, InvalidRequestException, UnavailableException, TimedOutException, UnsupportedEncodingException
+    private void executeGet(CommonTree ast) throws TException, NotFoundException, InvalidRequestException, UnavailableException, TimedOutException, UnsupportedEncodingException, IllegalAccessException, InstantiationException, ClassNotFoundException
     {
         if (!CliMain.isConnected())
             return;
@@ -331,7 +360,7 @@
         // Perform a get(), print out the results.
         ColumnPath path = new ColumnPath(columnFamily, superColumnName, columnName);
         Column column = thriftClient_.get(tableName, key, path, ConsistencyLevel.ONE).column;
-        css_.out.printf("=> (column=%s, value=%s, timestamp=%d)\n", new String(column.name, "UTF-8"),
+        css_.out.printf("=> (column=%s, value=%s, timestamp=%d)\n", formatColumnName(tableName, columnFamily, column),
                         new String(column.value, "UTF-8"), column.timestamp);
     }