org.opengion.hayabusa.taglib

## クラス ReadJSONTag

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

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

      public class ReadJSONTag
      extends CommonTagSupport

  JSONを DBTableModelオブジェクトに読み取るタグです。 JSONの読み取りにはpluginのJsonReaderを利用します。 標準はエンジンの出力形式の読み取りを行うJsonReader_Defaultです。 入力件数を"DB.COUNT" キーでリクエストにセットしています。
  関連項目:
    直列化された形式
  形式サンプル:

         ●形式：
             <og:readJSON
                 command      = "NEW"
                 maxRowCount  = "10000"               読取最大件数(0:[無制限])
             >
              ...
             <og:readJSON />
         ●body：なし

         ●Tag定義：
           <og:readTable
               readerClass        【TAG】実際に読み出すクラス名の略称(TableReader_**** の ****)をセットします(初期値:Default)
               JSONData           【TAG】読み取るJSONデータをセットします。タグのBODYでもセット可能です。
               maxRowCount        【TAG】読取時の最大取り込み件数をセットします (初期値:DB_MAX_ROW_COUNT[=1000])(0:[無制限])
               tableId            【TAG】(通常使いません)sessionから所得する DBTableModelオブジェクトの ID
               command            【TAG】コマンド(NEW,RENEW)をセットします(初期値:NEW)
               modifyType         【TAG】ファイル取り込み時の モディファイタイプ(A(追加),C(更新),D(削除))を指定します
               displayMsg         【TAG】query の結果を画面上に表示するメッセージIDを指定します(初期値:MSG0033[　件検索しました])
               notfoundMsg        【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])
               checkColumns       【TAG】読み取り元ファイルの整合性チェックを行うカラム列をカンマ指定します
               nullCheck          【TAG】NULL チェックすべきカラム列をカンマ区切り(CVS形式)で指定します
               language           【TAG】タグ内部で使用する言語コード[ja/en/zh/…]を指定します
               stopZero           【TAG】読込件数が０件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する])
               scope              【TAG】キャッシュする場合のスコープ[request/page/session/applicaton]を指定します(初期値:session)
               mainTrans          【TAG】(通常使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:false)
               skipRowCount       【TAG】(通常は使いません)データの読み飛ばし件数を設定します
               useRenderer        【TAG】読取処理でラベルをコードリソースに逆変換を行うかどうかを指定します (初期値:false)
               caseKey            【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null)
               caseVal            【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null)
               caseNN             【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:true)
               caseNull           【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:true)
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           />

         ●使用例

             <og:readJSON
                 command        = "NEW"
                 readerClass    = "Default"
                 maxRowCount    = "10000"               読取最大件数(0:[無制限])
                 checkColumns   = "OYA,KO,HJO,SU"       整合性チェックするカラム列("*" で全カラム)
                 nullCheck      = "OYA,KO,SU"           NULLチェックを実行します("*" で全カラム)
                 stopZero       = "true"                取得0件の場合に以降の処理を停止します
             >
               [JSON Data]
             <og:readJSON />

  機能分類
    ファイル入力
  バージョン
    4.0
  作成者
    Takahashi Masakazu
  導入されたバージョン:
    JDK5.0,

