velocity使ってCREATE文をつくりたい その1
2015/01/04
java
velocity
javaです。velocityです。
velocity使ってCREATE文をつくりたいです。
いろいろ模索中。以前、エクセルファイルから読み込んだ定義でDDLを作成するツールを作ったのですが、あまり納得いってなくて、また挑戦中。
出来上がるのが以下のようなDDL文。
プログラマメモ2: velocityのいけていないところ - getter,setterはもういらない?
を使ったから。
とりあえず。
velocity使ってCREATE文をつくりたいです。
いろいろ模索中。以前、エクセルファイルから読み込んだ定義でDDLを作成するツールを作ったのですが、あまり納得いってなくて、また挑戦中。
import java.util.LinkedList;
import java.util.List;
public class Table {
// テーブル基本
/** 和名 */
public String wname;
/** 記号名 */
public String kname;
public final List<Col> cols = new LinkedList<>();
}
public class Col {
// テーブル詳細
public String kname;
public String wamei;
public String kata;
public String size1;
public String size2;
public String notnull;
public String defaultVal;
public String pk;
public String uq;
public String index;
}
CREATE
TABLE IF NOT EXISTS ${table.kname}
(
#foreach( $col in $cols )
#set( $size1 = ${col.size1} )
#set( $size2 = ${col.size2} )
#if( ${col.size1} && ${col.size2})
${col.kname} ${col.kata} (${col.size1}, ${col.size2})#elseif( ${col.size1} && !${col.size2} )
${col.kname} ${col.kata} (${col.size1})#else
${col.kname} ${col.kata} #end
#if( ${col.defaultVal} ) DEFAULT ${col.defaultVal} #end
#if( ${col.notnull} ) NOT NULL #end
#if( $velocityHasNext ),#else #end
#end
#set( $out = true )
#foreach( $col in $cols )#if( $col.uq )#if( $out ), UNIQUE(#end#if( !$out ),#end${col.kname}#set( $out = false )#end#if( !$out && !$velocityHasNext ))
#end#end
#set( $out = true )
#foreach( $col in $cols )#if( $col.pk )#if( $out ), PRIMARY KEY(#end#if( !$out ),#end${col.kname}#set( $out = false )#end#if( !$out && !$velocityHasNext ))
#end#end
);
出来上がるのが以下のようなDDL文。
CREATEそれで、getter,setterなしのJavaでうまくいってるのは、前回作成した、
TABLE IF NOT EXISTS TEST_TBL
(
A DECIMAL (3, 2) NOT NULL ,
B VARCHAR2 (10) NOT NULL ,
C CHAR (10)
, UNIQUE(B)
, PRIMARY KEY(A,C)
);
プログラマメモ2: velocityのいけていないところ - getter,setterはもういらない?
を使ったから。
とりあえず。
: