org.opengion.hayabusa.taglib
クラス DirectTableInsertTag
java.lang.Object
javax.servlet.jsp.tagext.TagSupport
javax.servlet.jsp.tagext.BodyTagSupport
org.opengion.hayabusa.taglib.CommonTagSupport
org.opengion.hayabusa.taglib.DirectTableInsertTag
- すべての実装されたインタフェース:
- java.io.Serializable, javax.servlet.jsp.tagext.BodyTag, javax.servlet.jsp.tagext.IterationTag, javax.servlet.jsp.tagext.JspTag, javax.servlet.jsp.tagext.Tag, javax.servlet.jsp.tagext.TryCatchFinally
public class DirectTableInsertTag
- extends CommonTagSupport
指定のファイルを直接データベースに登録するデータ入力タグです。
通常の readTable などは、DBTableModel オブジェクトを介して全件メモリに
ロードしてから表示させる為、大量データ処理ができません。
このタグでは、直接ファイルを読み取りながらデータベース登録するので
大量データをバッチ的に登録する場合に使用します。
読み取るファイルは、先頭(または実データが現れるまでに) #NAME 行が必要です。
これは、ファイルデータのカラム名を指定しています。また、columns 属性を使用すれば、
ファイルの#NAME 行より優先して(つまり存在していなくても良い)データのカラム名を
指定することが出来ます。
この#NAME 行は、ファイルのセパレータと無関係に必ずタブ区切りで用意されています。
タグのBODY部に、実行するSQL文を記述します。
このSQL文は、
INSERT INTO GE41 (CLM,NAME_JA,SYSTEM_ID,FGJ,DYSET)
VALUES ([CLM],[NAME_JA],[SYSTEM_ID],'1','{@USER.YMDH}')
と、いう感じで、ファイルから読み込んだ値は、[カラム名]に割り当てられます。
もちろん、通常の固定値(FGJに'1'をセット)や、リクエスト変数(DYSETの{@USER.YMDH})
なども使用できます。
- 関連項目:
- 直列化された形式
- 機能階層
- ファイル入力
- 形式サンプル:
●形式:<og:directTableInsert filename="[・・・]" ・・・ >INSERT INTO ・・・ </og:directTableInsert >
●body:あり
●使用例
<og:directTableInsert
dbid = "ORCL" 接続データベースID(初期値:DEFAULT)
separator = "," ファイルの区切り文字(初期値:タブ)
fileURL = "{@USER.ID}" 読み取り元ディレクトリ名
filename = "{@filename}" 読み取り元ファイル名
encode = "Shift_JIS" 読み取り元ファイルエンコード名
displayMsg = "MSG0040" 登録完了後のメッセージ
columns = "CLM,NAME_JA,LABEL_NAME,KBSAKU,SYSTEM_ID,LANG"
#NAME の代わりに使用するカラム列名
commitBatch = "100" この件数ずつコミットを発行(初期値:無制限)
useColumnCheck = "true" カラムチェックを行うかどうか(初期値:false)
useColumnAdjust = "true" カラム変換を行うかどうか(初期値:false)
nullCheck = "CLM,SYSTEM_ID" NULLチェックを実行します。
>
<jsp:text>
INSERT INTO GE41
(CLM,NAME_JA,LABEL_NAME,KBSAKU,SYSTEM_ID,LANG,
FGJ,DYSET,DYUPD,USRSET,USRUPD,PGUPD)
VALUES
([CLM],[NAME_JA],[LABEL_NAME],[KBSAKU],[SYSTEM_ID],[LANG],
'1','{@USER.YMDH}','{@USER.YMDH}','{@USER.ID}','{@USER.ID}','{@GUI.KEY}')
</jsp:text>
</og:directTableInsert >
- バージョン
- 4.0
- 作成者
- Kazuhiko Hasegawa
- 導入されたバージョン:
- JDK5.0,
クラス javax.servlet.jsp.tagext.BodyTagSupport から継承されたフィールド |
bodyContent |
クラス javax.servlet.jsp.tagext.TagSupport から継承されたフィールド |
id, pageContext |
インタフェース javax.servlet.jsp.tagext.BodyTag から継承されたフィールド |
EVAL_BODY_BUFFERED, EVAL_BODY_TAG |
インタフェース javax.servlet.jsp.tagext.IterationTag から継承されたフィールド |
EVAL_BODY_AGAIN |
インタフェース javax.servlet.jsp.tagext.Tag から継承されたフィールド |
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE |
メソッドの概要 |
int |
doAfterBody()
Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。 |
int |
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 |
int |
doStartTag()
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。 |
protected void |
release2()
タグリブオブジェクトをリリースします。 |
void |
setColumns(java.lang.String clms)
【TAG】#NAME 属性の代わりとなるファイルのカラム名を CSV形式で指定します。 |
void |
setCommitBatch(java.lang.String cmtBat)
【TAG】指定数毎にコミットを発行します(初期値:0 終了までコミットしません)。 |
void |
setDbid(java.lang.String id)
【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT)。 |
void |
setDisplayMsg(java.lang.String id)
【TAG】query の結果を画面上に表示するメッセージIDを指定します(初期値:MSG0040[ 件登録しました])。 |
void |
setEncode(java.lang.String enc)
【TAG】ファイルを作成するときのファイルエンコーディング名をセットします(初期値:システムパラメータのFILE_ENCODE)。 |
void |
setFilename(java.lang.String filename)
【TAG】ファイルを作成するときのファイル名をセットします(初期値:システムパラメータのFILE_FILENAME)。 |
void |
setFileURL(java.lang.String url)
【TAG】読み取り元ディレクトリ名を指定します(初期値:システムパラメータのFILE_URL)。 |
void |
setNullCheck(java.lang.String clms)
【TAG】NULL チェックすべきカラム列をカンマ区切りで指定します。 |
void |
setSeparator(java.lang.String separator)
【TAG】可変長ファイルを作成するときの項目区切り文字をセットします(初期値:タブ)。 |
void |
setUseColumnAdjust(java.lang.String flag)
【TAG】カラム変換(DBType変換)を行うかどうかを設定します(初期値:false) |
void |
setUseColumnCheck(java.lang.String flag)
【TAG】カラムチェック(DBTypeチェック)を行うかどうかを設定します(初期値:false) |
java.lang.String |
toString()
このオブジェクトの文字列表現を返します。 |
クラス org.opengion.hayabusa.taglib.CommonTagSupport から継承されたメソッド |
add, add, addEventColumnSQL, check, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getLabel, getLabelInterface, getLanguage, getLongLabel, getMsglbl, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getResource, getScope, getSessionAttribute, getTagName, getUser, getUserInfo, isAjaxSubmitSession, isDebug, isNoTransitionSession, isNull, jspPrint, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitSession, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setMsglbl, setNoTransitionSession, setObject, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, setUseValue, startQueryTransaction, sys, sysBool, sysInt, useQuotCheck, useXssCheck |
クラス javax.servlet.jsp.tagext.BodyTagSupport から継承されたメソッド |
doInitBody, getBodyContent, getPreviousOut, release, setBodyContent |
クラス javax.servlet.jsp.tagext.TagSupport から継承されたメソッド |
findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue |
クラス java.lang.Object から継承されたメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
インタフェース javax.servlet.jsp.tagext.Tag から継承されたメソッド |
getParent, setPageContext, setParent |
DirectTableInsertTag
public DirectTableInsertTag()
doStartTag
public int doStartTag()
- Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
- 定義:
- インタフェース
javax.servlet.jsp.tagext.Tag
内の doStartTag
- オーバーライド:
- クラス
CommonTagSupport
内の doStartTag
- 戻り値:
- int
doAfterBody
public int doAfterBody()
- Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
- 定義:
- インタフェース
javax.servlet.jsp.tagext.IterationTag
内の doAfterBody
- オーバーライド:
- クラス
CommonTagSupport
内の doAfterBody
- 戻り値:
- int
- 変更履歴:
3.6.0.2 (2004/10/04) SQL文の [カラム] 対応とパーサー機能追加 |
3.8.6.3 (2006/11/30) SQL 文の前後のスペースを取り除きます。 |
doEndTag
public int doEndTag()
- Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
- 定義:
- インタフェース
javax.servlet.jsp.tagext.Tag
内の doEndTag
- オーバーライド:
- クラス
CommonTagSupport
内の doEndTag
- 戻り値:
- int
- 変更履歴:
4.0.0.0 (2007/10/18) メッセージリソース統合( getResource().getMessage > getResource().getLabel ) |
release2
protected void release2()
- タグリブオブジェクトをリリースします。
キャッシュされて再利用されるので、フィールドの初期設定を行います。
- オーバーライド:
- クラス
CommonTagSupport
内の release2
- 変更履歴:
3.6.0.2 (2004/10/04) useColumnCheck,useColumnAdjust 属性追加 |
3.8.0.2 (2005/06/30) nullCheck 属性追加 |
4.0.0.0 (2007/10/10) dbid の初期値を、"DEFAULT" から null に変更 |
setDbid
public void setDbid(java.lang.String id)
- 【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT)。
- パラメータ:
id
- データベース接続ID- TagLib:
検索時のDB接続IDを指定します。初期値は、DEFAULT です。 |
setSeparator
public void setSeparator(java.lang.String separator)
- 【TAG】可変長ファイルを作成するときの項目区切り文字をセットします(初期値:タブ)。
- パラメータ:
separator
- 項目区切り文字- TagLib:
可変長ファイルを作成するときの項目区切り文字をセットします。 |
setFileURL
public void setFileURL(java.lang.String url)
- 【TAG】読み取り元ディレクトリ名を指定します(初期値:システムパラメータのFILE_URL)。
- パラメータ:
url
- ファイルURL- TagLib:
この属性で指定されるディレクトリより、ファイルを読み取ります。
指定方法は、通常の fileURL 属性と同様に、先頭が、'/' (UNIX) または、2文字目が、
":" (Windows)の場合は、指定のURLそのままのディレクトリに、そうでない場合は、
システムパラメータ の FILE_URL 属性で指定のフォルダの下に、作成されます。
fileURL = "{@USER.ID}" と指定すると、FILE_URL 属性で指定のフォルダの下に、
さらに、各個人ID別のフォルダの下より、読み取ります。 |
- 変更履歴:
4.0.0 (2005/01/31) StringUtil.urlAppend メソッドの利用 |
4.0.0.0 (2007/11/20) 指定されたディレクトリ名の最後が"\"or"/"で終わっていない場合に、"/"を付加する。 |
setFilename
public void setFilename(java.lang.String filename)
- 【TAG】ファイルを作成するときのファイル名をセットします(初期値:システムパラメータのFILE_FILENAME)。
- パラメータ:
filename
- ファイル名- TagLib:
ファイルを作成するときのファイル名をセットします。
初期値は、システムパラメータ の FILE_FILENAME 属性で指定のファイル名です。 |
setEncode
public void setEncode(java.lang.String enc)
- 【TAG】ファイルを作成するときのファイルエンコーディング名をセットします(初期値:システムパラメータのFILE_ENCODE)。
- パラメータ:
enc
- ファイルエンコーディング名- 関連項目:
- IANA Charset Registry
- TagLib:
初期値は、システムパラメータ の FILE_ENCODE 属性で、設定しています。
Shift_JIS,MS932,Windows-31J,UTF-8,ISO-8859-1,UnicodeLittle・・・ |
setDisplayMsg
public void setDisplayMsg(java.lang.String id)
- 【TAG】query の結果を画面上に表示するメッセージIDを指定します(初期値:MSG0040[ 件登録しました])。
- パラメータ:
id
- ディスプレイに表示させるメッセージ ID- TagLib:
ここでは、検索結果の件数や登録された件数をまず出力し、
その次に、ここで指定したメッセージをリソースから取得して
表示します。
表示させたくない場合は, displayMsg = "" をセットしてください。
初期値は、検索件数を表示します。
※ この属性には、リクエスト変数({@XXXX})は使用できません。 |
setColumns
public void setColumns(java.lang.String clms)
- 【TAG】#NAME 属性の代わりとなるファイルのカラム名を CSV形式で指定します。
- パラメータ:
clms
- ファイルのカラム名(カンマ区切り文字)- TagLib:
データファイルの先頭行に、#NAME 行があり、読み取るべきファイルの
カラム名が記述されています。通常は、このカラム名を取り込んで、
各データ列のカラムを指定します。
この属性は、ファイルに#NAME 行が存在しない(他システムからの入力ファイル等)
場合に、#NAME 属性の代わりに、カラム名を外部より指定します。 |
- 変更履歴:
3.8.5.1 (2006/05/08) getCSVParameter の使用を中止 |
setCommitBatch
public void setCommitBatch(java.lang.String cmtBat)
- 【TAG】指定数毎にコミットを発行します(初期値:0 終了までコミットしません)。
- パラメータ:
cmtBat
- 指定数毎にコミットを発行(初期値:0)- TagLib:
通常は、全ての処理が正常に終了するか、なにもしないか(トランザクション)
を判断すべきで、途中でのコミットはしません。
しかし、場合によって、件数が異常に多い場合や、再実行可能な場合は、
途中でコミットして、都度、処理できるものだけを処理してしまうという方法があります。
また、ロールバックエリアの関係などで、データ量が多い場合に、処理時間が異常に
長くなる事があり、指定件数ごとのコミット機能を用意しています。
0 に設定すると、終了までコミットしません。初期値は、0 です。 |
setUseColumnCheck
public void setUseColumnCheck(java.lang.String flag)
- 【TAG】カラムチェック(DBTypeチェック)を行うかどうかを設定します(初期値:false)
- パラメータ:
flag
- チェックを行うかどうか(true:行う/false:行わない)- 関連項目:
setUseColumnAdjust( String )
- TagLib:
カラムの整合性チェックを行う場合、この属性を設定(true)します。
初期値は、行わない(false)です。
チェックするカラムは、#NAME や columns で指定されたカラムではなく、
BODY部のSQL文で指定されたカラム名( [カラム名] )です。これは、直接、SQL文中に
記述している値や、{@XXXX}文字等は、チェック出来ない為です。 |
- 変更履歴:
3.6.0.2 (2004/10/04) 新規追加 取り込み時全チェック |
setUseColumnAdjust
public void setUseColumnAdjust(java.lang.String flag)
- 【TAG】カラム変換(DBType変換)を行うかどうかを設定します(初期値:false)
- パラメータ:
flag
- 変換を行うかどうか(true:行う/false:行わない)- 関連項目:
setUseColumnCheck( String )
- TagLib:
カラムの変換を行う場合、この属性を設定(true)します。
初期値は、行わない(false)です。
変換するカラムは、#NAME や columns で指定されたカラムではなく、
BODY部のSQL文で指定されたカラム名[カラム名]です。これは、直接、SQL文中に
記述している値や、{@XXXX}文字等は、変換出来ない為です。 |
- 変更履歴:
3.6.0.2 (2004/10/04) 新規追加 取り込み時変換 |
setNullCheck
public void setNullCheck(java.lang.String clms)
- 【TAG】NULL チェックすべきカラム列をカンマ区切りで指定します。
- パラメータ:
clms
- String- TagLib:
nullCheck="AAA,BBB,CCC,DDD"
先に配列に分解してからリクエスト変数の値を取得するようにします。
こうする事で、リクエストにカンマ区切りの値を設定できるようになります。
分解方法は、通常のパラメータ取得後に、CSV分解します。 |
- 変更履歴:
3.8.0.2 (2005/06/30) 新規追加 |
3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSV分解に戻します。 |
toString
public java.lang.String toString()
- このオブジェクトの文字列表現を返します。
基本的にデバッグ目的に使用します。
- オーバーライド:
- クラス
CommonTagSupport
内の toString
- 戻り値:
- このクラスの文字列表現
Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.