org.opengion.hayabusa.taglib

## クラス TableFilterTag

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

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

      public class TableFilterTag
      extends CommonTagSupport

       TableFilter のサブクラスをCALLしてDBTableModelにアクセスするタグです。

       DBTableModel を TableFilter のサブクラス(classIdで指定)に渡して処理を実行します。
       クラスを作成する場合は、org.opengion.hayabusa.db.TableFilter インターフェースを継承した
       クラスにする必要があります。また、classId 属性には、システムリソース で
       設定した TableFilter.XXXX の XXXX を指定します。

       BODY部分は、SQLを記述する為だけに使っていましたが、CSS定義形式の書式で、keys,vals を記述
       できるようにします。
       これは、下記のようなパラメータを、keys="KEY,KEY2,KEY3" vals='AAAA,"BB,CC,DD",EE' のような記述形式と
         {
              KEY1 : AAAA ;
              KEY2 : BB,CC,DD ;
              KEY3 : EE ;
              ・・・・・・
         }
       のような、CSS形式に類似の形式でも記述できるようにしました。
       keys,vals と CSS定義形式パラメータを同時に指定した場合は、両方とも有効です。
       ただし、キーが重複した場合は、不定と考えてください。
       現時点では、CSS定義形式パラメータが優先されますが、これは、単に内部パラメータMapへの
       登録順が、CSS定義形式パラメータが後の為、上書きされるためです。

       ※ このタグは、Transaction タグの対象です。

  関連項目:
    直列化された形式
  形式サンプル:

         ●形式：<og:tableFilter classId="…" />
         ●body：あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します)

         ●Tag定義：
           <og:tableFilter
               classId          ○【TAG】データベース処理を実行するクラスパスを指定します(必須)。
               tableId            【TAG】(通常は使いません)DBTableModel sessionに登録されているキーを指定します
               modifyType         【TAG】データ処理の方法(A:追加 C:更新 D:削除)を指定します
               keys               【TAG】リンク先に渡すキーを指定します
               vals               【TAG】keys属性に対応する値をCSV形式で複数指定します
               selectedAll        【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)
               stopZero           【TAG】検索結果が０件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する])
               scope              【TAG】キャッシュする場合のスコープ[request/page/session/application]を指定します(初期値:session)
               dbid               【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します
               caseKey            【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 5.7.7.2 (2014/06/20)
               caseVal            【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 5.7.7.2 (2014/06/20)
               caseNN             【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20)
               caseNull           【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20)
               caseIf             【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない)
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           >   ... Body ...
           </og:tableFilter>

         ●使用例
            ・引数/プロシジャーを直接書く場合
            【entry.jsp】
                <og:tableFilter
                    classId     = "WL_LOGICSET"         :TableFilter のサブクラス(実行クラス)
                    tableId     = "WL0000"              :登録元のDBTableModelのsession/request変数内の取得キー
                    keys        = "AA,BB,CC"            :実行クラスへの引数のキー
                    vals        = "{@AA},{@BB},{@CC}"   :実行クラスへの引数の値
                    selectedAll = "false/true"          :処理対象の行を全行選択するかどうか(初期値:false)
                    modifyType  = "A/C/D"               :処理の方法(A:追加 C:更新 D:削除)を指定します。初期値は自動です。
                />

            ・BODY部分に、CSS形式のパラメータ（keys,vals）を記述する例

                <og:tableFilter
                    classId     = "WL_LOGICSET"         :TableFilter のサブクラス(実行クラス)
                    tableId     = "WL0000"              :登録元のDBTableModelのsession/request変数内の取得キー
                    selectedAll = "false/true"          :処理対象の行を全行選択するかどうか(初期値:false)
                    modifyType  = "A/C/D"               :処理の方法(A:追加 C:更新 D:削除)を指定します。初期値は自動です。
                >
                       {
                           AA    :  {@AA}
                           BB    :  {@BB}
                           CC    :  {@CC}
                       }
                </og:tableFilter>

  機能分類
    その他
  変更履歴:
    3.8.5.0 (2006/03/20) 新規作成
  バージョン
    0.9.0 2000/10/17
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK1.1,

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

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

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

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

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

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `int` | `doAfterBody()` Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `int` | `doStartTag()` Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
    `protected int[]` | `getParameterRows()` 表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `void` | `setClassId(java.lang.String id)` 【TAG】データベース処理を実行するテーブルフィルターのクラスIDを指定します。
    `void` | `setDbid(java.lang.String id)` 【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します。
    `void` | `setKeys(java.lang.String key)` 【TAG】リンク先に渡すキーを指定します。
    `void` | `setModifyType(java.lang.String type)` 【TAG】データ処理の方法[A:追加/C:更新/D:削除]を指定します(初期値:自動判定)。
    `void` | `setSelectedAll(java.lang.String all)` 【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。
    `void` | `setStopZero(java.lang.String cmd)` 【TAG】検索結果が０件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
    `void` | `setTableId(java.lang.String id)` 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
    `void` | `setVals(java.lang.String val)` 【TAG】names属性に対応する値をCSV形式で複数指定します。
    `java.lang.String` | `toString()` このオブジェクトの文字列表現を返します。

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

      `add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doCatch, doFinally, 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, 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, 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`

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

    - #### TableFilterTag

          public TableFilterTag()

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

  - ### メソッドの詳細

    - #### doStartTag

          public int doStartTag()

      Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
      定義:
        `doStartTag` インタフェース内 `Tag`
      オーバーライド:
        `doStartTag` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示( EVAL_BODY_BUFFERED )
      変更履歴:
        5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属性を追加

    - #### doAfterBody

          public int doAfterBody()

      Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
      定義:
        `doAfterBody` インタフェース内 `IterationTag`
      オーバーライド:
        `doAfterBody` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示(SKIP_BODY)
      変更履歴:
        5.6.5.2 (2013/06/21) bodyローカル化、sql、paramMap 追加

    - #### doEndTag

          public int doEndTag()

      Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
      定義:
        `doEndTag` インタフェース内 `Tag`
      オーバーライド:
        `doEndTag` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示
      変更履歴:
        3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定, 4.2.3.0 (2008/06/23) DBIDとボディー部分の記述を下位クラスに渡す用に修正, 4.3.7.4 (2009/07/01) Resouceオブジェクトを下位クラスに渡す用に修正, 5.1.9.0 (2010/08/01) Transaction 対応, 5.2.1.0 (2010/10/01) debugPrint() メソッドの処理条件見直し, 5.3.7.0 (2011/07/01) TransactionReal の引数変更 、Transaction対応で、close処理を入れる。, 5.6.5.2 (2013/06/21) bodyローカル化、sql、paramMap 追加, 5.7.6.2 (2014/05/16) table件数が変わる場合、"DB.COUNT" キーでリクエストに再セットする。, 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属性を追加, 6.0.4.0 (2014/11/28) NullPointerException が発生するので、事前にチェックします。, 6.3.6.1 (2015/08/28) Transaction でAutoCloseableを使用したtry-with-resources構築に対応。, 6.4.3.3 (2016/03/04) HybsSystem.newInstance(String,String) への置き換え。

    - #### release2

          protected void release2()

      タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
      オーバーライド:
        `release2` クラス内 `CommonTagSupport`
      変更履歴:
        5.6.5.2 (2013/06/21) body廃止、sql、paramMap 追加, 5.7.6.2 (2014/05/16) stopZero属性追加

    - #### getParameterRows

          protected int[] getParameterRows()

      表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。
      オーバーライド:
        `getParameterRows` クラス内 `CommonTagSupport`
      戻り値:
        選択行の配列
      変更履歴:
        6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)
      このメソッドは、nullを返しません

    - #### setClassId

          public void setClassId(java.lang.String id)

      【TAG】データベース処理を実行するテーブルフィルターのクラスIDを指定します。
      パラメータ:
        `id` - 実行クラスID
      関連項目:
        `TableFilter インターフェース`
      説明:
        ここで指定するクラスIDは、システムリソース にて TableFilter の サブクラス(インターフェース継承)として指定する必要があります。 クラス自身は、org.opengion.hayabusa.db.TableFilter インターフェースを継承している必要があります。

    - #### setTableId

          public void setTableId(java.lang.String id)

      【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
      パラメータ:
        `id` - テーブルID (sessionに登録する時のID)
      説明:
        検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 渡す場合に、通常は、session を利用します。その場合の登録キーです。 query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 この tableId 属性を利用して、メモリ空間を分けます。 (初期値:HybsSystem#TBL_MDL_KEY[=])。

    - #### setSelectedAll

          public void setSelectedAll(java.lang.String all)

      【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
        `all` - 全件選択済み [true:全件選択済み/false:通常]
      説明:
        全てのデータを選択済みデータとして扱って処理します。 全件処理する場合に、指定します。(true/false) デフォルト false です。

    - #### setStopZero

          public void setStopZero(java.lang.String cmd)

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

    - #### setModifyType

          public void setModifyType(java.lang.String type)

      【TAG】データ処理の方法[A:追加/C:更新/D:削除]を指定します(初期値:自動判定)。
      パラメータ:
        `type` - 処理方法 [A:追加/C:更新/D:削除]
      説明:
        通常は、DBTableModel に自動設定されている modifyType を元に、データ処理方法を 選別します。(A:追加 C:更新 D:削除) この場合、行単位で modifyType の値を取得して判別する必要がありますが、一般には 処理対象は、全件おなじ modifyType である可能性が高いです。 また、selectedAll などで強制的に全件処理対象とする場合は、modifyType に値が 設定さていません。その様な場合に外部より modifyType を指定します。 初期値は、自動判定 です。

    - #### setKeys

          public void setKeys(java.lang.String key)

      【TAG】リンク先に渡すキーを指定します。
      パラメータ:
        `key` - リンク先に渡すキー
      説明:
        戻る時に、検索時のキャッシュに指定した引数以外に指定したり、別の値に置き換えたり する場合のキーを設定できます。CSV形式で複数指定できます。 vals 属性には、キーに対応する値を、設定してください。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。

    - #### setVals

          public void setVals(java.lang.String val)

      【TAG】names属性に対応する値をCSV形式で複数指定します。
      パラメータ:
        `val` - names属性に対応する値 (CSV形式)
      説明:
        キーに設定した値を、CSV形式で複数して出来ます。 指定順序は、キーと同じにしておいて下さい。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。

    - #### setDbid

          public void setDbid(java.lang.String id)

      【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します。
      パラメータ:
        `id` - データベース接続ID
      説明:
        Queryオブジェクトを作成する時のDB接続IDを指定します。 これは、システムリソースで、DEFAULT_DB_URL 等で指定している データベース接続先 情報に、XX_DB_URL を定義することで、 dbid="XX" とすると、この 接続先を使用して データベースにアクセスできます。

    - #### toString

          public java.lang.String toString()

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

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