Groovyでささっと書いたSQLを簡単に整形(クリップボード連携機能付き)
はじめに
コーディングしたSQLを整形するツールはたくさんありますが、今回はフリーのJavaライブラリを使用して整形してみました。
前提情報
以下のJavaライブラリを利用しました。
- blancoSqlFormatter - SQL整形ライブラリ
- こちらのサイトの作者さん、 同じ職場の方 です。
- 向こうは僕のこと見たことあるだろうけど、覚えてないんだろうなぁ。
機能
- クリップボードからSQLを抜き出します。
- 抜き出したSQLを整形します。
- 再度クリップボードに反映します。
ソースコード
GClipBoard.groovy
クリップボード操作用のクラスを作りました。
import java.awt.Toolkit
import java.awt.datatransfer.Clipboard
import java.awt.datatransfer.DataFlavor
import java.awt.datatransfer.StringSelection
import java.awt.datatransfer.Transferable
import java.awt.datatransfer.UnsupportedFlavorException
import java.io.IOException
/**
* @author genzou
*
* クリップボード情報を管理するクラスです。
*/
public class GClipBoard {
/** クリップボード */
def clipboard = Toolkit.getDefaultToolkit().getSystemClipboard()
/**
* クリップボードに、文字列をセットします。
*
* @param sendStr
* セットする文字列
*/
public void setText(sendStr) {
def ss = new StringSelection(sendStr)
clipboard.setContents(ss, ss)
}
/**
* クリップボードに含まれている文字列を取り出します。
*
* @return String 取得した文字列
*/
public getText() {
Transferable recive = clipboard.getContents(null)
def recieveStr = null
try {
recieveStr = (String) recive.getTransferData(DataFlavor.stringFlavor)
} catch (UnsupportedFlavorException e) {
recieveStr = ""
} catch (IOException e) {
recieveStr = ""
}
return recieveStr
}
}
arraignmentSql.groovy
こちらがコマンドラインから叩くフックポイント用のスクリプト。
import blanco.commons.sql.format.BlancoSqlFormatter
import blanco.commons.sql.format.BlancoSqlRule
clip = new GClipBoard()
def formatter = new BlancoSqlFormatter(new BlancoSqlRule())
clip.text = formatter.format(clip.text)
使い方
コマンドラインから以下のように実行します。
2点注意。
GClipBoard.groovy
を環境変数$CLASSPATH
の通ったディレクトリに配置- Javaライブラリ
blancosqlformatter-0.0.4.jar
に環境変数$CLASSPATH
を通す
環境変数 $CLASSPATH
の設定が面倒な場合は、 -cp
オプションを設定しても構いません。
$ groovy -cp .:blancoSqlFormatter/blancosqlformatter-0.0.4.jar arraignmentSql.groovy
ひとこと
最近はGrailsが楽しくて仕方ないです。Railsでは、あんなに簡単にWEBシステムの開発ができていたんでしょうね!
Grailsの投稿もしたい。
ディスカッション
コメント一覧
まだ、コメントがありません