org.opengion.hayabusa.taglib

## クラス RegistryQueryTag

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

- すべての実装されたインタフェース:
    java.io.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 RegistryQueryTag
      extends CommonTagSupport

       指定の Windowsレジストリにアクセスするためのタグです(特殊な環境設定が必要です)。

       検索した結果は、DBTableModel にセットされるため、
       JDBCQuery と同様に、viewタグで表示させることが可能です。

       注意１：
         通常であれば、以下の２つのルートパス以下のレジストリにアクセスできます。
           HKEY_CURRENT_USER/Software/JavaSoft/Prefs
           HKEY_LOCAL_MACHINE/Software/JavaSoft/Prefs

       注意２：
         ルートパスを強制的に変更する為、java.util.prefs.WindowsPreferenceクラスを
         直接書き換えた、ogPreferences.jar を用意しています。
         これを、tomcat/endorsed フォルダにコピーして使います。
         その場合は、
           HKEY_CURRENT_USER/Software/Muratec
           HKEY_LOCAL_MACHINE/Software/Muratec
         以下の２つのルートパス以下のレジストリにアクセスできます。

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

         ●形式：<og:regQuery baseKey="･･･" ･･･ />
         ●body：なし

         ●Tag定義：
           <og:regQuery
               baseKey          ○【TAG】検索ベースキーを設定します(HKEY_CURRENT_USER/Software/XXXX の XXXX を指定します)(必須)。
               hkeyType           【TAG】HKEY_CURRENT_USER(="user") を読むか、HKEY_LOCAL_MACHINE(="system") を読むかを指定します(初期値:user)。
               key                【TAG】検索キーを設定します
               value              【TAG】検索バリューを設定します
               maxRowCount        【TAG】レジストリの最大検索件数をセットします(初期値:0[無制限])
               orderBy            【TAG】検索した結果を表示する表示順をファイル属性名で指定します
               maxLevel           【TAG】検索時の最大展開レベル(0は無制限)を指定します(初期値:1)
               like               【TAG】キーおよびバリューについて,like 検索を行うかどうか[true/false]を指定します(初期値:false)
               tableId            【TAG】(通常は使いません)結果をDBTableModelに書き込んで、sessionに登録するときのキーを指定します
               command            【TAG】コマンド (NEW,RENEW)をセットします(初期値:NEW)
               displayMsg         【TAG】検索結果を画面上に表示するメッセージIDを指定します(初期値:VIEW_DISPLAY_MSG[=])
               notfoundMsg        【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])
               overflowMsg        【TAG】オーバーフロー時に画面上に表示するメッセージIDを指定します(初期値:MSG0007)
               scope              【TAG】キャッシュする場合のスコープ[request/page/session/application]を指定します(初期値:session)
               mainTrans          【TAG】(通常は使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:false)
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           />

         ●使用例
            <og:regQuery  debug="false"
                command     = "NEW"                       NEW,RENEW が使用できます。
                baseKey     = "/"                         検索時のベースとなるレジストリキー名
                key         = "driver"                    検索したいレジストリキー名(初期値は全件)
                value       = "Ne"                        検索したいレジストリ値(初期値は全件)
                maxRowCount = "0"                         最大検索件数(0で無制限)
                maxLevel    = "0"                         最大検索階層レベル(0で無制限)
                like        = "true"                      true で曖昧検索/false は一致検索
            />

         like は、key / value を設定したときのみ有効です。また、key / value を両方同時に設定した場合は、
         like 属性は両方に同時に適用されます。

  変更履歴:

    3.1.0.0 (2003/03/20) Windowsレジストリにアクセスできる、RegistryQueryTag.java を新規に作成。

  機能分類
    その他入力
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

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

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

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

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

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

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `protected java.lang.String` | `getTagName()` タグの名称を、返します。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `void` | `setBaseKey(java.lang.String bkey)` 【TAG】検索ベースキーを設定します(HKEY_CURRENT_USER/Software/XXX の XXX をベースとします)。
    `void` | `setCommand(java.lang.String cmd)` 【TAG】コマンド (NEW,RENEW)をセットします(初期値:NEW)。
    `void` | `setDisplayMsg(java.lang.String id)` 【TAG】検索結果を画面上に表示するメッセージIDを指定します (初期値:VIEW_DISPLAY_MSG[=])。
    `void` | `setHkeyType(java.lang.String type)` 【TAG】レジストリの読み込むルートを[user/system]で指定します(初期値:user)。
    `void` | `setKey(java.lang.String ky)` 【TAG】検索キーを設定します。
    `void` | `setLike(java.lang.String lik)` 【TAG】キーおよびバリューについて,like 検索を行うかどうか[true/false]を指定します(初期値:false)。
    `void` | `setMainTrans(java.lang.String flag)` 【TAG】(通常は使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:true)。
    `void` | `setMaxLevel(java.lang.String lvl)` 【TAG】検索時の最大展開レベル(0は無制限)を指定します(初期値:1)。
    `void` | `setMaxRowCount(java.lang.String count)` 【TAG】レジストリの最大検索件数をセットします(初期値:0[無制限])。
    `void` | `setNotfoundMsg(java.lang.String id)` 【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])。
    `void` | `setOrderBy(java.lang.String ordr)` 【TAG】検索した結果を表示する表示順をファイル属性名で指定します。
    `void` | `setOverflowMsg(java.lang.String id)` 【TAG】検索データが最大検索数をオーバーした場合に表示するメッセージリソースIDを指定します (初期値:MSG0007[検索結果が、制限行数を超えましたので、残りはカットされました])。
    `void` | `setTableId(java.lang.String id)` 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
    `void` | `setValue(java.lang.String val)` 【TAG】検索バリューを設定します。
    `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, 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 java.lang.String CMD_NEW

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

    - #### CMD_RENEW

          public static final java.lang.String CMD_RENEW

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

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

    - #### RegistryQueryTag

          public RegistryQueryTag()

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

        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

  - ### メソッドの詳細

    - #### doEndTag

          public int doEndTag()

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

        3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
        3.6.0.8 (2004/11/19) DBTableModel をセーブする時に、トランザクションチェックを行います。
        4.0.0.0 (2007/10/18) メッセージリソース統合( getResource().getMessage ⇒ getResource().getLabel )
        5.1.6.0 (2010/05/01) DBLastSqlの処理は、DBTableModelが新規作成された処理でのみ行う。
        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()で呼ぶ。
        5.1.6.0 (2010/05/01) DBLastSqlの処理は、DBTableModelが新規作成された処理でのみ行う。
        5.6.8.2 (2013/09/20) hkeyType 追加

    - #### setTableId

          public void setTableId(java.lang.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])。

    - #### setOrderBy

          public void setOrderBy(java.lang.String ordr)

      【TAG】検索した結果を表示する表示順をファイル属性名で指定します。
      パラメータ:
        `ordr` - ソートキー
      説明:

             現仕様では、複数のキーを指定することは出来ません。

    - #### setCommand

          public void setCommand(java.lang.String cmd)

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

             コマンドは,HTMLから(get/post)指定されますので,CMD_xxx で設定される
             フィールド定数値のいづれかを、指定できます。
             何も設定されない、または、null の場合は、"NEW" が初期値にセットされます。

    - #### setBaseKey

          public void setBaseKey(java.lang.String bkey)

      【TAG】検索ベースキーを設定します(HKEY_CURRENT_USER/Software/XXX の XXX をベースとします)。
      パラメータ:
        `bkey` - 検索ベースキー
      説明:

             レジストリの検索で、HKEY_CURRENT_USER か、HKEY_LOCAL_MACHINE の区別を、hkeyType 属性で付ける事が
             できるようにしました。昔は、HKEY_CURRENT_USER/Software/ 以下の検索ができていましたが、
             今現在は、できなくなっているようです。（または、使い方が間違っているか）
             そこで、標準(/JavaSoft/Prefs)、/Muratec、/Microsoft だけ、検索できるように、
             XXXXPreferencesFactory を作成しました。
             詳細は、opengionV6/src/jdk170uXX_WindowsPreference を参照願います。
             これにより、従来通りの方法で（制限はかかりますが）レジストリを検索できます。

             ベースキー に指定できるのは、"/Muratec" , "/Microsoft" で始まるキーだけです。
             それに続く "/" で区切った階層構造も表現可能です。
             標準(/JavaSoft/Prefs) は、何も指定しないことで、標準であることを示します。

    - #### setKey

          public void setKey(java.lang.String ky)

      【TAG】検索キーを設定します。
      パラメータ:
        `ky` - 検索キー
      説明:

             検索キーを設定します。

    - #### setValue

          public void setValue(java.lang.String val)

      【TAG】検索バリューを設定します。
      パラメータ:
        `val` - 検索バリュー
      説明:

             検索バリューを設定します。

    - #### setMaxRowCount

          public void setMaxRowCount(java.lang.String count)

      【TAG】レジストリの最大検索件数をセットします(初期値:0[無制限])。
      パラメータ:
        `count` - 最大件数
      説明:

             DBTableModelのデータとして登録する最大件数をこの値に設定します。
             サーバーのメモリ資源と応答時間の確保の為です。
             初期値は、0 は、無制限です。

    - #### setDisplayMsg

          public void setDisplayMsg(java.lang.String id)

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

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

    - #### setNotfoundMsg

          public void setNotfoundMsg(java.lang.String id)

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

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

    - #### setOverflowMsg

          public void setOverflowMsg(java.lang.String id)

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

             表示させたくない場合は, overflowMsg = "" をセットしてください。

    - #### setMaxLevel

          public void setMaxLevel(java.lang.String lvl)

      【TAG】検索時の最大展開レベル(0は無制限)を指定します(初期値:1)。
      パラメータ:
        `lvl` - 検索時の最大展開レベル
      説明:

             ０を指定すると、無制限に階層を展開します。
             初期値は、１レベルです。

    - #### setLike

          public void setLike(java.lang.String lik)

      【TAG】キーおよびバリューについて,like 検索を行うかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
        `lik` - 曖昧検索を行うかどうか [true:行う/false:行わない]
      説明:

             like検索とは、キーの一部の文字を含む場合にマッチしたとして、値を取り出します。
             ここでの設定は、キーもバリューも同時に適用されます。また、大文字小文字の区別も行いません。

    - #### setHkeyType

          public void setHkeyType(java.lang.String type)

      【TAG】レジストリの読み込むルートを[user/system]で指定します(初期値:user)。
      パラメータ:
        `type` - 読み込むルート [user/system]
      説明:

             HKEY_CURRENT_USER/Software/XXXX を読む場合は、"user" を、HKEY_LOCAL_MACHINE/Software/XXXX
             を読む場合は、"system" を指定します。それ以外の指定は、エラーにしています。
             ここでの設定は、大文字小文字の区別は行いません。
             初期値は、"user"(HKEY_CURRENT_USER) です。

      変更履歴:

        5.6.8.2 (2013/09/20) 新規追加

    - #### getTagName

          protected java.lang.String getTagName()

      タグの名称を、返します。 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。
      オーバーライド:
        `getTagName` クラス内 `CommonTagSupport`
      戻り値:
        タグの名称
      関連項目:
        `CommonTagSupport.getDocumentLink()`
      変更履歴:

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

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

    - #### 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) 新規作成

    - #### toString

          public java.lang.String toString()

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

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