org.opengion.hayabusa.taglib

## クラス TableMergeTag

- java.lang.Object
- - javax.servlet.jsp.tagext.TagSupport
  - - javax.servlet.jsp.tagext.BodyTagSupport
    - - org.opengion.hayabusa.taglib.CommonTagSupport
      - - org.opengion.hayabusa.taglib.TableMergeTag

- すべての実装されたインタフェース:
    java.io.Serializable, BodyTag, IterationTag, JspTag, Tag, TryCatchFinally

      public class TableMergeTag
      extends CommonTagSupport

       ２つの DBTableModel の 集合処理を行うタグです。

       マスタとスレーブのそれぞれの DBTableModel を取得し、マージ、差分、排他などの
       データ処理を行います。結果を、指定の tableId と scope に書き出します。
       マスタテーブルは、masterTableId と masterScope より取り出します。スレーブテーブルは、
       slaveTableId と slaveScope より取り出します。
       取り出された DBTableModel は、マスタテーブルに対して、スレーブテーブル情報を参照する形で行われ、
       結果はマスタテーブルに上書きされる形で行われます。
       指定できるアクションは、全体集合(UNION_ALL)、和集合(UNION)、積集合(INTERSECT)、
       差集合(MINUS)、差分集合(DIFFERENCE)、列合成(UNION_CLM)、 列追加(ADD_CLM)、 グループ(GROUP)です。
       列合成と列追加、グループ以外の処理では、カラム順とカラム数は同数でなければなりません。
       primaryKeys や unionClms などの指定のキー名は、マスタテーブルに存在する必要があります。
       マスタテーブルと同じカラム番号でスレーブテーブルよりデータを読み出します。
       (カラム名や属性は、異なってもかまいませんが、マスタテーブルに準拠します。)
       また、単独(マスタテーブルのみ)で、和集合と同等の、グループ(GROUP)を使用すると、指定の
       カラムでのユニーク化を行うことが可能になります。グループ処理では、先行優先とし、
       ２回目に現れた情報を削除することになります。グループ が指定された場合は、
       スレーブテーブルは無視されます。いずれの処理においても、集合処理を行う主キーで
       一旦グループ化されます。全体集合(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】検索結果が０件のとき処理を続行するかどうか[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)
           />

         ●使用例
             例１)デフォルト以外に必要な属性のみ指定するサンプル
             <og:tableMerge action="UNION"
                   slaveScope = "request" masterKeys = "AA,BB,CC"
             />

                 ・出力先、マスターともに初期値は、tableId="DEFAULT" scope="session" です。
                   スレーブは、tableId か scope をける必要がある為、scope="request" を指定しています。
                   比較するカラム名は、マスタ、スレーブ同じであれば、マスタのみ指定でかまいません。

             例２)マスタ、スレーブともメモリに残らないように request で作成します。
             <og:tableMerge action="INTERSECT"
                   masterScope  = "request"
                   slaveScope   = "request"
                   slaveTableId = "SLAVE"
                   masterKeys   = "AA,BB,CC"
             />

                 ・マスタ、スレーブともメモリに残らないように request で作成した場合は、
                   どちらかの TableId を変える必要があります。
                   出力先は初期値の、tableId="DEFAULT" scope="session" です。

  機能分類
    ＤＢ登録
  変更履歴:
    3.8.0.9 (2005/10/17) 新規追加
  バージョン
    0.9.0 2000/10/17
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### フィールドのサマリー

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `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"

    - ### クラスから継承されたフィールド org.opengion.hayabusa.taglib.CommonTagSupport

      `BR, BUFFER_MIDDLE, CR`

    - ### クラスから継承されたフィールド 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`

  - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `TableMergeTag()` デフォルトコンストラクター

  - ### メソッドのサマリー

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `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】検索結果が０件のとき処理を停止するかどうか[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()` このオブジェクトの文字列表現を返します。

    - ### クラスから継承されたメソッド org.opengion.hayabusa.taglib.CommonTagSupport

      `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, 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`

