org.opengion.hayabusa.taglib

## クラス DirectWriteTableTag

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

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

      public class DirectWriteTableTag
      extends CommonTagSupport

  SELECT文を直接実行して、指定のファイルに出力するタグです。 中間の、データ(DBTableModel)を作成しないため、余計なメモリを取らず、 高速にデータを抜き出すことが可能です。 一方、抜き出すデータは生データのため、データの再利用等、システム的な 使用を想定しています。 JDBCErrMsg 形式のPL/SQL をコールして、その検索結果(カーソル)を抜きこともできます。 ※ このタグは、Transaction タグの対象です。
  関連項目:
    直列化された形式
  形式サンプル:

         ●形式：<og:directWriteTable filename="[･･･]" ･･･ >SELECT * FROM ZYXX </og:directWriteTable >
         ●body：あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します)

         ●Tag定義：
           <og:directWriteTable
               fileURL            【TAG】保存先ディレクトリ名を指定します (初期値:FILE_URL[=filetemp/])
               filename           【TAG】ファイルを作成するときのファイル名をセットします(初期値:システムパラメータのFILE_FILENAME)
               zipFilename        【TAG】ZIPファイルを作成するときのZIPファイル名をセットします(初期値:filename + ".zip")
               encode             【TAG】ファイルを作成するときのファイルエンコーディング名をセットします (初期値:FILE_ENCODE[=UnicodeLittle])
               fileAppend         【TAG】追加モードで書き込むかどうか[true/false]を指定します(初期値:false[通常モード])
               zip                【TAG】結果をファイルに出力するときに、ZIPで圧縮するかどうか[true/false]を指定します(初期値:false)
               separator          【TAG】可変長ファイルを作成するときの項目区切り文字をセットします (初期値:TAB_SEPARATOR[= ])
               useHeader          【TAG】ヘッダーを書き込むかどうか[true/false]を指定します(初期値:true)
               displayMsg         【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します(初期値:MSG0033[　件検索しました])
               notfoundMsg        【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])
               fetchSize          【TAG】(通常は使いません)データのフェッチサイズを指定します(初期値:100)
               names              【TAG】PL/SQLを利用する場合の引数にセットすべき データの名称をCSV形式で複数指定します
               queryType          【TAG】Query を発行する為のクラスID(JDBC,JDBCErrMsg)を指定します({@og.doc03Link queryType 初期値:JDBC})
               dbid               【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT)
               useNumber          【TAG】行番号を出力するかどうか(初期値:true)
               storageType		【TAG】保存先ストレージタイプを指定します(初期値:CLOUD_TARGET)
               bucketName			【TAG】保存先バケット名を指定します(初期値:CLOUD_BUCKET)
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           >   ... Body ...
           </og:directWriteTable>

         ●使用例
             <og:directWriteTable
                 dbid        = "ORCL"               接続データベースID(初期値:DEFAULT)
                 separator   = ","                  ファイルの区切り文字(初期値:タブ)
                 fileURL     = "{@USER.ID}"    保存先ディレクトリ名
                 filename    = "{@filename}"   保存ファイル名
                 encode      = "UnicodeLittle"      保存ファイルエンコード名
                 useHeader   = "true"               保存ファイルにヘッダーを出力するかどうか
                 zip         = "true"               ZIPファイルに圧縮するかどうか
                 zipFilename = "Sample.zip"         ZIPファイルのファイル名
                 fileAppend  = "true"               ファイルを追加モードで登録するかどうか
                 displayMsg  = "MSG0033"            実行後の表示メッセージ
                 fetchSize   = "200"                DB検索する場合のフェッチするサイズ
                 storageType = "aws"                保存先のストレージタイプを指定します(初期値:CLOUD_STORAGE)
                 bucketName   = "mybucket001"         保存先のバケット名を指定します(初期値:CLOUD_BUCKET)
             >
                 SELECT * FROM ZYXX
             </og:directWriteTable >

             <og:directWriteTable
                 fileURL     = "{@USER.ID}"    保存先ディレクトリ名
                 filename    = "{@filename}"   保存ファイル名
                 names       = "AAA,BBB,CCC,･･･"    指定のキーに対応するリクエスト値を ARG_ARRAY にセットします。
                 queryType   = "JDBCErrMsg"         JDBCErrMsg 形式のPL/SQL をコールします。
             >
                { call PL/SQL(?,?,?,? ) }
             </og:directWriteTable >

  変更履歴:

    3.5.6.0 (2004/06/18) 新規作成
    3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg 形式)の実行を追加
    5.10.9.0 (2019/03/01) oota クラウドストレージ対応。(Fileクラスを拡張)

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

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

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

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

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

  - ### メソッドの概要

    メソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `int` | `doAfterBody()` Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `int` | `doStartTag()` Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `void` | `setBucketName(java.lang.String bucket)` 【TAG】保存先バケット名を設定します。
    `void` | `setDbid(java.lang.String id)` 【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT)。
    `void` | `setDisplayMsg(java.lang.String id)` 【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します(初期値:MSG0033[　件検索しました])。
    `void` | `setEncode(java.lang.String enc)` 【TAG】ファイルを作成するときのファイルエンコーディング名をセットします (初期値:FILE_ENCODE[=UnicodeLittle])。
    `void` | `setFetchSize(java.lang.String size)` 【TAG】(通常は使いません)データのフェッチサイズを指定します(初期値:100)。
    `void` | `setFileAppend(java.lang.String flag)` 【TAG】追加モードで書き込むかどうか[true/false]を指定します(初期値:false[通常モード])。
    `void` | `setFilename(java.lang.String fname)` 【TAG】ファイルを作成するときのファイル名をセットします(初期値:システムパラメータのFILE_FILENAME)。
    `void` | `setFileURL(java.lang.String url)` 【TAG】保存先ディレクトリ名を指定します (初期値:FILE_URL[=filetemp/])。
    `void` | `setNames(java.lang.String nm)` 【TAG】PL/SQLを利用する場合の引数にセットすべき データの名称をCSV形式で複数指定します。
    `void` | `setNotfoundMsg(java.lang.String id)` 【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])。
    `void` | `setQueryType(java.lang.String id)` 【TAG】Query を発行する為のクラスID(JDBC,JDBCErrMsg)を指定します(<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=5.10.9.0&VALUENAME=queryType" target="CONTENTS">初期値:JDBC</a>)。
    `void` | `setSeparator(java.lang.String sep)` 【TAG】可変長ファイルを作成するときの項目区切り文字をセットします (初期値:TAB_SEPARATOR[= ])。
    `void` | `setStorageType(java.lang.String storage)` 【TAG】保存先ストレージタイプを設定します。
    `void` | `setUseHeader(java.lang.String flag)` 【TAG】ヘッダーを書き込むかどうか[true/false]を指定します(初期値:true)。
    `void` | `setUseNumber(java.lang.String flag)` 【TAG】ファイルに行番号を出力するかどうか(初期値:true)
    `void` | `setZip(java.lang.String flag)` 【TAG】結果をファイルに出力するときに、ZIPで圧縮するかどうか[true/false]を指定します(初期値:false)。
    `void` | `setZipFilename(java.lang.String zipFile)` 【TAG】ZIPファイルを作成するときのZIPファイル名をセットします(初期値:filename + ".zip")。
    `java.lang.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`

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

    - #### DirectWriteTableTag

          public DirectWriteTableTag()

  - ### メソッドの詳細

    - #### 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)
      変更履歴:

        3.8.6.3 (2006/11/30) SQL 文の前後のスペースを取り除きます。

    - #### doEndTag

          public int doEndTag()

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

        3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg 形式)への対応
        4.0.0.0 (2007/10/18) メッセージリソース統合( getResource().getMessage ⇒ getResource().getLabel )
        5.10.9.0 (2019/03/01) クラウドストレージ対応。

    - #### release2

          protected void release2()

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

        3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg 形式)への対応
        4.0.0.0 (2007/10/10) dbid の初期値を、"DEFAULT" から null に変更
        5.5.7.1 (2012/10/05) useNumber追加
        5.10.9.0 (2019/03/01) storageType,bucketName属性を追加

    - #### setDbid

          public void setDbid(java.lang.String id)

      【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT)。
      パラメータ:
        `id` - データベース接続ID
      説明:

             検索時のDB接続IDを指定します。初期値は、DEFAULT です。

    - #### setSeparator

          public void setSeparator(java.lang.String sep)

      【TAG】可変長ファイルを作成するときの項目区切り文字をセットします (初期値:TAB_SEPARATOR[= ])。
      パラメータ:
        `sep` - 項目区切り文字
      関連項目:
        `TAB_SEPARATOR`
      説明:

             可変長ファイルを作成するときの項目区切り文字をセットします。
             (初期値:ローカル定義のTAB_SEPARATOR[={@og.value #TAB_SEPARATOR}])。

    - #### setFileURL

          public void setFileURL(java.lang.String url)

      【TAG】保存先ディレクトリ名を指定します (初期値:FILE_URL[=filetemp/])。
      パラメータ:
        `url` - 保存先ディレクトリ名
      関連項目:
        `SystemData.FILE_URL`
      説明:

             この属性で指定されるディレクトリに、ファイルをセーブします。
             指定方法は、通常の fileURL 属性と同様に、先頭が、'/' (UNIX) または、２文字目が、
             ":" (Windows)の場合は、指定のURLそのままのディレクトリに、そうでない場合は、
             fileURL = "{@USER.ID}" と指定すると、FILE_URL 属性で指定のフォルダの下に、
             さらに、各個人ID別のフォルダを作成して、そこにセーブします。
             (初期値:システム定数のFILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])。

      変更履歴:

        3.5.4.3 (2004/01/05) 内部処理を、makeFileURL に移動。
        4.0.0.0 (2005/01/31) StringUtil.urlAppend メソッドの利用
        4.0.0.0 (2007/11/20) 指定されたディレクトリ名の最後が"\"or"/"で終わっていない場合に、"/"を付加する。

    - #### setFilename

          public void setFilename(java.lang.String fname)

      【TAG】ファイルを作成するときのファイル名をセットします(初期値:システムパラメータのFILE_FILENAME)。
      パラメータ:
        `fname` - ファイル名
      説明:

             ファイルを作成するときのファイル名をセットします。

    - #### setZipFilename

          public void setZipFilename(java.lang.String zipFile)

      【TAG】ZIPファイルを作成するときのZIPファイル名をセットします(初期値:filename + ".zip")。
      パラメータ:
        `zipFile` - ZIPファイル名
      関連項目:
        `setZip( String )`
      説明:

             zip 属性に、true を指定した場合に、ZIPファイル化します。その場合のファイル名を指定します。
             なにも指定しない場合は、filename + ".zip" になります。

    - #### setEncode

          public void setEncode(java.lang.String enc)

      【TAG】ファイルを作成するときのファイルエンコーディング名をセットします (初期値:FILE_ENCODE[=UnicodeLittle])。
      パラメータ:
        `enc` - ファイルエンコーディング名
      関連項目:
        IANA Charset Registry, `SystemData.FILE_ENCODE`
      説明:

             "DEFAULT","JISAutoDetect" ,"JIS", "EUC_JP", "MS932", "SJIS" , "Windows-31J" , "Shift_JIS"
             (初期値:システム定数のFILE_ENCODE[={@og.value org.opengion.hayabusa.common.SystemData#FILE_ENCODE}])。

      変更履歴:

        2.2.0.0 (2002/12/17) 中国語(国際化)対応 エンコードの取得方法変更
        3.1.3.0 (2003/04/10) FILE_ENCODE から、エンコード情報を取得する。

    - #### setUseHeader

          public void setUseHeader(java.lang.String flag)

      【TAG】ヘッダーを書き込むかどうか[true/false]を指定します(初期値:true)。
      パラメータ:
        `flag` - ヘッダーを書き込むかどうか [true:書き込む/false:書き込まない]
      説明:

             #Name ････ ヘッダーの書き込みを指定します。
             通常は、書き込み(true)にしておき、使用側でコメントと解釈するように
             処理を行うべきです。コメントのため、append モードで途中に現れても
             無視できます。また、エンジン標準でデータを取り込む場合に、データの配置が
             変更されても取り込みプログラムはそのまま使用できます。
             初期値は、true(書き込む)です。

    - #### setFileAppend

          public void setFileAppend(java.lang.String flag)

      【TAG】追加モードで書き込むかどうか[true/false]を指定します(初期値:false[通常モード])。
      パラメータ:
        `flag` - [true:追加モード/false:新規モード]
      説明:

             ファイルを書き込む場合、追加モードで書き込むかどうかをセットします。
             新規モード(true)の場合、既存のファイルが存在し、かつ書き込み許可があれば、
             上書きで新規に作成します。
             初期値は、false(新規モード)です。

    - #### setZip

          public void setZip(java.lang.String flag)

      【TAG】結果をファイルに出力するときに、ZIPで圧縮するかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
        `flag` - ZIPで圧縮 [true:する/それ以外:しない]
      関連項目:
        `setZipFilename( String )`
      説明:

             大量に抜き出す場合、そのまま、サーバーから取り出すだけでも大変です。
             zip 属性を、true にすると、GZIP で圧縮したファイルを作成します。
             初期値は、false(圧縮しない)です。

    - #### setDisplayMsg

          public void setDisplayMsg(java.lang.String id)

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

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

    - #### setNotfoundMsg

          public void setNotfoundMsg(java.lang.String id)

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

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

    - #### setFetchSize

          public void setFetchSize(java.lang.String size)

      【TAG】(通常は使いません)データのフェッチサイズを指定します(初期値:100)。
      パラメータ:
        `size` - フェッチする行数(初期値:100)
      説明:

             より多くの行が必要なときに、データベースから取り出す必要がある行数に
             ついてのヒントを JDBC ドライバに提供します。
             指定された行数は、この Statement を使って作成された結果セットにだけ影響します。
             指定された値が 0 の場合、ヒントは無視されます。
             初期値は、100 です。

    - #### setNames

          public void setNames(java.lang.String nm)

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

             複数ある場合は、カンマ区切り文字で渡します。
             PL/SQL を使用しない場合は、無視されます。

      変更履歴:

        3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg 形式)への対応

    - #### setQueryType

          public void setQueryType(java.lang.String id)

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

             ストアドプロシージャ等を実行する場合に、queryType="JDBCErrMsg" を
             指定する必要があります。(それ以外の指定は、初期値の JDBC になります。)
             初期値は、"JDBC" です。
             {@og.doc03Link queryType Query_**** クラス}

      変更履歴:

        3.6.1.0 (2005/01/05) PL/SQLコール(JDBCErrMsg 形式)への対応

    - #### setUseNumber

          public void setUseNumber(java.lang.String flag)

      【TAG】ファイルに行番号を出力するかどうか(初期値:true)
      パラメータ:
        `flag` - 行番号出力 [true:する/それ以外:しない]
      説明:

             ファイルに行番号を出力するかどうかを指定します。
             初期値は、true(出力する)です。

      変更履歴:

        5.5.7.1 (2012/10/05) 新規追加

    - #### setStorageType

          public void setStorageType(java.lang.String storage)

      【TAG】保存先ストレージタイプを設定します。
      パラメータ:
        `storage` - ストレージタイプ
      説明:

             ファイルを保存するストレージタイプを設定します。
             未設定の場合は、システムリソースの「CLOUD_TARGET」が参照されます。
             自身のサーバを指定する場合は、「default」を設定してください。

      変更履歴:

        5.10.9.0 (2019/03/01) 新規追加

    - #### setBucketName

          public void setBucketName(java.lang.String bucket)

      【TAG】保存先バケット名を設定します。
      パラメータ:
        `bucket` - バケット名
      説明:

             ファイルを保存するバケット名を指定します。
             クラウドストレージ利用時のみ有効です。
             未設定の場合は、システムリソースの「CLOUD_BUKET」が参照されます。

      変更履歴:

        5.10.9.0 (2019/03/01) 新規追加

    - #### toString

          public java.lang.String toString()

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

        5.10.9.0 (2019/03/01) storageType,bucketNameを出力対象に追加。

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