- - ### フィールドの概要

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `static String` | `CMD_NEW` command 引数に渡す事の出来る コマンド 新規作成 "NEW"
    `static String` | `CMD_RENEW` command 引数に渡す事の出来る コマンド 再検索 "RENEW"

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

  - ### コンストラクタの概要

    コンストラクタ
    コンストラクタと説明
    `ReadJSONTag()`

  - ### メソッドの概要

    メソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `protected void` | `create(String out)` TableReader の実オブジェクトを生成して，BufferedReader に書き込みます。
    `int` | `doAfterBody()` Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `int` | `doStartTag()` Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `void` | `setCheckColumns(String clms)` 【TAG】整合性チェックを行うカラム列をカンマ指定します。
    `void` | `setCommand(String cmd)` 【TAG】コマンド(NEW,RENEW)をセットします(初期値:NEW)。
    `void` | `setDisplayMsg(String id)` 【TAG】query の結果を画面上に表示するメッセージIDを指定します(初期値:MSG0033[　件検索しました])。
    `void` | `setJSONData(String json)` 【TAG】テーブルモデルに取り込むJSONデータ
    `void` | `setMainTrans(String flag)` 【TAG】(通常使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:false)。
    `void` | `setMaxRowCount(String count)` 【TAG】読取時の最大取り込み件数をセットします (初期値:DB_MAX_ROW_COUNT[=1000])。
    `void` | `setModifyType(String type)` 【TAG】取り込み時の モディファイタイプ(A(追加),C(更新),D(削除))を指定します。
    `void` | `setNotfoundMsg(String id)` 【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])。
    `void` | `setNullCheck(String clms)` 【TAG】NULL チェックすべきカラム列をカンマ区切り(CVS形式)で指定します。
    `void` | `setReaderClass(String readerClass)` 【TAG】実際に読み出すクラス名の略称(JsonReader_**** の ****)をセットします(<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=5.9.22.0&VALUENAME=readerClass" target="CONTENTS">初期値:Default</a>)。
    `void` | `setSkipRowCount(String count)` 【TAG】(通常は使いません)データの読み飛ばし件数を設定します。
    `void` | `setStopZero(String cmd)` 【TAG】読込件数が０件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する])。
    `void` | `setTableId(String id)` 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
    `void` | `setUseRenderer(String flag)` 【TAG】読取処理でラベルをコードリソースに逆変換を行うかどうかを指定します
    `String` | `toString()` このオブジェクトの文字列表現を返します。

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

      `add, add, addEventColumn, addEventColumn, check, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getTagName, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, 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"
      関連項目:
        定数フィールド値

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

    - #### ReadJSONTag

          public ReadJSONTag()

  - ### メソッドの詳細

    - #### doStartTag

          public int doStartTag()

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

    - #### doAfterBody

          public int doAfterBody()

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

    - #### doEndTag

          public int doEndTag()

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

    - #### release2

          protected void release2()

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

    - #### create

          protected void create(String out)

      TableReader の実オブジェクトを生成して，BufferedReader に書き込みます。
      パラメータ:
        `out` - 出力するBufferedReaderオブジェクト

    - #### setTableId

          public void setTableId(String id)

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

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

    - #### setReaderClass

          public void setReaderClass(String readerClass)

      【TAG】実際に読み出すクラス名の略称(JsonReader_**** の ****)をセットします(<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=5.9.22.0&VALUENAME=readerClass" target="CONTENTS">初期値:Default</a>)。
      パラメータ:
        `readerClass` - クラス名(の略称)
      説明:

             実際に読み出すクラス名(の略称)をセットします。
             これは、org.opengion.plugin.json 以下の JsonReader_**** クラスの **** を
             与えます。これらは、JsonReader インターフェースを継承したサブクラスです。

    - #### setMaxRowCount

          public void setMaxRowCount(String count)

      【TAG】読取時の最大取り込み件数をセットします (初期値:DB_MAX_ROW_COUNT[=1000])。
      パラメータ:
        `count` - 読取時の最大取り込み件数
      関連項目:
        `SystemData.DB_MAX_ROW_COUNT`
      説明:

             DBTableModelのデータとして登録する最大件数をこの値に設定します。
             サーバーのメモリ資源と応答時間の確保の為です。
             0 をセットすると、無制限(Integer.MAX_VALUE)になります。
             (初期値:ユーザー定数のDB_MAX_ROW_COUNT[={@og.value org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT}])。

    - #### setCommand

          public void setCommand(String cmd)

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

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

    - #### setDisplayMsg

          public void setDisplayMsg(String id)

      【TAG】query の結果を画面上に表示するメッセージIDを指定します(初期値:MSG0033[　件検索しました])。
      パラメータ:
        `id` - ディスプレイに表示させるメッセージ ID
      説明:

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

    - #### setNotfoundMsg

          public void setNotfoundMsg(String id)

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

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

    - #### setModifyType

          public void setModifyType(String type)

      【TAG】取り込み時の モディファイタイプ(A(追加),C(更新),D(削除))を指定します。
      パラメータ:
        `type` - ファイル取り込み時の モディファイタイプ(A,C,D属性)
      説明:

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

    - #### setCheckColumns

          public void setCheckColumns(String clms)

      【TAG】整合性チェックを行うカラム列をカンマ指定します。
      パラメータ:
        `clms` - 整合性チェックを行うカラム列(カンマ区切り文字)
      説明:

             カラムオブジェクトのDBType属性に対応したチェックを行います。
             指定のカラム名をカンマ区切り(CSV)で複数指定できます。
             全てのカラムのチェックを行う場合は、allColumnCheck = "true" を
             指定して下さい。
             分解方法は、通常のパラメータ取得後に、CSV分解します。

    - #### setNullCheck

          public void setNullCheck(String clms)

      【TAG】NULL チェックすべきカラム列をカンマ区切り(CVS形式)で指定します。
      パラメータ:
        `clms` - カラム列(CVS形式)
      説明:

             nullCheck="AAA,BBB,CCC,DDD"
             分解方法は、通常のパラメータ取得後に、CSV分解します。

    - #### setStopZero

          public void setStopZero(String cmd)

      【TAG】読込件数が０件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する])。
      パラメータ:
        `cmd` - 読込件数が０件のとき、処理を [true:中止する/false:続行する]
      説明:

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

    - #### setMainTrans

          public void setMainTrans(String flag)

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

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

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

    - #### setSkipRowCount

          public void setSkipRowCount(String count)

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

             データの読み始めの初期値を指定します。
             先頭行が、０行としてカウントしますので、設定値は、読み飛ばす
             件数になります。(１と指定すると、１件読み飛ばし、２行目から読み込みます。)
             読み飛ばしは、コメント行などは、無視しますので、実際の行数分読み飛ばします。
             ＃NAME属性や、columns 属性は、有効です。

    - #### setUseRenderer

          public void setUseRenderer(String flag)

      【TAG】読取処理でラベルをコードリソースに逆変換を行うかどうかを指定します
      パラメータ:
        `flag` - コードリソースのラベル逆変換を行うかどうか
      説明:

             コードリソースのカラムに対して、ラベルからコードを求める逆変換を行うことで、
             Renderer 系で出力したデータを取り込むことができるようにします。

             JSONでの出力ではRenderer系で出力する事は少ないと思われるため、初期値はfalseとしておきます。

    - #### setJSONData

          public void setJSONData(String json)

      【TAG】テーブルモデルに取り込むJSONデータ
      パラメータ:
        `json` - 取り込むJSON形式データ
      説明:

             テーブルモデルに取り込むためのJSONデータを指定します。
             タグのBODYでも指定可能です。

    - #### toString

          public String toString()

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

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