package com.facebook.infrastructure.net.http;
import java.util.Collection;
import java.util.List;
import com.facebook.infrastructure.config.DatabaseDescriptor;
import com.facebook.infrastructure.db.ColumnFamily;
import com.facebook.infrastructure.db.IColumn;
import com.facebook.infrastructure.db.SuperColumn;
public class ColumnFamilyFormatter extends HTMLFormatter
{
public ColumnFamilyFormatter()
{
super();
}
public ColumnFamilyFormatter(StringBuilder sb)
{
super(sb);
}
public void printKeyColumnFamily(StringBuilder sb, String sKey, ColumnFamily cf)
{
// print the key
sb.append("Key = " + sKey + "<br>");
// print the column familie
printColumnFamily(sb, cf);
}
public void printColumnFamily(StringBuilder sb, ColumnFamily cf)
{
// first print the column family specific data
sb.append("ColumnFamily = " + cf.name() + "<br>");
Collection<IColumn> cols = cf.getAllColumns();
if (cf.isSuper())
{
printSuperColumns(sb, cols);
}
else
{
printSimpleColumns(sb, cols);
}
}
public void printSuperColumns(StringBuilder sb, Collection<IColumn> cols)
{
// print the super column summary
sb.append("Number of super columns = " + cols.size() + "<br>");
startTable();
for(IColumn col : cols)
{
addHeader(col.name());
startRow();
Collection<IColumn> simpleCols = ((SuperColumn)col).getSubColumns();
printSimpleColumns(sb, simpleCols);
endRow();
}
endTable();
}
public void printSimpleColumns(StringBuilder sb, Collection<IColumn> cols)
{
int numColumns = cols.size();
String[] columnNames = new String[numColumns];
String[] columnValues = new String[numColumns];
// print the simple column summary
//sb.append("Number of simple columns = " + cols.size() + "<br>");
int i = 0;
for(IColumn col : cols)
{
columnNames[i] = col.name();
columnValues[i] = new String(col.value());
++i;
}
startTable();
addHeaders(columnNames);
startRow();
for(i = 0; i < numColumns; ++i)
{
addCol(columnValues[i]);
}
endRow();
endTable();
}
}