VTLにいろいろやらせる

VTLを似非拡張してExcel→ソース生成をやらせてみる。

テンプレートがこんな感じ


$_sys.load("su", "org.apache.commons.lang.StringUtils")
$_sys.load("cu", "org.apache.commons.lang.ClassUtils")
$_xls.read("book", "C:/eclipse/workspace/xlsgen/etc/bean.xls")
#foreach($sheet in $book.sheets)
public class $sheet.name {

#foreach($row in $sheet.rows(1))
#set($name = "$row.cell(0)")
#set($cname = $su.capitalize($name))
#set($type = "$row.cell(1)")
#set($stype = $cu.getShortClassName($type))
#set($desc = "$row.cell(2)")
private $type $name;

/**
* ${desc}を取得する。
*
* @return ${desc}
*/
public $stype get${cname}() {
return $name;
}

/**
* ${desc}をセットする。
*
* param $name $desc
*/
public void set${cname}($stype $name) {
this.$name = $name;
}

#end
}
$_file.out("${sheet.name}.java")
#end

エクセルがこんな感じ。

プロパティ名説明
foojava.lang.Stringふー
barjava.lang.Stringばー

出力ファイルがこんな感じ。


public class Hoge {

private java.lang.String foo;

/**
* ふーを取得する。
*
* @return ふー
*/
public String getFoo() {
return foo;
}

/**
* ふーをセットする。
*
* param foo ふー
*/
public void setFoo(String foo) {
this.foo = foo;
}

private java.lang.String bar;

/**
* ばーを取得する。
*
* @return ばー
*/
public String getBar() {
return bar;
}

/**
* ばーをセットする。
*
* param bar ばー
*/
public void setBar(String bar) {
this.bar = bar;
}

}

スクリプト言語を使えって話かも。
Groovyとか使ったほうが簡単かなぁ…