org.opengion.hayabusa.taglib

## クラス QueryTag

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

- すべての実装されたインタフェース:
    Serializable, BodyTag, IterationTag, JspTag, Tag, TryCatchFinally
  直系の既知のサブクラス:
    EntryQueryTag, FileQueryTag, GuiQueryTag, PlsqlUpdateTag, TableUpdateTag

      public class QueryTag
      extends CommonTagSupport

       データベースの検索を行うタグです。

       このタグの内容に、SQL文を記述します。 whereタグ、 andタグ を使うと引数に応じて
       実行されるSQL文が異なります(使用例参照)。
       また、PL/SQLのSPで検索を行うときもこのタグを使います。
       SystemData の USE_SQL_INJECTION_CHECK が true か、quotCheck 属性が true の場合は、
       ＳＱＬインジェクション対策用のシングルクォートチェックを行います。リクエスト引数に
       シングルクォート(')が含まれると、エラーになります。
       同様にUSE_XSS_CHECKがtrueか、xssCheck属性がtrueの場合は、
       クロスサイトススクリプティング(XSS)対策のためless/greater than signのチェックを行います。

       実行後にリクエストパラメータに以下の値がセットされます。
         DB.COUNT     : 検索結果の件数
         DB.ERR_CODE  : 検索結果のｴﾗｰｺｰﾄﾞ
         DB.IS_UPDATE : 更新(=true)/検索(false)

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

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

         ●形式：
               ・<og:query command="NEW" >
                      SELECT文
                 </og:query>
               ・<og:query command="NEW" names="･･･" queryType="JDBCErrMsg" >
                      { call PL/SQL(?,?,?,? ) }
                 </og:query>
         ●body：あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します)

         ●Tag定義：
           <og:query
               queryType          【TAG】Query を発行する為のクラスID(JDBC,JDBCCallable,JDBCErrMsg,JDBCUpdate)を指定します<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=6.7.5.0&VALUENAME=queryType" target="CONTENTS">初期値:JDBC</a>)
               command            【TAG】コマンド (NEW,RENEW)をセットします(PlsqlUpdateTag,UpdateTag の場合は、ENTRY)
               scope              【TAG】キャッシュする場合のスコープ[request/page/session/applicaton]を指定します(初期値:session)
               maxRowCount        【TAG】(通常は使いません)データの最大読み込み件数を指定します (初期値:DB_MAX_ROW_COUNT[=1000])(0:[無制限])
               skipRowCount       【TAG】(通常は使いません)データの読み始めの初期値を指定します
               displayMsg         【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します (初期値:VIEW_DISPLAY_MSG[=])
               overflowMsg        【TAG】検索データが最大検索数をオーバーした場合に表示するメッセージリソースIDを指定します (初期値:MSG0007[検索結果が、制限行数を超えましたので、残りはカットされました])
               notfoundMsg        【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])
               names              【TAG】PL/SQLを利用する場合の引数にセットすべき データの名称をCSV形式で複数指定します
               stopZero           【TAG】検索結果が０件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する])
               tableId            【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します
               dbid               【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します
               trace              【TAG】引数の SQL 文を EXPLAIN PLAN を[true:行う/それ以外:行わない]を指定します(初期値:false)
               checkNames         【TAG】リクエスト変数の正規化を行うカラムをCSV形式で複数指定します
               modifyType         【TAG】DB検索時の モディファイタイプを指定します[A:追加/C:更新/D:削除]
               stopError          【TAG】PLSQL/SQL処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true)
               quotCheck          【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します(初期値:USE_SQL_INJECTION_CHECK)
               xssCheck           【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_XSS_CHECK[=true])
               mainTrans          【TAG】(通常使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:true)
               useBeforeHtmlTag   【TAG】処理時間(queryTime)などの情報出力[true:有効/false:無効]を指定します(初期値:true)
               useTimeView        【TAG】処理時間を表示する TimeView を表示するかどうかを指定します
        										(初期値:VIEW_USE_TIMEBAR[=true])。
               caseKey            【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null)
               caseVal            【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null)
               caseNN             【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない)
               caseNull           【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない)
               caseIf             【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない)
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           >   ... Body ...
           </og:query>

         ●使用例
             <og:query command="NEW">
                     select PN,YOBI,NMEN,HINM from XX01 where PN = '{@PN}' order by PN
             </og:query>

                  ・検索条件が入力された時({@PN}がNOT NULLのとき)
                    作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 where PN = 'AAA' order by PN
                  ・検索条件が入力されなかった時({@PN}がNULLのとき)
                    作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 where PN = '' order by PN

             <og:query command="NEW">
                     select PN,YOBI,NMEN,HINM from XX01
                 <og:where>
                     <og:and value="PN = '{@PN}%'" />
                     <og:and value="YOBI like '{@YOBI}%'" />
                 </og:where>
                     order by PN
             </og:query>

                  ・検索条件が入力された時({@PN}がNOT NULLのとき)
                    作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 PN = 'AAA%' and YOBI like 'BBB%' order by PN
                  ・検索条件が入力されなかった時({@PN}がNULLのとき) WHERE句がなくなる。
                    作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 order by PN

                注意:WhereTagを使った場合、下のようにはなりません。
                    select PN,YOBI,NMEN,HINM from XX01 PN = '' and YOBI like '%' order by PN

             <og:query command="NEW">
                     select PN,YOBI,NMEN,HINM from XX01 where PN="11111"
                 <og:where startKey="and">
                     <og:and value="YOBI like '{@PN}%'" />
                 </og:where>
                     order by PN
             </og:query>

                  ・検索条件が入力された時({@YOBI}がNOT NULLのとき)
                    作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 PN = '11111' and YOBI like 'BBB%' order by PN
                  ・検索条件が入力されなかった時({@YOBI}がNULLのとき) WHERE句がなくなる。
                    作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 PN = '11111' order by PN

             <og:query
                  command    = "NEW"
                  names      = "SYSTEM_ID,LANG,CLM,NAME_JA,LABEL_NAME,KBSAKU,USER.ID"
                  checkNames = "CLM,NAME_JA"
                  queryType  = "JDBCErrMsg"
                  displayMsg = "">
                      {call TYPE3B01.TYPE3B01(?,?,?,?)}
             </og:query>

                  ・queryType に JDBCErrMsg を指定して、PL/SQL をコールできます。
                    引数は、names 属性をキーにリクエスト変数から読み込みます。
                  ・checkNames にカラム名を指定すると、columns.valueSet による
                    リクエスト変数の正規化を行います。

  機能分類
    ＤＢ検索, ＤＢ登録
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

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

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `static String` | `CMD_NEW` command 引数に渡す事の出来る コマンド 新規 "NEW"
    `static String` | `CMD_RENEW` command 引数に渡す事の出来る コマンド 再検索 "RENEW"
    `protected String` | `command`
    `protected String` | `displayMsg`
    `protected long` | `dyStart`
    `protected static String` | `ERR_MSG_ID` エラーメッセージID "h_errMsg"
    `protected int` | `errCode`
    `protected ErrorMessage` | `errMessage`
    `protected int` | `executeCount`
    `protected int` | `maxRowCount`
    `protected String` | `names`
    `protected boolean` | `outMessage`
    `protected boolean` | `quotCheck`
    `protected int` | `skipRowCount`
    `protected String` | `sql`
    `protected boolean` | `stopError`
    `protected DBTableModel` | `table`
    `protected String` | `tableId`
    `protected boolean` | `useTimeView`
    `protected boolean` | `xssCheck`

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

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

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

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

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `int` | `doAfterBody()` Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `int` | `doStartTag()` Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
    `protected void` | `execute(Query query)` Query を実行します。
    `protected String[]` | `getRequest(String[] nameArray)` 名称配列を元に、リクエスト情報のデータを取得します。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `void` | `setCheckNames(String nm)` 【TAG】リクエスト変数の正規化を行うカラムをCSV形式で複数指定します。
    `void` | `setCommand(String cmd)` 【TAG】コマンド (NEW,RENEW)をセットします(PlsqlUpdateTag,UpdateTag の場合は、ENTRY)。
    `void` | `setDbid(String id)` 【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します。
    `void` | `setDisplayMsg(String id)` 【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します (初期値:VIEW_DISPLAY_MSG[=])。
    `void` | `setMainTrans(String flag)` 【TAG】(通常使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:true)。
    `void` | `setMaxRowCount(String count)` 【TAG】(通常は使いません)データの最大読み込み件数を指定します (初期値:DB_MAX_ROW_COUNT[=1000])。
    `void` | `setModifyType(String type)` 【TAG】DB検索時の モディファイタイプを指定します[A:追加/C:更新/D:削除]。
    `void` | `setNames(String nm)` 【TAG】PL/SQLを利用する場合の引数にセットすべき データの名称をCSV形式で複数指定します。
    `void` | `setNotfoundMsg(String id)` 【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])。
    `void` | `setOutMessage(String flag)` 【TAG】検索結果のメッセージを表示する/しない[true/false]を指定します(初期値:true)。
    `void` | `setOverflowMsg(String id)` 【TAG】検索データが最大検索数をオーバーした場合に表示するメッセージリソースIDを指定します (初期値:MSG0007[検索結果が、制限行数を超えましたので、残りはカットされました])。
    `void` | `setQueryType(String id)` 【TAG】Query を発行する為のクラスID(JDBC,JDBCCallable,JDBCErrMsg,JDBCUpdate)を指定します(<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=6.7.5.0&VALUENAME=queryType" target="CONTENTS">初期値:JDBC</a>)。
    `void` | `setQuotCheck(String flag)` 【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=true])。
    `void` | `setSkipRowCount(String count)` 【TAG】(通常は使いません)データの読み始めの初期値を指定します。
    `void` | `setStopError(String flag)` 【TAG】PLSQL/SQL処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true)。
    `void` | `setStopZero(String cmd)` 【TAG】検索結果が０件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
    `void` | `setTableId(String id)` 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
    `void` | `setTrace(String flag)` 【TAG】引数の SQL 文を EXPLAIN PLAN を[true:行う/それ以外:行わない]を指定します(初期値:false)。
    `void` | `setUseBeforeHtmlTag(String useTag)` 【TAG】 処理時間(queryTime)などの情報出力[true:有効/false:無効]を指定します(初期値:true)。
    `void` | `setUseTimeView(String flag)` 【TAG】処理時間を表示する TimeView を表示するかどうか[true:する/false:しない]を指定します (初期値:VIEW_USE_TIMEBAR[=true])。
    `void` | `setXssCheck(String flag)` 【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_XSS_CHECK[=true])。
    `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, 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, 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`

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

    - #### CMD_NEW

          public static final String CMD_NEW

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

    - #### CMD_RENEW

          public static final String CMD_RENEW

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

    - #### ERR_MSG_ID

          protected static final String ERR_MSG_ID

      エラーメッセージID "h_errMsg"
      関連項目:
        定数フィールド値

    - #### table

          protected transient DBTableModel table

    - #### errMessage

          protected transient ErrorMessage errMessage

    - #### tableId

          protected String tableId

    - #### command

          protected String command

    - #### skipRowCount

          protected int skipRowCount

    - #### maxRowCount

          protected int maxRowCount

    - #### sql

          protected String sql

    - #### executeCount

          protected int executeCount

    - #### names

          protected String names

    - #### outMessage

          protected boolean outMessage

    - #### errCode

          protected int errCode

    - #### displayMsg

          protected String displayMsg

    - #### dyStart

          protected long dyStart

    - #### useTimeView

          protected boolean useTimeView

    - #### stopError

          protected boolean stopError

    - #### quotCheck

          protected boolean quotCheck

    - #### xssCheck

          protected boolean xssCheck

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

    - #### QueryTag

          public QueryTag()

      デフォルトコンストラクター
      変更履歴:

        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`
      戻り値:
        後続処理の指示
      変更履歴:

        3.5.4.7 (2004/02/06) 実行時間測定用に、開始時刻を取得します。
        3.5.6.5 (2004/08/09) 暫定的に、DBTableModelを先行削除します。
        3.6.0.0 (2004/09/24) DBTableModel の先行削除は、scope="session" の場合のみ。
        5.1.6.0 (2010/05/01) DBLastSqlの処理は、DBTableModelが新規作成された処理でのみ行う。
        5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応
        6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。
        6.4.8.1 (2016/07/02) xssCheckを、doStartTag に移動

    - #### doAfterBody

          public int doAfterBody()

      Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
      定義:
        `doAfterBody` インタフェース内 `IterationTag`
      オーバーライド:
        `doAfterBody` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示(SKIP_BODY)
      変更履歴:

        3.1.1.0 (2003/03/28) ボディの内容を取得する処理を、CommonTagSupport で行う。
        3.6.0.8 (2004/11/19) エラー発生時に確実にリリースされるように try finally 追加
        3.8.5.3 (2006/08/07) USER.LASTSQL へのSQL文の保存は、実行前に行っておきます。
        3.8.6.3 (2006/11/30) SQL 文の前後のスペースを取り除きます。
        3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定
        4.0.0.0 (2005/01/31) lang ⇒ ResourceManager へ変更
        4.0.0.0 (2005/08/31) useQuotCheck() によるＳＱＬインジェクション対策
        4.3.4.0 (2008/12/01) GE20(ユーザー定数)へ登録するかのフラグへの対応
        5.0.0.2 (2009/09/15) XSS対応
        5.1.6.0 (2010/05/01) DBLastSqlの処理は、DBTableModelが新規作成された処理でのみ行う。
        5.1.9.0 (2010/08/01) TransactionTag 対応。上位に TransactionTag があれば、そこからConnection をもらう。
        5.3.6.0 (2011/06/01) 集計、合計などのEdit機能に対応します。
        5.3.7.0 (2011/07/01) TransactionReal の引数変更
        5.3.7.0 (2011/07/01) PL/SQLかつscope="request"で正しく出力するためqueryType,namesも保存する。
        5.3.8.0 (2011/08/01) Transaction発生箇所でclose()
        5.5.3.4 (2012/06/19) trace 時は、実際の検索処理を行わない様に変更。
        5.6.5.3 (2013/06/28) LASTQUERYTYPE ⇒ LASTSQLTYPE 変更。
        6.3.1.1 (2015/07/10) BodyString,BodyRawStringは、CommonTagSupport で、trim() します。
        6.3.6.1 (2015/08/28) Transaction でAutoCloseableを使用したtry-with-resources構築に対応。
        6.3.6.1 (2015/08/28) QueryFactory.close( Query ) 廃止。Queryはキャッシュしません。
        6.4.0.2 (2015/12/11) Transaction の commit は、errCode で判定します。
        6.4.8.1 (2016/07/02) xssCheckを、doStartTag に移動

    - #### doEndTag

          public int doEndTag()

      Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
      定義:
        `doEndTag` インタフェース内 `Tag`
      オーバーライド:
        `doEndTag` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示
      変更履歴:

        2.0.0.8 (2002/10/09) command="NEW" のときのみ、displayMsg を表示させます。
        2.1.1.4 (2002/11/25) デバッグ時に最終SQLをユーザー情報をセットするように変更。
        2.1.2.1 (2002/11/27) ErrorMessage をクリアしないように変更。
        3.1.1.0 (2003/03/28) JspWriter オブジェクトの使用箇所を、jspPrint() を使用するように変更。
        3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
        3.2.1.0 (2003/05/28) 最終ＳＱＬ文を、UserInfo に、キャッシュしておく。
        3.3.3.3 (2003/08/06) 検索結果の件数を、"DB.COUNT" キーでリクエストにセットする。
        3.3.3.3 (2003/08/06) 検索結果を、"DB.ERR_CODE" キーでリクエストにセットする。
        3.5.4.7 (2004/02/06) 実行時間測定用のDIV要素を出力しておきます。
        3.5.4.9 (2004/02/25) 警告時に停止していましたが、継続処理させます。
        3.5.5.0 (2004/03/12) ErrorMessage オブジェクトを、query が成功した時にもクリアするように変更
        3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソッドを利用
        3.5.5.8 (2004/05/20) ErrorMessage オブジェクトを、コマンドが NEW の場合のみ、クリア
        3.5.6.0 (2004/06/18) debugMsg 属性を出力するように修正します。
        3.6.0.8 (2004/11/19) DBTableModel をセーブする時に、トランザクションチェックを行います。
        3.8.5.3 (2006/08/07) USER.LASTSQL へのSQL文の保存は、実行前に行っておきます。
        4.0.0.0 (2006/11/14) notfoundMsg 属性を追加。displayMsg は、VIEW_USE_DISPLAY_MSG で制御
        4.0.0.0 (2007/10/18) メッセージリソース統合( getResource().getMessage ⇒ getResource().getLabel )
        4.3.3.0 (2008/09/22) 属性 stopError の設定により、JSP処理を中止するかどうかを制御します。
        5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応
        5.3.5.0 (2011/05/01) 処理時間(queryTime)などの情報出力の有効/無効を指定します。
        5.5.0.3 (2012/03/13) オーバーフローメッセージが存在しないときは、何もしない。(改行も入れない)
        5.5.3.4 (2012/06/19) trace 時は、実際の検索処理を行わない様に変更。
        5.6.3.0 (2013/04/01) エラー時メッセージ変更
        6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。

    - #### release2

          protected void release2()

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

        2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加
        3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
        3.5.4.7 (2004/02/06) 実行時間測定用に、dyStart を追加します。
        3.5.6.0 (2004/06/18) debugMsg 属性を追加します。
        3.8.0.5 (2005/08/20) checkNames 属性を追加します。
        3.8.5.1 (2006/05/08) modifyType 属性を追加します。
        3.8.5.1 (2006/05/08) traceMsg 属性(トレース時のメッセージ文字列)を追加します。
        4.0.0.0 (2005/08/31) quotCheck 属性の追加
        4.0.0.0 (2007/10/10) dbid の初期値を、"DEFAULT" から null に変更
        4.3.3.0 (2008/09/22) stopError 属性の追加
        5.0.0.2 (2009/09/15) XSS対応
        5.1.6.0 (2010/05/01) DBLastSqlの処理は、DBTableModelが新規作成された処理でのみ行う。
        5.3.5.0 (2011/05/01) 処理時間(queryTime)などの情報出力の有効/無効を指定します。
        6.3.6.1 (2015/08/28) 検索か更新か判定するフラグ(updateFlag)を用意します。

    - #### execute

          protected void execute(Query query)

      Query を実行します。
      パラメータ:
        `query` - オブジェクト
      変更履歴:

        2.1.2.3 (2002/12/02) データベース更新時に、更新フラグをセットするように変更
        3.4.0.0 (2003/09/01) 登録エラー時のキーと値を表示するように変更。
        3.5.6.0 (2004/06/18) デバッグ情報出力用に、printDebug メソッドを追加。
        3.6.1.0 (2005/01/05) エラーコードによる commit/rollback の判断追加
        5.3.7.0 (2011/07/01) nameの判定にゼロ文字列を付加
        6.2.1.0 (2015/03/13) エラーメッセージに SQL文を追加します。
        6.3.6.1 (2015/08/28) 検索か更新か判定するフラグ(updateFlag)を用意します。
        6.4.2.0 (2016/01/29) HybsSystemException を catch して、再び、throw する処理を廃止します。

    - #### getRequest

          protected String[] getRequest(String[] nameArray)

      名称配列を元に、リクエスト情報のデータを取得します。 checkNames 属性に設定されているカラムがあれば、値を正規化します。
      パラメータ:
        `nameArray` - キーとなる名称の配列
      戻り値:
        そのリクエスト情報の配列(可変長引数)
      変更履歴:

        3.8.0.5 (2005/08/20) リクエスト変数の正規化(checkNames)対応

      このメソッドは、nullを返しません

    - #### setSkipRowCount

          public void setSkipRowCount(String count)

      【TAG】(通常は使いません)データの読み始めの初期値を指定します。
      パラメータ:
        `count` - 読み始めの初期値
      説明:

             データベース自体の検索は,指定されたSQLの全件を検索しますが,
             DBTableModelのデータとしては、スキップ件数分は登録されません。
             サーバーのメモリ資源と応答時間の確保の為です。

    - #### setMaxRowCount

          public void setMaxRowCount(String count)

      【TAG】(通常は使いません)データの最大読み込み件数を指定します (初期値:DB_MAX_ROW_COUNT[=1000])。
      パラメータ:
        `count` - 最大件数
      関連項目:
        `SystemData.DB_MAX_ROW_COUNT`
      説明:

             データベース自体の検索は,指定されたSQLの全件を検索しますが,
             DBTableModelのデータとして登録する最大件数をこの値に設定します。
             サーバーのメモリ資源と応答時間の確保の為です。
             0 をセットすると、無制限(Integer.MAX_VALUE)になります。
             (初期値:ユーザー定数のDB_MAX_ROW_COUNT[=1000])。

      変更履歴:

        5.5.8.5 (2012/11/27) 0を無制限として処理します。

    - #### setTableId

          public void setTableId(String id)

      【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
      パラメータ:
        `id` - テーブルID (sessionに登録する時のID)
      説明:

             検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に
             渡す場合に、通常は、session を利用します。その場合の登録キーです。
             query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、
             この tableId 属性を利用して、メモリ空間を分けます。
            		(初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。

    - #### setQueryType

          public void setQueryType(String id)

      【TAG】Query を発行する為のクラスID(JDBC,JDBCCallable,JDBCErrMsg,JDBCUpdate)を指定します(<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=6.7.5.0&VALUENAME=queryType" target="CONTENTS">初期値:JDBC</a>)。
      パラメータ:
        `id` - Query実クラス
      関連項目:
        `Queryのサブクラス`, `Query.execute( String[] )`
      説明:

             検索を実行する手段は、Query インターフェースの実装クラスになります。
             このタグでは、Query.execute( String[] ) メソッドが呼ばれます。
             例えば、ストアドプロシージャ等を実行する場合に、queryType="JDBCErrMsg"
             を指定することができます。
             初期値は、"JDBC" です。
             queryType は、システムリソースの Query_**** 宣言の **** を与えます。
             これらは、Query インターフェースを継承したサブクラスである必要があります。
             標準で、org.opengion.hayabusa.db 以下の Query_**** クラスが、Query_**** 宣言 と
             して、定義されています。
             属性クラス定義の Query を参照願います。
             <a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=6.7.5.0&VALUENAME=queryType" target="CONTENTS">Query_**** クラス</a>

    - #### setDbid

          public void setDbid(String id)

      【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します。
      パラメータ:
        `id` - データベース接続ID
      説明:

             Queryオブジェクトを作成する時のDB接続IDを指定します。
             これは、システムリソースで、DEFAULT_DB_URL 等で指定している データベース接続先
             情報に、XX_DB_URL を定義することで、 dbid="XX" とすると、この 接続先を使用して
             データベースにアクセスできます。

    - #### setCommand

          public void setCommand(String cmd)

      【TAG】コマンド (NEW,RENEW)をセットします(PlsqlUpdateTag,UpdateTag の場合は、ENTRY)。
      パラメータ:
        `cmd` - コマンド (public static final 宣言されている文字列)
      関連項目:
        コマンド定数
      説明:

             コマンドは,HTMLから(get/post)指定されますので,CMD_xxx で設定される
             フィールド定数値のいづれかを、指定できます。

    - #### setStopZero

          public void setStopZero(String cmd)

      【TAG】検索結果が０件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
      パラメータ:
        `cmd` - ０件時停止可否 [true:処理を中止する/false:続行する]
      説明:

             初期値は、false(続行する)です。

    - #### setDisplayMsg

          public void setDisplayMsg(String id)

      【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します (初期値:VIEW_DISPLAY_MSG[=])。
      パラメータ:
        `id` - 表示メッセージID
      関連項目:
        `SystemData.VIEW_DISPLAY_MSG`
      説明:

             ここでは、検索結果の件数や登録された件数をまず出力し、
             その次に、ここで指定したメッセージをリソースから取得して表示します。
             件数を表示させる場合は、displayMsg = "MSG0033"[　件検索しました] をセットしてください。
             表示させたくない場合は, displayMsg = "" をセットしてください。
             (初期値:システム定数のVIEW_DISPLAY_MSG[=])。

    - #### setOverflowMsg

          public void setOverflowMsg(String id)

      【TAG】検索データが最大検索数をオーバーした場合に表示するメッセージリソースIDを指定します (初期値:MSG0007[検索結果が、制限行数を超えましたので、残りはカットされました])。
      パラメータ:
        `id` - オーバー時メッセージID
      説明:

             検索結果が、maxRowCount で設定された値より多い場合、何らかのデータは検索されず
             切り捨てられたことになります。
             ここでは、displayMsg を表示した後、必要に応じて、このメッセージを表示します。
             表示させたくない場合は, overflowMsg = "" をセットしてください。
             初期値は、MSG0007[検索結果が、制限行数を超えましたので、残りはカットされました]です。

    - #### setNotfoundMsg

          public void setNotfoundMsg(String id)

      【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])。
      パラメータ:
        `id` - ゼロ件メッセージID
      説明:

             ここでは、検索結果がゼロ件の場合のみ、特別なメッセージを表示させます。
             従来は、displayMsg と兼用で、『0　件検索しました』という表示でしたが、
             displayMsg の初期表示は、OFF になりましたので、ゼロ件の場合のみ別に表示させます。
             表示させたくない場合は, notfoundMsg = "" をセットしてください。
             初期値は、MSG0077[対象データはありませんでした]です。

    - #### setNames

          public void setNames(String nm)

      【TAG】PL/SQLを利用する場合の引数にセットすべき データの名称をCSV形式で複数指定します。
      パラメータ:
        `nm` - 引数の名称 (CSV形式)
      説明:

             複数ある場合は、CSV形式で渡します。
             names 属性は、queryType に応じて設定可否が異なりますので、ご注意ください。
             names なし：JDBC,JDBCUpdate
             names あり：JDBCCallable,JDBCErrMsg,JDBCUpdate
             (JDBCUpdateは、names 属性のあり/なし両方に対応しています。)

      変更履歴:

        3.0.1.3 (2003/03/11) names 属性に null で渡す場合のバグを修正

    - #### setOutMessage

          public void setOutMessage(String flag)

      【TAG】検索結果のメッセージを表示する/しない[true/false]を指定します(初期値:true)。
      パラメータ:
        `flag` - 検索結果メッセージ [true:表示する/それ以外:含めない]
      説明:

             初期値は、表示する：true です。

    - #### setTrace

          public void setTrace(String flag)

      【TAG】引数の SQL 文を EXPLAIN PLAN を[true:行う/それ以外:行わない]を指定します(初期値:false)。
      パラメータ:
        `flag` - トレース [true:行う/それ以外:行わない]
      説明:

             ここでは、以下の処理を行います。
             １．引数の SQL 文を画面に表示します。
             ２．引数の SQL 文を EXPLAIN PLAN した結果を、画面に表示します。
             なお、以前は、セッションのトレースを行っていましたが、その機能は、廃止いたします。
             初期値は、行わない：false です。

    - #### setCheckNames

          public void setCheckNames(String nm)

      【TAG】リクエスト変数の正規化を行うカラムをCSV形式で複数指定します。
      パラメータ:
        `nm` - 正規化処理カラム (CSV形式)
      説明:

             PL/SQLを利用する場合の引数にセットすべき データを、リクエスト変数の
             値そのままではなく、カラムオブジェクトの valueSet メソッド経由で正規化
             した値を使用するようにします。

      変更履歴:

        3.8.0.5 (2005/08/20) 新規追加

    - #### setModifyType

          public void setModifyType(String type)

      【TAG】DB検索時の モディファイタイプを指定します[A:追加/C:更新/D:削除]。
      パラメータ:
        `type` - Dモディファイタイプ [A:追加/C:更新/D:削除]
      説明:

             DB検索時に、そのデータをA(追加)、C(更新)、D(削除)のモディファイタイプを
             つけた状態にします。
             その状態で、そのまま、update する事が可能になります。

      変更履歴:

        3.8.5.1 (2006/05/08) 新規追加

    - #### setQuotCheck

          public void setQuotCheck(String flag)

      【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=true])。
      パラメータ:
        `flag` - クォートチェック [true:する/それ以外:しない]
      説明:

             ＳＱＬインジェクション対策の一つとして、暫定的ではありますが、SQLのパラメータに
             渡す文字列にシングルクォート(') を許さない設定にすれば、ある程度は防止できます。
             数字タイプの引数には、 or 5=5 などのシングルクォートを使用しないコードを埋めても、
             数字チェックで検出可能です。文字タイプの場合は、必ず (')をはずして、
             ' or 'A' like 'A のような形式になる為、(')チェックだけでも有効です。
             (') が含まれていたエラーにする(true)／かノーチェックか(false)を指定します。
             初期値は、SystemData#USE_SQL_INJECTION_CHECK です。

      変更履歴:

        4.0.0.0 (2005/08/31) 新規追加

    - #### setXssCheck

          public void setXssCheck(String flag)

      【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_XSS_CHECK[=true])。
      パラメータ:
        `flag` - XSSチェック [true:する/false:しない]
      関連項目:
        `SystemData.USE_XSS_CHECK`
      説明:

             クロスサイトスクリプティング(XSS)対策の一環としてless/greater than signについてのチェックを行います。
             (><) が含まれていたエラーにする(true)／かノーチェックか(false)を指定します。
             (初期値:システム定数のUSE_XSS_CHECK[=true])

      変更履歴:

        5.0.0.2 (2009/09/15) 新規追加

    - #### setStopError

          public void setStopError(String flag)

      【TAG】PLSQL/SQL処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true)。
      パラメータ:
        `flag` - エラー時処理中止 [true:中止する/false:中止しない]
      説明:

             false(中止しない)に設定する場合、後続処理では、{@DB.ERR_CODE}の値により、
             PLSQL/SQLの異常/正常終了によって分岐処理は可能となります。
             初期値は、true(中止する)です。

      変更履歴:

        4.3.3.0 (2008/09/22) 新規追加

    - #### setMainTrans

          public void setMainTrans(String flag)

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

             この値は、ファイルダウンロード処理に影響します。この値がtrueに指定された時にcommitされたDBTableModelが
             ファイルダウンロードの対象の表になります。

             このパラメーターは、通常、各タグにより実装され、ユーザーが指定する必要はありません。
             但し、1つのJSP内でDBTableModelが複数生成される場合に、前に処理したDBTableModelについてファイルダウンロードをさせたい
             場合は、後ろでDBTableModelを生成するタグで、明示的にこの値をfalseに指定することで、ファイルダウンロード処理の対象から
             除外することができます。

      変更履歴:

        5.1.6.0 (2010/05/01) 新規作成

    - #### setUseBeforeHtmlTag

          public void setUseBeforeHtmlTag(String useTag)

      【TAG】 処理時間(queryTime)などの情報出力[true:有効/false:無効]を指定します(初期値:true)。
      パラメータ:
        `useTag` - 情報出力の有効/無効 [true:有効/false:無効]
      説明:

             Query で、検索する場合に、処理時間(queryTime)などの情報を出力していますが、
             ViewForm で、CustomData などの 非HTML表示ビューを使用する場合、データとして、
             紛れ込んでしまうため、出力を抑制する必要があります。
             true(有効)にすると、これらのHTMLが出力されます。false にすると、出力されません。
             初期値は、true(有効) です。

      変更履歴:

        5.3.5.0 (2011/05/01) 新規追加

    - #### setUseTimeView

          public void setUseTimeView(String flag)

      【TAG】処理時間を表示する TimeView を表示するかどうか[true:する/false:しない]を指定します (初期値:VIEW_USE_TIMEBAR[=true])。
      パラメータ:
        `flag` - 処理時間を表示 [true:する/false:しない]
      説明:

             true に設定すると、処理時間を表示するバーイメージが表示されます。
             これは、DB検索、APサーバー処理、画面表示の各処理時間をバーイメージで
             表示させる機能です。処理時間の目安になります。
             (初期値:VIEW_USE_TIMEBAR[=true])。

      変更履歴:

        6.3.6.0 (2015/08/16) useTimeView の初期値を、VIEW_USE_TIMEBAR にする。

    - #### toString

          public String toString()

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

        6.3.1.1 (2015/07/10) SQL文から、TAB→スペース変換と、余計な改行を削除します。

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