view src/treecms/proto/cassandra/CassBrowser.java @ 41:1214cf906f1e

commit
author shoshi
date Tue, 18 Jan 2011 19:04:28 +0900
parents a2e384c93533
children cc66b6933d44
line wrap: on
line source

package treecms.proto.cassandra;

import treecms.proto.api.Browser;
import treecms.proto.api.Node;
import treecms.proto.api.NodeID;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransportException;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.cassandra.thrift.Cassandra;
import org.apache.cassandra.thrift.ColumnOrSuperColumn;
import org.apache.cassandra.thrift.ColumnPath;
import org.apache.cassandra.thrift.ConsistencyLevel;

public class CassBrowser implements Browser
{
	public static void main(String _args[])throws Exception
	{
	}
	
	private Cassandra.Client m_cassandra;
	private String m_host,m_port;
	private String m_keySpace,m_colFamily;
	
	private CassBrowser(String _host,String _port) throws TTransportException
	{
		m_host = _host;
		m_port = _port;
		m_cassandra = null;
		
		connect();
	}
	
	public synchronized void connect() throws TTransportException
	{
		if(m_cassandra != null && m_cassandra.getOutputProtocol().getTransport().isOpen()){
			return;
		}
		
		TTransport tr = new TFramedTransport(new TSocket(m_host,Integer.parseInt(m_port)));
		TProtocol proto = new TBinaryProtocol(tr);
		m_cassandra = new Cassandra.Client(proto);
		
		tr.open();
	}
	
	public static CassBrowser createInstance(String _host,String _port,String _ks,String _cf)
	{
		CassBrowser browser = null;
		try{
			browser = new CassBrowser(_host,_port);
			browser.m_keySpace = _ks;
			browser.m_colFamily = _cf;
		}catch(Exception _err){
			_err.printStackTrace();
		}
		return browser;
	}
	
	public String getColumn(NodeID _id,String _colName)
	{
		return getColumn(_id.toString(),_colName,true);
	}
	
	private String getColumn(String _row,String _colName,boolean _retry)
	{
		ColumnPath path = new ColumnPath();
		path.column_family = m_colFamily;
		path.column = _colName.getBytes();
		
		String value = null;
		try{
			ColumnOrSuperColumn column;
			column = m_cassandra.get(m_keySpace,_row,path,ConsistencyLevel.ONE);
			value = column.column.toString();
		}catch(Exception _e){
			_e.printStackTrace();
		}
		
		return value;
	}
	
	public CassNode createNode(String _id)
	{
		return null;
	}

	@Override
	public Node useContents()
	{
		String rootID;
		return null;
	}
}