public class TableMergeTag extends CommonTagSupport
2つの DBTableModel の 集合処理を行うタグです。
マスタとスレーブのそれぞれの DBTableModel を取得し、マージ、差分、排他などの
データ処理を行います。結果を、指定の tableId と scope に書き出します。
マスタテーブルは、masterTableId と masterScope より取り出します。スレーブテーブルは、
slaveTableId と slaveScope より取り出します。
取り出された DBTableModel は、マスタテーブルに対して、スレーブテーブル情報を参照する形で行われ、
結果はマスタテーブルに上書きされる形で行われます。
指定できるアクションは、全体集合(UNION_ALL)、和集合(UNION)、積集合(INTERSECT)、
差集合(MINUS)、差分集合(DIFFERENCE)、列合成(UNION_CLM)、 列追加(ADD_CLM)、 グループ(GROUP)です。
列合成と列追加、グループ以外の処理では、カラム順とカラム数は同数でなければなりません。
primaryKeys や unionClms などの指定のキー名は、マスタテーブルに存在する必要があります。
マスタテーブルと同じカラム番号でスレーブテーブルよりデータを読み出します。
(カラム名や属性は、異なってもかまいませんが、マスタテーブルに準拠します。)
また、単独(マスタテーブルのみ)で、和集合と同等の、グループ(GROUP)を使用すると、指定の
カラムでのユニーク化を行うことが可能になります。グループ処理では、先行優先とし、
2回目に現れた情報を削除することになります。グループ が指定された場合は、
スレーブテーブルは無視されます。いずれの処理においても、集合処理を行う主キーで
一旦グループ化されます。全体集合(UNION_ALL)で処理する場合でも、主キーがユニークで
ない場合は、マスター、スレーブの各テーブルで一旦グループ化された後で、マージされます。
(マージ後には、同一主キーを持つ行は存在します。)
全体集合(UNION_ALL)の場合のみ、mergeKeys を指定する必要はありません。その場合は、
キーなしのため、マスターとスレーブのテーブルを単に合成するだけになります。
6.9.1.0 (2018/02/26)
UNION_VAL は、スレーブテーブルの縦列を横列に割り当てるUNION_CLMの特殊版です。
処理としては、そのまま割り当てるのではなく、スレーブテーブルの縦列の値と
ヘッダーとして指定する、unionClms の値を比較して、下限値の最大値を割り当てます。
つまり、ヘッダーの値と同じか、それ以下で、最も近い値を割り当てることになります。
これは、時間的な推移を表現することになります。
masterKeys:マスタとスレーブを関連付ける共通のキーとなるカラム
slaveKeys :スレーブの縦列を横列にするための、キーと値のカラム
unionClms :横列にするカラム名。この値とスレーブのキーと比較してセットするかどうかを決めます。
処理前後でのDBTableModelの件数は、以下の変数で取得することが可能です。
処理前のマスターテーブル : {@DB.MASTER_COUNT}
処理前のスレーブテーブル : {@DB.SLAVE_COUNT}
処理後 : {@DB.COUNT} ●形式:
・<og:tableMerge
action = "UNION_ALL|UNION|INTERSECT|MINUS|DIFFERENCE|UNION_CLM|UNION_VAL|ADD_CLM|GROUP|UNION_SELROW|CDKH|TABLE_REMOVE"
tableId = "DEFAULT" 出力テーブルの tableId
scope = "session" 出力テーブルの scope
masterTableId = "DEFAULT" マスタテーブルの tableId
masterScope = "session" マスタテーブルの scope
slaveTableId = "DEFAULT" スレーブテーブルの tableId
slaveScope = "request" スレーブテーブルの scope
masterKeys = "AA,BB,CC" マスタテーブルの集合処理を行う主キー
slaveKeys = "AA,BB,CC" スレーブテーブルの集合処理を行う主キー(null時=masterKeys)
diffKeys = "DD,EE" マスタテーブルのDIFFERENCE時の差分カラム名
unionClms = "DD,EE" UNION_CLM,ADD_CLM時にスレーブからマスタへ追加するカラム名
unionLbls = "dd,ee" UNION_CLM,ADD_CLM時にスレーブからマスタへ追加するカラムのラベル名 6.9.1.0 (2018/02/26)
modifyClms = "FF,GG" DIFFERENCE,CDKH時にスレーブからマスタへ値を更新するカラム名
noSideEffect = "false" テーブルモデルに対する副作用(true:ない/false:ある)
useDiffData = "true" DIFFERENCE時に差分のスレーブデータを追加するかどうか
useCheckOnly = "false" マスタテーブルの選択行のデータのみを対象に処理を行うかどうか
groupAddClms = "FF,GG" masterKeysで集合処理するときに、相違データをCSV連結して残すカラム名
display = "true" 処理概要を表示するかどうか
/>
●body:なし
●Tag定義:
<og:tableMerge
command 【TAG】コマンド (NEW,RENEW)をセットします(初期値:NEW)
action 【TAG】アクションを指定します(UNION_ALL|UNION|INTERSECT|MINUS|DIFFERENCE|UNION_CLM|UNION_VAL|ADD_CLM|GROUP|UNION_SELROW|CDKH|TABLE_REMOVE)
tableId 【TAG】出力先のtableIdを指定します (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])
scope 【TAG】出力先のscopeを指定します(初期値:session)
masterTableId 【TAG】マスタテーブルのtableIdを指定します (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])
masterScope 【TAG】マスタテーブルのscopeを指定します(初期値:session)
slaveTableId 【TAG】スレーブテーブルのtableIdを指定します (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])
slaveScope 【TAG】スレーブテーブルのscopeを指定します(初期値:session)
masterKeys 【TAG】マスタテーブルの集合処理を行う主キーを指定します
slaveKeys 【TAG】スレーブテーブルの集合処理を行う主キーを指定します
diffKeys 【TAG】マスタテーブルのDIFFERENCE時の差分カラム名を(CSV形式)指定します
unionClms 【TAG】スレーブからマスタへ追加するカラム名をCSV形式で指定します
unionLbls 【TAG】スレーブからマスタへ追加するラベルをCSV形式で指定します 6.9.1.0 (2018/02/26)
nullDelClms 【TAG】指定の値がすべてnull(空文字列)の場合、レコードを削除するカラムをCSV形式で指定します
useSlaveLoop 【TAG】scope="request" のスレーブテーブルを、ループ処理して使用します(action="TABLE_REMOVE" と、"UNION_CLM" で、利用します)
modifyClms 【TAG】DIFFERENCE,CDKH時にスレーブからマスタへ値を更新するカラム名をCSV形式で指定します
groupAddClms 【TAG】集合処理するときに、相違データをCSV連結して残すカラム名をCSV形式で指定します
noSideEffect 【TAG】テーブルモデルに対する副作用の有無[true:ない/false:ある]を指定します(初期値:false:ある)
useDiffData 【TAG】差分のスレーブデータを結果テーブルに追加するかどうかを指定します(初期値:true)
useCheckOnly 【TAG】マスタテーブルの選択行のデータのみを対象に処理を行うかどうかを指定します(初期値:false)
stopZero 【TAG】検索結果が0件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する])
display 【TAG】マージの結果を表示するかどうかを指定します(初期値:true)
mainTrans 【TAG】(通常は使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:false)
caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null)
caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null)
caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない)
caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない)
caseIf 【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない)
separator 【TAG】groupAddClmsで文字列を連結する項目区切り文字をセットします(初期値:",")
debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
/>
●使用例
例1)デフォルト以外に必要な属性のみ指定するサンプル
<og:tableMerge action="UNION"
slaveScope = "request" masterKeys = "AA,BB,CC"
/>
・出力先、マスターともに初期値は、tableId="DEFAULT" scope="session" です。
スレーブは、tableId か scope をける必要がある為、scope="request" を指定しています。
比較するカラム名は、マスタ、スレーブ同じであれば、マスタのみ指定でかまいません。
例2)マスタ、スレーブともメモリに残らないように request で作成します。
<og:tableMerge action="INTERSECT"
masterScope = "request"
slaveScope = "request"
slaveTableId = "SLAVE"
masterKeys = "AA,BB,CC"
/>
・マスタ、スレーブともメモリに残らないように request で作成した場合は、
どちらかの TableId を変える必要があります。
出力先は初期値の、tableId="DEFAULT" scope="session" です。| 修飾子とタイプ | フィールドと説明 |
|---|---|
static java.lang.String |
ACT_ADD_CLM
action 引数に渡す事の出来る アクションコマンド 列合成"ADD_CLM"
|
static java.lang.String |
ACT_CDKH
action 引数に渡す事の出来る アクションコマンド 改廃コード "CDKH"
|
static java.lang.String |
ACT_DIFFERENCE
action 引数に渡す事の出来る アクションコマンド 差分集合"DIFFERENCE"
|
static java.lang.String |
ACT_GROUP
action 引数に渡す事の出来る アクションコマンド グループ "GROUP"
|
static java.lang.String |
ACT_INTERSECT
action 引数に渡す事の出来る アクションコマンド 積集合 "INTERSECT"
|
static java.lang.String |
ACT_MINUS
action 引数に渡す事の出来る アクションコマンド 差集合"MINUS"
|
static java.lang.String |
ACT_TABLE_REMOVE
action 引数に渡す事の出来る アクションコマンド DBTableModelの削除 "TABLE_REMOVE"
|
static java.lang.String |
ACT_UNION
action 引数に渡す事の出来る アクションコマンド 和集合 "UNION"
|
static java.lang.String |
ACT_UNION_ALL
action 引数に渡す事の出来る アクションコマンド 全体集合 "UNION_ALL"
|
static java.lang.String |
ACT_UNION_CLM
action 引数に渡す事の出来る アクションコマンド 列合成"UNION_CLM"
|
static java.lang.String |
ACT_UNION_SELROW
action 引数に渡す事の出来る アクションコマンド グループ "UNION_SELROW"
|
static java.lang.String |
ACT_UNION_VAL
action 引数に渡す事の出来る アクションコマンド 列合成"UNION_VAL"
|
static java.lang.String |
CMD_NEW
command 引数に渡す事の出来る コマンド 新規 "NEW"
|
static java.lang.String |
CMD_RENEW
command 引数に渡す事の出来る コマンド 再検索 "RENEW"
|
BR, BUFFER_MIDDLE, CRbodyContentid, pageContextEVAL_BODY_BUFFERED, EVAL_BODY_TAGEVAL_BODY_AGAINEVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE| コンストラクタと説明 |
|---|
TableMergeTag()
デフォルトコンストラクター
|
| 修飾子とタイプ | メソッドと説明 |
|---|---|
int |
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
|
protected void |
release2()
タグリブオブジェクトをリリースします。
|
void |
setAction(java.lang.String action)
【TAG】アクションを指定します[UNION_ALL/UNION/INTERSECT/MINUS/DIFFERENCE/UNION_CLM/UNION_VAL/ADD_CLM/GROUP/UNION_SELROW/CDKH/TABLE_REMOVE]。
|
void |
setCommand(java.lang.String cmd)
【TAG】コマンド (NEW,RENEW)をセットします(初期値:NEW)。
|
void |
setDiffKeys(java.lang.String diffKeys)
【TAG】マスタテーブルのDIFFERENCE時の差分カラム名を(CSV形式)指定します。
|
void |
setDisplay(java.lang.String flag)
【TAG】マージの結果を表示するかどうか[true:する/false:しない]を指定します(初期値:true)。
|
void |
setGroupAddClms(java.lang.String groupAddClms)
【TAG】集合処理するときに、相違データをCSV連結して残すカラム名をCSV形式で指定します。
|
void |
setMainTrans(java.lang.String flag)
【TAG】(通常は使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:true)。
|
void |
setMasterKeys(java.lang.String masterKeys)
【TAG】マスタテーブルの集合処理を行う主キーを指定します。
|
void |
setMasterScope(java.lang.String masterScope)
【TAG】マスタテーブルのscopeを指定します(初期値:session)。
|
void |
setMasterTableId(java.lang.String masterTableId)
【TAG】マスタテーブルのtableIdを指定します
(初期値:HybsSystem#TBL_MDL_KEY[=])。
|
void |
setModifyClms(java.lang.String modifyClms)
【TAG】スレーブからマスタへ値を更新するカラム名をCSV形式で指定します。
|
void |
setNoSideEffect(java.lang.String noSideEffect)
【TAG】テーブルモデルに対する副作用の有無[true:ない/false:ある]を指定します(初期値:false:ある)。
|
void |
setNullDelClms(java.lang.String nullDelClms)
【TAG】指定の値がすべてnull(空文字列)の場合、レコードを削除するカラムをCSV形式で指定します。
|
void |
setScope(java.lang.String scope)
【TAG】出力先のscopeを指定します(初期値:session)。
|
void |
setSeparator(java.lang.String sepa)
【TAG】groupAddClmsで文字列を連結する項目区切り文字をセットします(初期値:",")。
|
void |
setSlaveKeys(java.lang.String slaveKeys)
【TAG】スレーブテーブルの集合処理を行う主キーを指定します。
|
void |
setSlaveScope(java.lang.String slaveScope)
【TAG】スレーブテーブルのscopeを指定します(初期値:session)。
|
void |
setSlaveTableId(java.lang.String slaveTableId)
【TAG】スレーブテーブルのtableIdを指定します
(初期値:HybsSystem#TBL_MDL_KEY[=])。
|
void |
setStopZero(java.lang.String flag)
【TAG】検索結果が0件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
|
void |
setTableId(java.lang.String id)
【TAG】出力先のtableIdを指定します
(初期値:HybsSystem#TBL_MDL_KEY[=])。
|
void |
setUnionClms(java.lang.String unionClms)
【TAG】スレーブからマスタへ追加するカラム名をCSV形式で指定します。
|
void |
setUnionLbls(java.lang.String unionLbls)
【TAG】スレーブからマスタへ追加するラベルをCSV形式で指定します。
|
void |
setUseCheckOnly(java.lang.String flag)
【TAG】マスタテーブルの選択行のデータのみを対象に処理を行うかどうか[true:する/false:しない]を指定します(初期値:false)。
|
void |
setUseDiffData(java.lang.String flag)
【TAG】差分のスレーブデータを結果テーブルに追加するかどうかを指定します(初期値:true)。
|
void |
setUseSlaveLoop(java.lang.String flag)
【TAG】scope="request" のスレーブテーブルをループして使用するかどうか[true/false]を指定します(初期値:false[使用しない])。
|
java.lang.String |
toString()
このオブジェクトの文字列表現を返します。
|
add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doAfterBody, doCatch, doFinally, doStartTag, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsg, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getSumRequestValue, getTagName, getTransaction, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, makeUrl, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseIf, setCaseKey, setCaseNN, setCaseNull, setCaseVal, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setNoTransitionRequest, setObject, setObject, setParameterNames, setParameterRows, setRequestAttribute, setRequestCacheData, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, useTag, useXssCheckdoInitBody, getBodyContent, getPreviousOut, release, setBodyContentfindAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValueclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetParent, setPageContext, setParentpublic static final java.lang.String ACT_UNION_ALL
public static final java.lang.String ACT_UNION
public static final java.lang.String ACT_INTERSECT
public static final java.lang.String ACT_MINUS
public static final java.lang.String ACT_DIFFERENCE
public static final java.lang.String ACT_UNION_CLM
public static final java.lang.String ACT_UNION_VAL
public static final java.lang.String ACT_ADD_CLM
public static final java.lang.String ACT_GROUP
public static final java.lang.String ACT_UNION_SELROW
public static final java.lang.String ACT_CDKH
public static final java.lang.String ACT_TABLE_REMOVE
public static final java.lang.String CMD_NEW
public static final java.lang.String CMD_RENEW
public TableMergeTag()
public int doEndTag()
doEndTag インタフェース内 TagdoEndTag クラス内 CommonTagSupportprotected void release2()
release2 クラス内 CommonTagSupportpublic void setCommand(java.lang.String cmd)
cmd - コマンド (public static final 宣言されている文字列)public void setAction(java.lang.String action)
action - アクション [UNION_ALL/UNION/INTERSECT/MINUS/DIFFERENCE/UNION_CLM/ADD_CLM/GROUP/UNION_SELROW/CDKH]| action | 名称 | 処理概要 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|---|
| UNION_ALL | 全体集合 | マスタとスレーブを合成 | ○ | ○ | ||
| UNION | 和集合 | マスタとスレーブのユニーク部のみ合成 | ○ | ○ | ||
| INTERSECT | 積集合 | マスタとスレーブのユニーク部が一致するマスタのみ選択 | ○ | ○ | ||
| MINUS | 差集合 | マスタからスレーブに存在するユニーク部を削除した残り | ○ | ○ | ||
| DIFFERENCE | 差分集合 | ユニーク部が一致し、差分カラムが異なるマスタのみ選択 | ○ | ○ | ○ | |
| UNION_CLM | 列合成 | マスタとキー一致するスレーブのカラム情報を追加 | ○ | ○ | ○ | |
| UNION_VAL | 値列合成 | マスタとキー一致するスレーブの縦列をカラムに追加 | ○ | ○ | ○ | |
| ADD_CLM | 列追加 | UNION_CLMとの違いは、カラムのみ追加することです。 | ○ | |||
| GROUP | グループ | マスタのユニーク部化 | ||||
| UNION_SELROW | 全体集合 | マスタとスレーブを合成(マスタ表のチェック行を起点に追加 | ○ | |||
| CDKH | 改廃CD | 改廃コードを設定 | ○ | ○ | ○ | |
| TABLE_REMOVE | TBL削除 | マスタテーブルオブジェクトを無条件で、削除します | ||||
public void setTableId(java.lang.String id)
id - テーブルID (sessionに登録する時のID)HybsSystem.TBL_MDL_KEYpublic void setScope(java.lang.String scope)
setScope クラス内 CommonTagSupportscope - 出力先のscopeCommonTagSupport.getScope()public void setMasterTableId(java.lang.String masterTableId)
masterTableId - マスタテーブルIDHybsSystem.TBL_MDL_KEYpublic void setMasterScope(java.lang.String masterScope)
masterScope - マスタスコープpublic void setMasterKeys(java.lang.String masterKeys)
masterKeys - マスタテーブル主キー (CSV形式)public void setSlaveKeys(java.lang.String slaveKeys)
slaveKeys - スレーブ主キー (CSV形式)public void setDiffKeys(java.lang.String diffKeys)
diffKeys - 差分カラム名 (CSV形式)setMasterKeys( String )public void setSlaveTableId(java.lang.String slaveTableId)
slaveTableId - スレーブテーブルIDHybsSystem.TBL_MDL_KEYpublic void setSlaveScope(java.lang.String slaveScope)
slaveScope - スレーブスコープpublic void setUnionClms(java.lang.String unionClms)
unionClms - 列合成カラム名 (CSV形式)public void setUnionLbls(java.lang.String unionLbls)
unionLbls - 列合成カラム名 (CSV形式)public void setNullDelClms(java.lang.String nullDelClms)
nullDelClms - null(空文字列)の場合、レコードを削除するカラムをCSV形式で指定public void setModifyClms(java.lang.String modifyClms)
modifyClms - 値更新カラム名 (CSV形式)public void setGroupAddClms(java.lang.String groupAddClms)
groupAddClms - 相違データCSV連結 (CSV形式)public void setNoSideEffect(java.lang.String noSideEffect)
noSideEffect - 処理結果副作用 [true:ない/false:ある]public void setUseDiffData(java.lang.String flag)
flag - 差分追加 [true:追加する/false:追加しない]public void setUseCheckOnly(java.lang.String flag)
flag - 選択行のみ対象 [true:選択行のみ/false:全件]public void setDisplay(java.lang.String flag)
flag - 結果表示 [true:する/false:しない]public void setStopZero(java.lang.String flag)
flag - 0件時停止 [true:処理を中止する/false:続行する]public void setUseSlaveLoop(java.lang.String flag)
flag - スレーブテーブルをループして使用するかどうか [true:使用する/false:使用しない]public void setMainTrans(java.lang.String flag)
flag - メイントランザクションかどうか [true:メイン/false:その他]public void setSeparator(java.lang.String sepa)
sepa - 項目区切り文字 (初期値:",")public java.lang.String toString()
toString クラス内 CommonTagSupportWebアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.