クラス TableMergeTag

  • すべての実装されたインタフェース:
    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 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}
    関連項目:
    直列化された形式
    導入されたバージョン:
    JDK5.0,
    • コンストラクタの詳細

      • TableMergeTag

        public TableMergeTag()
        デフォルトコンストラクター
    • メソッドの詳細

      • doEndTag

        public int doEndTag()
        Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
        定義:
        doEndTag インタフェース内 javax.servlet.jsp.tagext.Tag
        オーバーライド:
        doEndTag クラス内 CommonTagSupport
        戻り値:
        後続処理の指示
      • release2

        protected void release2()
        タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
        オーバーライド:
        release2 クラス内 CommonTagSupport
      • setCommand

        public void setCommand​(String cmd)
        【TAG】コマンド (NEW,RENEW)をセットします(初期値:NEW)。
        パラメータ:
        cmd - コマンド (public static final 宣言されている文字列)
        関連項目:
        コマンド定数
      • setAction

        public void setAction​(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]
      • setTableId

        public void setTableId​(String id)
        【TAG】出力先のtableIdを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
        パラメータ:
        id - テーブルID (sessionに登録する時のID)
        関連項目:
        HybsSystem.TBL_MDL_KEY
      • setMasterTableId

        public void setMasterTableId​(String masterTableId)
        【TAG】マスタテーブルのtableIdを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
        パラメータ:
        masterTableId - マスタテーブルID
        関連項目:
        HybsSystem.TBL_MDL_KEY
      • setMasterScope

        public void setMasterScope​(String masterScope)
        【TAG】マスタテーブルのscopeを指定します(初期値:session)。
        パラメータ:
        masterScope - マスタスコープ
      • setMasterKeys

        public void setMasterKeys​(String masterKeys)
        【TAG】マスタテーブルの集合処理を行う主キーを指定します。
        パラメータ:
        masterKeys - マスタテーブル主キー (CSV形式)
      • setSlaveKeys

        public void setSlaveKeys​(String slaveKeys)
        【TAG】スレーブテーブルの集合処理を行う主キーを指定します。
        パラメータ:
        slaveKeys - スレーブ主キー (CSV形式)
      • setDiffKeys

        public void setDiffKeys​(String diffKeys)
        【TAG】マスタテーブルのDIFFERENCE時の差分カラム名を(CSV形式)指定します。
        パラメータ:
        diffKeys - 差分カラム名 (CSV形式)
        関連項目:
        setMasterKeys( String )
      • setSlaveTableId

        public void setSlaveTableId​(String slaveTableId)
        【TAG】スレーブテーブルのtableIdを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
        パラメータ:
        slaveTableId - スレーブテーブルID
        関連項目:
        HybsSystem.TBL_MDL_KEY
      • setSlaveScope

        public void setSlaveScope​(String slaveScope)
        【TAG】スレーブテーブルのscopeを指定します(初期値:session)。
        パラメータ:
        slaveScope - スレーブスコープ
      • setUnionClms

        public void setUnionClms​(String unionClms)
        【TAG】スレーブからマスタへ追加するカラム名をCSV形式で指定します。
        パラメータ:
        unionClms - 列合成カラム名 (CSV形式)
      • setUnionLbls

        public void setUnionLbls​(String unionLbls)
        【TAG】スレーブからマスタへ追加するラベルをCSV形式で指定します。
        パラメータ:
        unionLbls - 列合成カラム名 (CSV形式)
      • setNullDelClms

        public void setNullDelClms​(String nullDelClms)
        【TAG】指定の値がすべてnull(空文字列)の場合、レコードを削除するカラムをCSV形式で指定します。
        パラメータ:
        nullDelClms - null(空文字列)の場合、レコードを削除するカラムをCSV形式で指定
      • setModifyClms

        public void setModifyClms​(String modifyClms)
        【TAG】スレーブからマスタへ値を更新するカラム名をCSV形式で指定します。
        パラメータ:
        modifyClms - 値更新カラム名 (CSV形式)
      • setGroupAddClms

        public void setGroupAddClms​(String groupAddClms)
        【TAG】集合処理するときに、相違データをCSV連結して残すカラム名をCSV形式で指定します。
        パラメータ:
        groupAddClms - 相違データCSV連結 (CSV形式)
      • setNoSideEffect

        public void setNoSideEffect​(String noSideEffect)
        【TAG】テーブルモデルに対する副作用の有無[true:ない/false:ある]を指定します(初期値:false:ある)。
        パラメータ:
        noSideEffect - 処理結果副作用 [true:ない/false:ある]
      • setUseDiffData

        public void setUseDiffData​(String flag)
        【TAG】差分のスレーブデータを結果テーブルに追加するかどうかを指定します(初期値:true)。
        パラメータ:
        flag - 差分追加 [true:追加する/false:追加しない]
      • setUseCheckOnly

        public void setUseCheckOnly​(String flag)
        【TAG】マスタテーブルの選択行のデータのみを対象に処理を行うかどうか[true:する/false:しない]を指定します(初期値:false)。
        パラメータ:
        flag - 選択行のみ対象 [true:選択行のみ/false:全件]
      • setDisplay

        public void setDisplay​(String flag)
        【TAG】マージの結果を表示するかどうか[true:する/false:しない]を指定します(初期値:true)。
        パラメータ:
        flag - 結果表示 [true:する/false:しない]
      • setStopZero

        public void setStopZero​(String flag)
        【TAG】検索結果が0件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
        パラメータ:
        flag - 0件時停止 [true:処理を中止する/false:続行する]
      • setUseSlaveLoop

        public void setUseSlaveLoop​(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:使用しない]
      • setMainTrans

        public void setMainTrans​(String flag)
        【TAG】(通常は使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:true)。
        パラメータ:
        flag - メイントランザクションかどうか [true:メイン/false:その他]
      • setSeparator

        public void setSeparator​(String sepa)
        【TAG】groupAddClmsで文字列を連結する項目区切り文字をセットします(初期値:",")。
        パラメータ:
        sepa - 項目区切り文字 (初期値:",")
      • toString

        public String toString()
        このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
        オーバーライド:
        toString クラス内 CommonTagSupport
        戻り値:
        このクラスの文字列表現