# HG changeset patch # User suika6039 # Date 1294849313 -32400 # Node ID a2e384c93533651303270a0e6f858317e98d3833 # Parent ea7f0a4eacaf5a0b052f90dab1e1997eaf7cc03f added CassBrowser.getColumn diff -r ea7f0a4eacaf -r a2e384c93533 src/treecms/proto/cassandra/CassBrowser.java --- a/src/treecms/proto/cassandra/CassBrowser.java Tue Jan 11 17:20:33 2011 +0900 +++ b/src/treecms/proto/cassandra/CassBrowser.java Thu Jan 13 01:21:53 2011 +0900 @@ -2,37 +2,55 @@ import treecms.proto.api.Browser; import treecms.proto.api.Node; -import java.util.List; -import java.io.UnsupportedEncodingException; +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.thrift.TException; -import org.apache.cassandra.service.*; import org.apache.cassandra.thrift.Cassandra; +import org.apache.cassandra.thrift.ColumnOrSuperColumn; +import org.apache.cassandra.thrift.ColumnPath; +import org.apache.cassandra.thrift.ConsistencyLevel; +import org.apache.cassandra.thrift.TimedOutException; +import org.apache.cassandra.thrift.UnavailableException; public class CassBrowser implements Browser { - public static void main(String _args[]) + public static void main(String _args[])throws Exception { - + CassBrowser bw = CassBrowser.createInstance("localhost","9160"); + System.out.println(bw.m_cassandra.describe_cluster_name()); + System.out.println(bw.m_cassandra.describe_version()); } 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 { - TTransport tr = new TFramedTransport(new TSocket(_host,Integer.parseInt(_port))); + 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 CassBrowser createInstance(String _host,String _port) + public static CassBrowser createInstance(String _host,String _port) { CassBrowser browser = null; try{ @@ -43,6 +61,43 @@ return browser; } + public String getColumn(NodeID _id,String _colName) + { + return getColumn(_id,_colName,true); + } + + private String getColumn(NodeID _id,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,_id.toString(),path,ConsistencyLevel.ONE); + value = column.column.toString(); + }catch(UnavailableException _e){ + _e.printStackTrace(); + }catch(TimedOutException _e){ + _e.printStackTrace(); + }catch(Exception _e){ + _e.printStackTrace(); + return null; + }finally{ + if(_retry){ + try{ + connect(); + value = getColumn(_id,_colName,false); + }catch(TTransportException _e) { + _e.printStackTrace(); + } + } + } + + return value; + } + public void setKeyspace(String _keySpace) { m_keySpace = _keySpace; @@ -56,7 +111,6 @@ @Override public Node useContents() { - // TODO Auto-generated method stub return null; } }