org.opengion.hayabusa.taglib

## クラス DirectXMLSaveTag

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

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

  指定の拡張XDK形式ファイルを直接データベースに登録するデータ入力タグです。 このクラスは、オラクル XDKの oracle.xml.sql.dml.OracleXMLSave クラスと ほぼ同様の目的で使用できる org.opengion.fukurou.xml.HybsXMLSave のラッパークラスです。 拡張XDK形式のXMLファイルを読み込み、データベースに INSERT します。 拡張XDK形式の元となる オラクル XDK(Oracle XML Developer's Kit)については、以下の リンクを参照願います。 XDK(Oracle XML Developer's Kit) このタグでは、keys,vals を登録することにより、MLファイルに存在しないカラムを 追加したり、XMLファイルの情報を書き換えることが可能になります。 例えば、登録日や、登録者、または、テンプレートより各システムID毎に 登録するなどです。 拡張XDK形式とは、ROW 以外に、SQL処理用タグ(EXEC_SQL)を持つ XML ファイルです。 また、登録するテーブル(table)を ROWSETタグの属性情報として付与することができます。 (大文字小文字に注意) これは、オラクルXDKで処理する場合、無視されますので、同様に扱うことが出来ます。 この、EXEC_SQL は、それそれの XMLデータをデータベースに登録する際に、 SQL処理を自動的に流す為の、SQL文を記載します。 この処理は、イベント毎に実行される為、その配置順は重要です。 このタグは、複数記述することも出来ますが、BODY部には、１つのSQL文のみ記述します。 ※ このタグは、Transaction タグの対象です。 <ROWSET tableName="XX" > <EXEC_SQL> 最初に記載して、初期処理(データクリア等)を実行させる。 delete from GEXX where YYYYY </EXEC_SQL> <MERGE_SQL> このSQL文で UPDATEして、結果が０件ならINSERTを行います。 update GEXX set AA=[AA] , BB=[BB] where CC=[CC] </MERGE_SQL> <ROW num="1"> <カラム1>値1</カラム1> ･･･ <カラムn>値n</カラムn> </ROW> ･･･ <ROW num="n"> ･･･ </ROW> <EXEC_SQL> 最後に記載して、項目の設定(整合性登録)を行う。 update GEXX set AA='XX' , BB='XX' where YYYYY </EXEC_SQL> <ROWSET>
  関連項目:
    直列化された形式
  形式サンプル:

         ●形式：<og:directXMLSave filename="[･･･]" ･･･ />
         ●body：なし

         ●Tag定義：
           <og:directXMLSave
               dbid               【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT)
               fileURL            【TAG】読み取り元ディレクトリ名を指定します (初期値:FILE_URL[=filetemp/])
               filename           【TAG】ファイルを作成するときのファイル名をセットします (初期値:FILE_FILENAME[=file.xls])
               displayMsg         【TAG】query の結果を画面上に表示するメッセージIDを指定します(初期値:MSG0040[　件登録しました])
               keys               【TAG】XMLファイルを読み取った後で指定するキーをCSV形式で複数指定します
               vals               【TAG】XMLファイルを読み取った後で指定する値をCSV形式で複数指定します
               caseKey            【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null)
               caseVal            【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null)
               caseNN             【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:true)
               caseNull           【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:true)
               storageType		【TAG】読み取り元ストレージタイプを指定します(初期値:CLOUD_TARGET)
               bucketName			【TAG】読み取り元バケット名を指定します(初期値:CLOUD_BUCKET)
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           />

         ●使用例
             <og:directXMLSave
                 dbid         = "ORCL"                接続データベースID(初期値:DEFAULT)
                 fileURL      = "{@USER.ID}"     読み取り元ディレクトリ名
                 filename     = "{@filename}"    読み取り元ファイル名
                 displayMsg   = "MSG0040"             登録完了後のメッセージ
                 storageType     = "aws"              読み取り元ストレージタイプを指定します(初期値:CLOUD_STORAGE)
                 bucketName       = "mybucket001"       読み取り元バケット名を指定します(初期値:CLOUD_BUCKET)
             />

  変更履歴:

    4.0.0.0 (2007/03/08) 新規追加
    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`

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

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

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

    メソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `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】query の結果を画面上に表示するメッセージIDを指定します(初期値:MSG0040[　件登録しました])。
    `void` | `setFilename(java.lang.String filename)` 【TAG】ファイルを作成するときのファイル名をセットします (初期値:FILE_FILENAME[=file.xls])。
    `void` | `setFileURL(java.lang.String url)` 【TAG】読み取り元ディレクトリ名を指定します (初期値:FILE_URL[=filetemp/])。
    `void` | `setKeys(java.lang.String key)` 【TAG】XMLファイルを読み取った後で指定するキーをCSV形式で複数指定します。
    `void` | `setStorageType(java.lang.String storage)` 【TAG】読み取り元ストレージタイプを設定します。
    `void` | `setVals(java.lang.String val)` 【TAG】XMLファイルを読み取った後で指定する値をCSV形式で複数指定します。
    `java.lang.String` | `toString()` このオブジェクトの文字列表現を返します。

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

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

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

    - #### DirectXMLSaveTag

          public DirectXMLSaveTag()

  - ### メソッドの詳細

    - #### doStartTag

          public int doStartTag()

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

        5.6.6.1 (2013/07/12) caseKey 、caseVal 属性対応

    - #### doEndTag

          public int doEndTag()

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

        4.0.0.0 (2007/10/18) メッセージリソース統合( getResource().getMessage ⇒ getResource().getLabel )
        4.0.0.1 (2007/12/03) try ～ catch ～ finally をきちんと行う。
        5.1.9.0 (2010/08/01) Transaction 対応
        5.3.7.0 (2011/07/01) TransactionReal の引数変更
        5.5.2.6 (2012/05/25) findbugs対応。例外経路で null 値を利用することが保証されています。
        5.6.6.1 (2013/07/12) caseKey 、caseVal 属性対応
        5.6.7.0 (2013/07/27) DDL（データ定義言語：Data Definition Language）の処理件数追加

    - #### release2

          protected void release2()

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

        4.0.0.0 (2007/10/10) dbid の初期値を、"DEFAULT" から null に変更
        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 です。

    - #### setFileURL

          public void setFileURL(java.lang.String url)

      【TAG】読み取り元ディレクトリ名を指定します (初期値:FILE_URL[=filetemp/])。
      パラメータ:
        `url` - ファイル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}])。

      変更履歴:

        4.0.0.0 (2007/11/20) 指定されたディレクトリ名の最後が"\"or"/"で終わっていない場合に、"/"を付加する。

    - #### setFilename

          public void setFilename(java.lang.String filename)

      【TAG】ファイルを作成するときのファイル名をセットします (初期値:FILE_FILENAME[=file.xls])。
      パラメータ:
        `filename` - ファイル名
      関連項目:
        `SystemData.FILE_FILENAME`
      説明:

             ファイルを作成するときのファイル名をセットします。
             (初期値:システム定数のFILE_FILENAME[={@og.value org.opengion.hayabusa.common.SystemData#FILE_FILENAME}])。

    - #### setDisplayMsg

          public void setDisplayMsg(java.lang.String id)

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

             ここでは、検索結果の件数や登録された件数をまず出力し、
             その次に、ここで指定したメッセージをリソースから取得して
             表示します。
             表示させたくない場合は, displayMsg = "" をセットしてください。
             初期値は、検索件数を表示します。
             ※ この属性には、リクエスト変数({@XXXX})は使用できません。

    - #### setKeys

          public void setKeys(java.lang.String key)

      【TAG】XMLファイルを読み取った後で指定するキーをCSV形式で複数指定します。
      パラメータ:
        `key` - リンク先に渡すキー
      関連項目:
        `setVals( String )`
      説明:

             XMLファイルを読み取った後で、データを変更できます。
             変更するカラム名(キー)をCSV形式で指定します。
             XMLファイルにキーが存在していた場合は、vals で指定の値に書き換えます。
             キーが存在していない場合は、ここで指定するキーと値が、データとして
             追加されます。
             例えば、登録日や、登録者、または、テンプレートより各システムID毎に
             登録するなどの使い方を想定しています。
             分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。
             こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。

    - #### setVals

          public void setVals(java.lang.String val)

      【TAG】XMLファイルを読み取った後で指定する値をCSV形式で複数指定します。
      パラメータ:
        `val` - keys属性に対応する値
      関連項目:
        `setKeys( String )`
      説明:

             XMLファイルを読み取った後で、データを変更できます。
             変更する値をCSV形式で指定します。
             XMLファイルにキーが存在していた場合は、vals で指定の値に書き換えます。
             キーが存在していない場合は、ここで指定するキーと値が、データとして
             追加されます。
             例えば、登録日や、登録者、または、テンプレートより各システムID毎に
             登録するなどの使い方を想定しています。
             分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。
             こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。

    - #### 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.