Cassandraのコマンドラインツール (cassandra-cli)の実装
パッケージでいうと、org.apache.cassandra.cli。
CliMainがメイン。commons.cliつかったCLI実装。Args4jとかのほうがシンプルでいいなーというのはさておき、commons系で実装。実行部分は、CliClientでCliCompilerを使ってstatementをパースして実行。CliCompilerでは、antlr使ってCli.gというAntlrのGrammerファイルでパースして、statementを解釈。
後は、thrift clientでサーバーにつないで、上記のstatementを解釈して実行。
case文のところだけ抜き出すと、以下のような感じ。データの追加、削除などなどができるようになっている。
case CliParser.NODE_EXIT: case CliParser.NODE_THRIFT_GET: case CliParser.NODE_HELP: case CliParser.NODE_THRIFT_SET: case CliParser.NODE_THRIFT_DEL: case CliParser.NODE_THRIFT_COUNT: case CliParser.NODE_SHOW_CLUSTER_NAME: case CliParser.NODE_SHOW_CONFIG_FILE: case CliParser.NODE_SHOW_VERSION: case CliParser.NODE_SHOW_TABLES: case CliParser.NODE_DESCRIBE_TABLE: case CliParser.NODE_CONNECT: case CliParser.NODE_NO_OP:
また、jlineで補完ができるようにしたり、historyの管理とかもしてます。