openGionopenGion
5.6.7.0

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}) なども使用できます。 ※ このタグは、Transaction タグの対象です。

関連項目:
直列化された形式
形式サンプル:
 ●形式:<og:directTableInsert filename="[・・・]" ・・・ >INSERT INTO ・・・ </og:directTableInsert >
 ●body:あり

 ●Tag定義:
   <og:directTableInsert
       fileURL            【TAG】読み取り元ディレクトリ名を指定します (初期値:FILE_URL[=filetemp/])
       filename           【TAG】ファイルを作成するときのファイル名をセットします (初期値:FILE_FILENAME[=file.xls])
       encode             【TAG】ファイルを作成するときのファイルエンコーディング名をセットします (初期値:FILE_ENCODE[=UnicodeLittle])
       separator          【TAG】可変長ファイルを作成するときの項目区切り文字をセットします(初期値:タブ)
       displayMsg         【TAG】query の結果を画面上に表示するメッセージIDを指定します(初期値:MSG0040[ 件登録しました])
       columns            【TAG】#NAME 属性の代わりとなるファイルのカラム名を CSV形式で指定します
       commitBatch        【TAG】指定数毎にコミットを発行します(初期値:0 終了までコミットしません)
       useColumnAdjust    【TAG】カラム変換(DBType変換)を行うかどうかを設定します(初期値:false)
       useColumnCheck     【TAG】カラムチェック(DBTypeチェック)を行うかどうかを設定します(初期値:false)
       nullCheck          【TAG】NULL チェックすべきカラム列をカンマ区切り(CSV形式)で指定します
       dbid               【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT)
       skipRowCount       【TAG】データの読み飛ばし件数を設定します(初期値:0)
       debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
   >   ... Body ...
   </og:directTableInsert>

 ●使用例
     <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チェックを実行します。
     >
          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}')
     </og:directTableInsert >
機能分類
ファイル入力
バージョン
4.0
作成者
Kazuhiko Hasegawa
導入されたバージョン:
JDK5.0,

入れ子のクラスの概要
(package private) static class DirectTableInsertTag.CheckColumnData
          カラム変換、カラムチェックを行う内部クラス
 
フィールドの概要
 
クラス 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
 
コンストラクタの概要
DirectTableInsertTag()
           
 
メソッドの概要
 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[=UnicodeLittle])。
 void setFilename(java.lang.String filename)
          【TAG】ファイルを作成するときのファイル名をセットします (初期値:FILE_FILENAME[=file.xls])。
 void setFileURL(java.lang.String url)
          【TAG】読み取り元ディレクトリ名を指定します (初期値:FILE_URL[=filetemp/])。
 void setNullCheck(java.lang.String clms)
          【TAG】NULL チェックすべきカラム列をカンマ区切り(CSV形式)で指定します。
 void setSeparator(java.lang.String separator)
          【TAG】可変長ファイルを作成するときの項目区切り文字をセットします(初期値:タブ)。
 void setSkipRowCount(java.lang.String count)
          【TAG】取り込み時に除外する行を指定します(初期値:0)。
 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, addEventColumn, addEventColumn, check, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLongLabel, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getTagName, getUser, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseKey, setCaseNN, setCaseVal, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setNoTransitionRequest, setObject, setObject, setParameterNames, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, useTag, 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
戻り値:
後続処理の指示( EVAL_BODY_BUFFERED )

doAfterBody

public int doAfterBody()
Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。

定義:
インタフェース javax.servlet.jsp.tagext.IterationTag 内の doAfterBody
オーバーライド:
クラス CommonTagSupport 内の doAfterBody
戻り値:
後続処理の指示(SKIP_BODY)
変更履歴:
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
戻り値:
後続処理の指示
変更履歴:
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 に変更
5.5.7.1 (2012/10/05) skipRowCount追加

setDbid

public void setDbid(java.lang.String id)
【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT)。

パラメータ:
id - データベース接続ID
説明:
 検索時のDB接続IDを指定します。初期値は、DEFAULT です。

setSeparator

public void setSeparator(java.lang.String separator)
【TAG】可変長ファイルを作成するときの項目区切り文字をセットします(初期値:タブ)。

パラメータ:
separator - 項目区切り文字
説明:
 可変長ファイルを作成するときの項目区切り文字をセットします。

setFileURL

public void setFileURL(java.lang.String url)
【TAG】読み取り元ディレクトリ名を指定します (初期値:FILE_URL[=filetemp/])。

パラメータ:
url - ファイルURL
関連項目:
SystemData.FILE_URL
説明:
 この属性で指定されるディレクトリより、ファイルを読み取ります。
 指定方法は、通常の fileURL 属性と同様に、先頭が、'/' (UNIX) または、2文字目が、
 ":" (Windows)の場合は、指定のURLそのままのディレクトリに、そうでない場合は、
 fileURL = "{@USER.ID}" と指定すると、FILE_URL 属性で指定のフォルダの下に、
 さらに、各個人ID別のフォルダの下より、読み取ります。
 (初期値:システム定数のFILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])。
変更履歴:
4.0.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[=file.xls])。