- - ### フィールドの詳細

    - #### ACT_UNION_ALL

          public static final java.lang.String ACT_UNION_ALL

      action 引数に渡す事の出来る アクションコマンド 全体集合 "UNION_ALL"
      関連項目:
        定数フィールド値

    - #### ACT_UNION

          public static final java.lang.String ACT_UNION

      action 引数に渡す事の出来る アクションコマンド 和集合 "UNION"
      関連項目:
        定数フィールド値

    - #### ACT_INTERSECT

          public static final java.lang.String ACT_INTERSECT

      action 引数に渡す事の出来る アクションコマンド 積集合 "INTERSECT"
      関連項目:
        定数フィールド値

    - #### ACT_MINUS

          public static final java.lang.String ACT_MINUS

      action 引数に渡す事の出来る アクションコマンド 差集合"MINUS"
      関連項目:
        定数フィールド値

    - #### ACT_DIFFERENCE

          public static final java.lang.String ACT_DIFFERENCE

      action 引数に渡す事の出来る アクションコマンド 差分集合"DIFFERENCE"
      関連項目:
        定数フィールド値

    - #### ACT_UNION_CLM

          public static final java.lang.String ACT_UNION_CLM

      action 引数に渡す事の出来る アクションコマンド 列合成"UNION_CLM"
      関連項目:
        定数フィールド値

    - #### ACT_UNION_VAL

          public static final java.lang.String ACT_UNION_VAL

      action 引数に渡す事の出来る アクションコマンド 列合成"UNION_VAL"
      関連項目:
        定数フィールド値

    - #### ACT_ADD_CLM

          public static final java.lang.String ACT_ADD_CLM

      action 引数に渡す事の出来る アクションコマンド 列合成"ADD_CLM"
      関連項目:
        定数フィールド値

    - #### ACT_GROUP

          public static final java.lang.String ACT_GROUP

      action 引数に渡す事の出来る アクションコマンド グループ "GROUP"
      関連項目:
        定数フィールド値

    - #### ACT_UNION_SELROW

          public static final java.lang.String ACT_UNION_SELROW

      action 引数に渡す事の出来る アクションコマンド グループ "UNION_SELROW"
      関連項目:
        定数フィールド値

    - #### ACT_CDKH

          public static final java.lang.String ACT_CDKH

      action 引数に渡す事の出来る アクションコマンド 改廃コード "CDKH"
      関連項目:
        定数フィールド値

    - #### ACT_TABLE_REMOVE

          public static final java.lang.String ACT_TABLE_REMOVE

      action 引数に渡す事の出来る アクションコマンド DBTableModelの削除 "TABLE_REMOVE"
      関連項目:
        定数フィールド値

    - #### CMD_NEW

          public static final java.lang.String CMD_NEW

      command 引数に渡す事の出来る コマンド 新規 "NEW"
      関連項目:
        定数フィールド値

    - #### CMD_RENEW

          public static final java.lang.String CMD_RENEW

      command 引数に渡す事の出来る コマンド 再検索 "RENEW"
      関連項目:
        定数フィールド値

  - ### コンストラクタの詳細

    - #### TableMergeTag

          public TableMergeTag()

      デフォルトコンストラクター
      変更履歴:
        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

  - ### メソッドの詳細

    - #### doEndTag

          public int doEndTag()

      Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
      定義:
        `doEndTag` インタフェース内 `Tag`
      オーバーライド:
        `doEndTag` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示
      変更履歴:
        4.3.2.0 (2008/09/11) UNION_SELROWアクション対応, 4.3.3.0 (2008/10/01) 処理前後のテーブル件数を取得できるようにする, 4.3.3.1 (2008/10/08) スレーブのnullチェック追加, 5.1.6.0 (2010/05/01) DBLastSqlの処理は、DBTableModelが新規作成された処理でのみ行う。, 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応, 5.7.6.2 (2014/05/16) stopZero属性、DB.COUNT キーで検索件数をリクエストにセットする。, 6.3.1.1 (2015/07/10) Map作成時に、DBTableModel のグループ化を行うかどうか指定できるようにする。, 6.3.1.1 (2015/07/10) 改廃コードを設定する CDKH アクションを追加, 6.3.4.0 (2015/08/01) Arrays.toString から String.join に置き換え。, 6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。, 6.4.4.1 (2016/03/18) StringBuilderの代わりに、OgBuilderを使用する。, 6.7.3.0 (2017/01/27) useSlaveLoop,nullDelClms属性追加と、action="TABLE_REMOVE" の追加, 6.9.1.0 (2018/02/26) ACT_UNION_VAL追加

    - #### release2

          protected void release2()

      タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
      オーバーライド:
        `release2` クラス内 `CommonTagSupport`
      変更履歴:
        5.1.4.0 (2010/03/01) groupAddClms 追加, 5.1.6.0 (2010/05/01) DBLastSqlの処理は、DBTableModelが新規作成された処理でのみ行う。, 5.3.1.0 (2011/01/01) separator追加, 5.7.6.2 (2014/05/16) stopZero属性追加, 6.7.3.0 (2017/01/27) useSlaveLoop,nullDelClms属性追加

    - #### setCommand

          public void setCommand(java.lang.String cmd)

      【TAG】コマンド (NEW,RENEW)をセットします(初期値:NEW)。
      パラメータ:
        `cmd` - コマンド (public static final 宣言されている文字列)
      関連項目:
        コマンド定数
      説明:
        コマンドは,HTMLから(get/post)指定されますので,CMD_xxx で設定される フィールド定数値のいづれかを、指定できます。 初期値は NEW です。

    - #### setAction

          public 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]。
      パラメータ:
        `action` - アクション [UNION_ALL/UNION/INTERSECT/MINUS/DIFFERENCE/UNION_CLM/ADD_CLM/GROUP/UNION_SELROW/CDKH]
      説明:
        指定できるアクションは、全体集合(UNION_ALL)、全体集合(挿入位置指定)(UNION_SELROW)、和集合(UNION) 、積集合(INTERSECT)、差集合(MINUS)、差分集合(DIFFERENCE)、列合成(UNION_CLM)、値列合成(UNION_VAL)、列追加(ADD_CLM)、 グループ(GROUP)です。 列合成とグループ以外の処理では、カラム順とカラム数は同数でなければなりません。 primaryKeys や unionClms などの指定のキー名は、マスタテーブルに存在する必要があります。 マスタテーブルと同じカラム番号でスレーブテーブルよりデータを読み出します。 (カラム名や属性は、異なってもかまいませんが、マスタテーブルに準拠します。) また、単独(マスタテーブルのみ)で、和集合と同等の、グループ(GROUP)を使用すると、指定の カラムでのユニーク化を行うことが可能になります。グループ処理では、先行優先とし、 ２回目に現れた情報を削除することになります。グループ が指定された場合は、 スレーブテーブルは無視されます。いずれの処理においても、集合処理を行う主キーで 一旦グループ化されます。全体集合(UNION_ALL)で処理する場合でも、主キーがユニークで ない場合は、マスター、スレーブの各テーブルで一旦グループ化された後で、マージされます。 (マージ後には、同一主キーを持つ行は存在します。) 全体集合(UNION_ALL)の場合のみ、mergeKeys を指定する必要はありません。その場合は、 キーなしのため、マスターとスレーブのテーブルを単に合成するだけになります。

        アクションの説明
        action | 名称 | 処理概要 | １ | ２ | ３ | ４
        --- | --- | --- | --- | --- | --- | ---
        UNION_ALL | 全体集合 | マスタとスレーブを合成 | ○ | ○ |  |
        UNION | 和集合 | マスタとスレーブのユニーク部のみ合成 | ○ | ○ |  |
        INTERSECT | 積集合 | マスタとスレーブのユニーク部が一致するマスタのみ選択 | ○ | ○ |  |
        MINUS | 差集合 | マスタからスレーブに存在するユニーク部を削除した残り | ○ | ○ |  |
        DIFFERENCE | 差分集合 | ユニーク部が一致し、差分カラムが異なるマスタのみ選択 | ○ | ○ |  | ○
        UNION_CLM | 列合成 | マスタとキー一致するスレーブのカラム情報を追加 | ○ | ○ | ○ |
        UNION_VAL | 値列合成 | マスタとキー一致するスレーブの縦列をカラムに追加 | ○ | ○ | ○ |
        ADD_CLM | 列追加 | UNION_CLMとの違いは、カラムのみ追加することです。 |  |  | ○ |
        GROUP | グループ | マスタのユニーク部化 |  |  |  |
        UNION_SELROW | 全体集合 | マスタとスレーブを合成(マスタ表のチェック行を起点に追加 | ○ |  |  |
        CDKH | 改廃CD | 改廃コードを設定 | ○ | ○ |  | ○
        TABLE_REMOVE | TBL削除 | マスタテーブルオブジェクトを無条件で、削除します |  |  |  |

        ※：マスタテーブルオブジェクトは、常に必須 １：スレーブテーブルオブジェクト必須 ２：masterKeys 属性必須 ３：unionClms 属性必須(スレーブテーブルのカラム名または追加するカラム名) ４：diffKeys 属性必須(DIFFERENCE時の差分カラム名)、modifyClms 属性使用可能

    - #### setTableId

          public void setTableId(java.lang.String id)

      【TAG】出力先のtableIdを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
      パラメータ:
        `id` - テーブルID (sessionに登録する時のID)
      関連項目:
        `HybsSystem.TBL_MDL_KEY`
      説明:
        集合処理結果の DBTableModel をメモリにセットする場合のキー(tableId)を指定します。 (初期値:HybsSystem#TBL_MDL_KEY[=])。

    - #### setScope

          public void setScope(java.lang.String scope)

      【TAG】出力先のscopeを指定します(初期値:session)。
      オーバーライド:
        `setScope` クラス内 `CommonTagSupport`
      パラメータ:
        `scope` - 出力先のscope
      関連項目:
        `CommonTagSupport.getScope()`
      説明:
        集合処理結果の DBTableModel をメモリにセットする場合のスコープを指定します。 ここでは、マスタやスレーブのスコープ設定が必要な為、superクラスのメソッドを オーバーライドしてこのオブジェクト内でキープしています。 初期値は、session です。

    - #### setMasterTableId

          public void setMasterTableId(java.lang.String masterTableId)

      【TAG】マスタテーブルのtableIdを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
      パラメータ:
        `masterTableId` - マスタテーブルID
      関連項目:
        `HybsSystem.TBL_MDL_KEY`
      説明:
        集合処理のマスタとなる DBTableModel をメモリから取り出す場合のキー(tableId)を指定します。 (初期値:HybsSystem#TBL_MDL_KEY[=])。

    - #### setMasterScope

          public void setMasterScope(java.lang.String masterScope)

      【TAG】マスタテーブルのscopeを指定します(初期値:session)。
      パラメータ:
        `masterScope` - マスタスコープ
      説明:
        集合処理のマスタとなる DBTableModel をメモリから取り出す場合のスコープを指定します。 初期値は、session です。

    - #### setMasterKeys

          public void setMasterKeys(java.lang.String masterKeys)

      【TAG】マスタテーブルの集合処理を行う主キーを指定します。
      パラメータ:
        `masterKeys` - マスタテーブル主キー (CSV形式)
      説明:
        集合処理を行う場合の、カラム名を、CSV形式(CSV形式)で指定します。 このキーの組み合わせを元に、集合処理の突合せを行います。 なお、アクションがグループ(GROUP)以外の処理では、マスタとスレーブのカラム数と 並び順は、同じでなければなりません。カラム名は、各々別々でもかまいません。 アクションが全体集合(UNION_ALL)以外の場合は、必須属性になります。

    - #### setSlaveKeys

          public void setSlaveKeys(java.lang.String slaveKeys)

      【TAG】スレーブテーブルの集合処理を行う主キーを指定します。
      パラメータ:
        `slaveKeys` - スレーブ主キー (CSV形式)
      説明:
        集合処理を行う場合の、カラム名を、CSV形式(CSV形式)で指定します。 このキーの組み合わせを元に、集合処理の突合せを行います。 なお、アクションがグループ(GROUP)以外の処理では、マスタとスレーブのカラム数と 並び順は、同じでなければなりません。カラム名は、各々別々でもかまいません。 null の場合は、masterKeys と同じとします。

    - #### setDiffKeys

          public void setDiffKeys(java.lang.String diffKeys)

      【TAG】マスタテーブルのDIFFERENCE時の差分カラム名を(CSV形式)指定します。
      パラメータ:
        `diffKeys` - 差分カラム名 (CSV形式)
      関連項目:
        `setMasterKeys( String )`
      説明:
        アクションが差分処理(DIFFERENCE)の場合に、差分チェックを行うカラム名を、 CSV形式(CSV形式)で指定します。 差分処理とは、masterKeys で指定されたキーでは、マスタ、スレーブともに存在し かつ、このキー(diffKeys)で指定されたキーの値が異なるマスタレコードを 抜き出します。 つまり、主キーは存在し、属性が異なる情報のピックアップになりますので、 データ更新(UPDATE)対象を見つける場合に使用できます。 アクションが差分処理(DIFFERENCE)の場合は、必須属性になります。

    - #### setSlaveTableId

          public void setSlaveTableId(java.lang.String slaveTableId)

      【TAG】スレーブテーブルのtableIdを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
      パラメータ:
        `slaveTableId` - スレーブテーブルID
      関連項目:
        `HybsSystem.TBL_MDL_KEY`
      説明:
        集合処理のスレーブとなる DBTableModel をメモリから取り出す場合のキー(tableId)を指定します。 なお、アクションがグループ(GROUP)の場合は、スレーブテーブルは使用されません。 (初期値:HybsSystem#TBL_MDL_KEY[=])。

    - #### setSlaveScope

          public void setSlaveScope(java.lang.String slaveScope)

      【TAG】スレーブテーブルのscopeを指定します(初期値:session)。
      パラメータ:
        `slaveScope` - スレーブスコープ
      説明:
        集合処理のスレーブとなる DBTableModel をメモリから取り出す場合のスコープを指定します。 なお、アクションがグループ(GROUP)の場合は、スレーブテーブルは使用されません。 初期値は、session です。

    - #### setUnionClms

          public void setUnionClms(java.lang.String unionClms)

      【TAG】スレーブからマスタへ追加するカラム名をCSV形式で指定します。
      パラメータ:
        `unionClms` - 列合成カラム名 (CSV形式)
      説明:
        アクションが列合成(UNION_CLM)、値列合成(UNION_VAL)または列追加(ADD_CLM)の場合に使用されます。 列合成(UNION_CLM)は、マスタとスレーブの主キーに対して、ここで指定のスレーブの カラム列名を、マスタの列に追加します。主キーがマッチしない行に関しては、 カラムの初期値が適用されたデータを作成します。 列追加(ADD_CLM)は、マスタテーブルに指定のカラムを追加するだけです、スレーブテーブルは 参照しません。よって、主キーも指定不要です。

    - #### setUnionLbls

          public void setUnionLbls(java.lang.String unionLbls)

      【TAG】スレーブからマスタへ追加するラベルをCSV形式で指定します。
      パラメータ:
        `unionLbls` - 列合成カラム名 (CSV形式)
      説明:
        アクションが列合成(UNION_CLM)、値列合成(UNION_VAL)または列追加(ADD_CLM)の場合に、 unionClmsと共に使用されます。 特に、値列合成(UNION_VAL)時のカラムは、縦列の値からカラムを作成する関係で、 通常カラムリソースに存在しません。 そこで、キーをそのままヘッダーに表示する場合に、不都合が発生する場合があるため、 ラベルを置き換える機能を用意します。
      変更履歴:
        6.9.1.0 (2018/02/26) unionLbls属性追加

    - #### setNullDelClms

          public void setNullDelClms(java.lang.String nullDelClms)

      【TAG】指定の値がすべてnull(空文字列)の場合、レコードを削除するカラムをCSV形式で指定します。
      パラメータ:
        `nullDelClms` - null(空文字列)の場合、レコードを削除するカラムをCSV形式で指定
      説明:
        アクションが(GROUP)で、指定のカラム列の値が、すべてnull(空文字列)の場合は、 そのレコード自身を削除します。
      変更履歴:
        6.7.3.0 (2017/01/27) nullDelClms属性追加

    - #### setModifyClms

          public void setModifyClms(java.lang.String modifyClms)

      【TAG】スレーブからマスタへ値を更新するカラム名をCSV形式で指定します。
      パラメータ:
        `modifyClms` - 値更新カラム名 (CSV形式)
      説明:
        アクションが差分処理(DIFFERENCE)、改廃CD(CDKH)の場合に、結果にマスタテーブルが抜き出されますが、 更新する場合に、スレーブ特有のユニークキー(例：UNIQ)を用いて更新する場合、 指定のカラム値は、スレーブの値にセットしておきたい場合があります。 ここでは、指定のカラムについて、値だけスレーブからマスタへセットします。 なお、値の更新については、マスタとスレーブが同一キーという制約があります。

    - #### setGroupAddClms

          public void setGroupAddClms(java.lang.String groupAddClms)

      【TAG】集合処理するときに、相違データをCSV連結して残すカラム名をCSV形式で指定します。
      パラメータ:
        `groupAddClms` - 相違データCSV連結 (CSV形式)
      説明:
        masterKeysで集合処理するときに、通常、最初に見つかった行データのみ残りますが、 ここに指定したカラムについては、発生都度、自分自身の情報に、CSV形式で連結して いきます。 この操作により、本来削除された情報が、１行のCSV形式で取得できる効果が得られます。 これは、value タグの action="APPEND" を、DBTableModel に対して実施するような感じです。
      変更履歴:
        5.1.4.0 (2010/03/01) 新規追加

    - #### setNoSideEffect

          public void setNoSideEffect(java.lang.String noSideEffect)

      【TAG】テーブルモデルに対する副作用の有無[true:ない/false:ある]を指定します(初期値:false:ある)。
      パラメータ:
        `noSideEffect` - 処理結果副作用 [true:ない/false:ある]
      説明:
        すべての処理で、DBTableModel に対して、ユニーク化やグループ化などの集合処理を 行う過程で、マスタテーブルに対して直接処理を行うと、副作用が発生します。 同様に、スレーブテーブルにおいても、一旦キー列でグループ化されるため、副作用が 発生します。これは、無駄なメモリ領域の確保と、テーブル(マスタ、スレーブとも)の コピー処理時間の節約になります。初期値の設定も副作用がある状態になっています。 ところが、都合によっては、色々な action を連続して行いたい場合など、毎回、 データベースを検索するよりもメモリ上でコピーしたほうが都合がよいケースでは、 副作用が出ないように、noSideEffect="true" に設定します。 ただし、マスタ、スレーブともテーブルをコピーを行い、結果のテーブルも派生する為、 通常、２つの領域(マスタと結果は同じテーブルに書かれる)で良い所を、５つの領域が 作成されます。 初期値は、副作用がある(noSideEffect="false")です。

    - #### setUseDiffData

          public void setUseDiffData(java.lang.String flag)

      【TAG】差分のスレーブデータを結果テーブルに追加するかどうかを指定します(初期値:true)。
      パラメータ:
        `flag` - 差分追加 [true:追加する/false:追加しない]
      説明:
        アクションが差分処理(DIFFERENCE)の場合に、結果にマスタテーブルが抜き出されますが、 差分対象のスレーブデータと比較したい場合があります。 このフラグを true にセットすると、書込み禁止属性が付いた状態で、スレーブデータが 結果テーブルに追加されます。 なお、この処理では、通常と異なり、マスタテーブルにはグループ化の副作用は発生しますが、 結果テーブルは新規に作成され、先頭行に必ず WRITABLE カラムが付加されます。 初期値は、true：追加する です。

    - #### setUseCheckOnly

          public void setUseCheckOnly(java.lang.String flag)

      【TAG】マスタテーブルの選択行のデータのみを対象に処理を行うかどうか[true:する/false:しない]を指定します(初期値:false)。
      パラメータ:
        `flag` - 選択行のみ対象 [true:選択行のみ/false:全件]
      説明:
        処理対象のマスタテーブルについて、選択行が指定された場合に、選択行のみを処理対象に するか、全件を対象にするかを指定します。 積集合や差分集合など通常は、全件を対象にすることになりますが、列合成や列追加など、 マスタテーブルに対してのみ作用を及ぼす処理では、選択行のみを対象に処理を行う事が 考えられます。その場合、初期グループ化と同じで、対象とする行が選択行のみになります。 初期値は、false：全件対象 です。

    - #### setDisplay

          public void setDisplay(java.lang.String flag)

      【TAG】マージの結果を表示するかどうか[true:する/false:しない]を指定します(初期値:true)。
      パラメータ:
        `flag` - 結果表示 [true:する/false:しない]
      説明:
        true で、マージ結果を表示します。 false では、何も表示しません(初期値:true) マスタテーブルの件数は、通常、キーでグループ化されるため、入力件数と異なります。 同様に、スレーブ件数も異なります。結果の件数は、処理結果が現実的かどうかの 判断に使用されます。 初期値は、true：表示する です。

    - #### setStopZero

          public void setStopZero(java.lang.String flag)

      【TAG】検索結果が０件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
      パラメータ:
        `flag` - ０件時停止 [true:処理を中止する/false:続行する]
      説明:
        初期値は、false(続行する)です。
      変更履歴:
        5.7.6.2 (2014/05/16) 新規追加

    - #### setUseSlaveLoop

          public void setUseSlaveLoop(java.lang.String flag)

      【TAG】scope="request" のスレーブテーブルをループして使用するかどうか[true/false]を指定します(初期値:false[使用しない])。 action="UNION_CLM" では、カラムを動的に追加していきます。これを、繰り返すことで、特定の処理結果を、 カラム列にコピーしていく処理が可能になります。（クロステーブル的な処理です。） 内容的には、scope="request" の同一の DBTableModel を、初回に、scope="session" にコピーすることで、 以後、マスターテーブルとして処理を続けるというものです。 初回かどうかを判別するのは、scope="session" の DBTableModel が存在しない場合は、scope="request" のDBTableModel を scope="session" に移すだけの処理を行います。 以降は、scope="session" に、DBTableModel が存在するはずなので、これを、マスターテーブルとして使用します。 scope="session" の DBTableModel を消すのは、action="TABLE_REMOVE" です。
      パラメータ:
        `flag` - スレーブテーブルをループして使用するかどうか [true:使用する/false:使用しない]
      説明:
        初期値は、false(使用しない)です。
      変更履歴:
        6.7.3.0 (2017/01/27) useSlaveLoop属性追加

    - #### setMainTrans

          public void setMainTrans(java.lang.String flag)

      【TAG】(通常は使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:true)。
      パラメータ:
        `flag` - メイントランザクションかどうか [true:メイン/false:その他]
      説明:
        この値は、ファイルダウンロード処理に影響します。この値がtrueに指定された時にcommitされたDBTableModelが ファイルダウンロードの対象の表になります。 このパラメーターは、通常、各タグにより実装され、ユーザーが指定する必要はありません。 但し、1つのJSP内でDBTableModelが複数生成される場合に、前に処理したDBTableModelについてファイルダウンロードをさせたい 場合は、後ろでDBTableModelを生成するタグで、明示的にこの値をfalseに指定することで、ファイルダウンロード処理の対象から 除外することができます。
      変更履歴:
        5.1.6.0 (2010/05/01) 新規作成

    - #### setSeparator

          public void setSeparator(java.lang.String sepa)

      【TAG】groupAddClmsで文字列を連結する項目区切り文字をセットします(初期値:",")。
      パラメータ:
        `sepa` - 項目区切り文字 (初期値:",")
      説明:
        groupAddClmsで文字列を連結する項目区切り文字をセットします(初期値:",")。 初期値は、"," に設定されています。
      変更履歴:
        5.3.1.0 (2011/01/01)

    - #### toString

          public java.lang.String toString()

      このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
      オーバーライド:
        `toString` クラス内 `CommonTagSupport`
      戻り値:
        このクラスの文字列表現
      このメソッドは、nullを返しません

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