パラメータ:
filename - ファイル名
関連項目:
SystemData.FILE_FILENAME
説明:
 ファイルを作成するときのファイル名をセットします。
 (初期値:システム定数のFILE_FILENAME[={@og.value org.opengion.hayabusa.common.SystemData#FILE_FILENAME}])。

setEncode

public void setEncode(java.lang.String enc)
【TAG】ファイルを作成するときのファイルエンコーディング名をセットします (初期値:FILE_ENCODE[=UnicodeLittle])。

パラメータ:
enc - ファイルエンコーディング名
関連項目:
IANA Charset Registry, SystemData.FILE_ENCODE
説明:
 初期値は、システムパラメータ の FILE_ENCODE 属性で、設定しています。
 Shift_JIS,MS932,Windows-31J,UTF-8,ISO-8859-1,UnicodeLittle・・・
 (初期値:システム定数のFILE_ENCODE[={@og.value org.opengion.hayabusa.common.SystemData#FILE_ENCODE}])。

setDisplayMsg

public void setDisplayMsg(java.lang.String id)
【TAG】query の結果を画面上に表示するメッセージIDを指定します(初期値:MSG0040[ 件登録しました])。

パラメータ:
id - ディスプレイに表示させるメッセージ ID
説明:
 ここでは、検索結果の件数や登録された件数をまず出力し、
 その次に、ここで指定したメッセージをリソースから取得して
 表示します。
 表示させたくない場合は, displayMsg = "" をセットしてください。
 初期値は、検索件数を表示します。
 ※ この属性には、リクエスト変数({@XXXX})は使用できません。

setColumns

public void setColumns(java.lang.String clms)
【TAG】#NAME 属性の代わりとなるファイルのカラム名を CSV形式で指定します。

パラメータ:
clms - ファイルのカラム名(カンマ区切り文字)
説明:
 データファイルの先頭行に、#NAME 行があり、読み取るべきファイルの
 カラム名が記述されています。通常は、このカラム名を取り込んで、
 各データ列のカラムを指定します。
 この属性は、ファイルに#NAME 行が存在しない(他システムからの入力ファイル等)
 場合に、#NAME 属性の代わりに、カラム名を外部より指定します。
変更履歴:
3.8.5.1 (2006/05/08) getCSVParameter の使用を中止

setCommitBatch

public void setCommitBatch(java.lang.String cmtBat)
【TAG】指定数毎にコミットを発行します(初期値:0 終了までコミットしません)。

パラメータ:
cmtBat - 指定数毎にコミットを発行(初期値:0)
説明:
 通常は、全ての処理が正常に終了するか、なにもしないか(トランザクション)
 を判断すべきで、途中でのコミットはしません。
 しかし、場合によって、件数が異常に多い場合や、再実行可能な場合は、
 途中でコミットして、都度、処理できるものだけを処理してしまうという方法があります。
 また、ロールバックエリアの関係などで、データ量が多い場合に、処理時間が異常に
 長くなる事があり、指定件数ごとのコミット機能を用意しています。
 0 に設定すると、終了までコミットしません。初期値は、0 です。

setUseColumnCheck

public void setUseColumnCheck(java.lang.String flag)
【TAG】カラムチェック(DBTypeチェック)を行うかどうかを設定します(初期値:false)。

パラメータ:
flag - チェックを行うかどうか(true:行う/false:行わない)
関連項目:
setUseColumnAdjust( String )
説明:
 カラムの整合性チェックを行う場合、この属性を設定(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 )
説明:
 カラムの変換を行う場合、この属性を設定(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 チェックすべきカラム列をカンマ区切り(CSV形式)で指定します。

パラメータ:
clms - カラム列(CSV形式)
説明:
 nullCheck="AAA,BBB,CCC,DDD"
 先に配列に分解してからリクエスト変数の値を取得するようにします。
 こうする事で、リクエストにカンマ区切りの値を設定できるようになります。
 分解方法は、通常のパラメータ取得後に、CSV分解します。
変更履歴:
3.8.0.2 (2005/06/30) 新規追加
3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSV分解に戻します。

setSkipRowCount

public void setSkipRowCount(java.lang.String count)
【TAG】取り込み時に除外する行を指定します(初期値:0)。

パラメータ:
count - 先頭行を無視するかどうか(true:無視する/false:無視しない)
説明:
 TAB区切りテキストやEXCEL等のデータの読み始めの初期値を指定します。
 ファイルの先頭行が、0行としてカウントしますので、設定値は、読み飛ばす
 件数になります。(1と指定すると、1件読み飛ばし、2行目から読み込みます。)
 読み飛ばしは、コメント行などは、無視しますので、実際の行数分読み飛ばします。
 #NAME属性や、columns 属性は、有効です。
変更履歴:
5.5.7.1 (2012/10/05) 新規追加

toString

public java.lang.String toString()
このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。

オーバーライド:
クラス CommonTagSupport 内の toString
戻り値:
このクラスの文字列表現

openGion 5.6.7.0

Webアプリケーションフレームワーク openGion
SourceForge.JPCopyright (c) 2009 The openGion Project.