org.opengion.fukurou.xml

## クラス XMLFileLoader

- java.lang.Object
- - org.opengion.fukurou.xml.XMLFileLoader

-     public final class XMLFileLoader
      extends java.lang.Object

       ORACLE XDK 形式のXMLファイルを読み取って、データベースに登録します。

       これは、Ver5の時は、org.opengion.hayabusa.common.InitFileLoader として
       使用されていたクラスを改造したものです。
       InitFileLoader は、Ver6 では廃止されていますので、ご注意ください。

       登録の実行有無の判断は、ファイルの更新時刻より判断します。(useTimeStamp=true の場合)
       これは、読み取りファイルの更新時刻が、０でない場合、読み取りを行います。
       読み取りが完了した場合は、更新時刻を ０ に設定します。
       読み取るファイルは、クラスローダーのリソースや、指定のフォルダ以下のファイル、そして、
       zip 圧縮されたファイルの中から、拡張子が xml で、UTF-8でエンコードされている
       必要があります。通常は、ファイル名がテーブル名と同一にしておく必要がありますが、
       ROWSETのtable属性にテーブル名をセットしておくことも可能です。
       ファイルの登録順は、原則、クラスローダーの検索順に、見つかった全てのファイルを
       登録します。データそのものは、INSERT のみ対応していますので、原則登録順は無視されます。
       ただし、拡張XDK 形式で、EXEC_SQL タグを使用した場合は、登録順が影響する可能性があります。
       例：GE12.xml GE12 テーブルに登録するXMLファイル
       登録時に、既存のデータの破棄が必要な場合は、拡張XDK 形式のXMLファイルを
       作成してください。これは、EXEC_SQL タグに書き込んだSQL文を実行します。
       詳細は、HybsXMLHandler クラスを参照してください。

         <ROWSET tableName="XX" >
             <EXEC_SQL>                    最初に記載して、初期処理(データクリア等)を実行させる。
                 delete from GEXX where YYYYY
             </EXEC_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>

  変更履歴:

    4.0.0.0 (2004/12/31) 新規作成(org.opengion.hayabusa.common.InitFileLoader)
    6.0.0.0 (2014/04/11) パッケージ、クラスファイル変更

  バージョン
    6.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK7.0,

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

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `static int` | `DDL`
    `static int` | `DEL`
    `static int` | `INS` getCRUDCount() で返される カウント数の配列番号
    `static int` | `UPD`

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

    コンストラクタ
    コンストラクタと説明
    `XMLFileLoader(java.sql.Connection conn, boolean useTimeStamp)` コネクションを引数にする、コンストラクターです。

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

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `int[]` | `getCRUDCount()` XMLファイルを登録後の、追加,更新,削除,実行 のカウント配列を返します。
    `void` | `loadClassPathFiles(java.lang.String path)` 対象となるファイル群を ClassLoader の指定パスから、検索します。
    `void` | `loadXMLFiles(java.io.File fileObj)` 対象となるファイル群を ファイル単体、フォルダ階層以下、ZIPファイル から、検索します。
    `void` | `setAfterMap(java.util.Map map)` XMLファイルを読み取った後で指定するカラムと値のペア(マップ)情報をセットします。
    `void` | `setLogWriter(java.io.Writer log)` ログ出力を行う 内部ログ(Writer) を指定します。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

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

    - #### INS

          public static final int INS

      getCRUDCount() で返される カウント数の配列番号
      関連項目:
        定数フィールド値

    - #### DEL

          public static final int DEL

      関連項目:
        定数フィールド値

    - #### UPD

          public static final int UPD

      関連項目:
        定数フィールド値

    - #### DDL

          public static final int DDL

      関連項目:
        定数フィールド値

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

    - #### XMLFileLoader

          public XMLFileLoader(java.sql.Connection conn,
                               boolean useTimeStamp)

      コネクションを引数にする、コンストラクターです。 classPath="resource" で初期化された XMLFileLoader を作成します。 useTimeStamp 属性を true に設定すると、このファイルを読み取る都度 タイムスタンプを、クリアします。 また、タイムスタンプがクリアされたファイルは読み込みませんので、機能的に 一度しか読み込まないという事になります。
      パラメータ:
        `conn` - 登録用コネクション
        `useTimeStamp` - タイムスタンプの管理を行うかどうか[true:行う/false:行わない]

  - ### メソッドの詳細

    - #### setLogWriter

          public void setLogWriter(java.io.Writer log)

      ログ出力を行う 内部ログ(Writer) を指定します。 内部ログ(Writer) の初期値は、null とします。 内部ログ(Writer)が null の場合は、なにもしません。
      パラメータ:
        `log` - Writerオブジェクト
      変更履歴:

        6.0.0.0 (2014/04/11) ログ関係を Writer で管理します。

    - #### setAfterMap

          public void setAfterMap(java.util.Map map)

      XMLファイルを読み取った後で指定するカラムと値のペア(マップ)情報をセットします。 このカラムと値のペアのマップは、オブジェクト構築後に設定される為、 XMLファイルのキーの存在に関係なく、Mapのキーと値が使用されます。(Map優先) null を設定した場合は、なにも処理されません。
      パラメータ:
        `map` - 後設定するカラムデータマップ
      変更履歴:

        6.0.0.0 (2014/04/11) 新規追加

    - #### getCRUDCount

          public int[] getCRUDCount()

      XMLファイルを登録後の、追加,更新,削除,実行 のカウント配列を返します。 簡易的に処理したいために、配列に設定しています。 順番に、追加,更新,削除,実行 のカウント値になります。
      戻り値:
        追加,更新,削除,実行 のカウント配列
      変更履歴:

        6.0.0.0 (2014/04/11) 新規追加

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

    - #### loadClassPathFiles

          public void loadClassPathFiles(java.lang.String path)

      対象となるファイル群を ClassLoader の指定パスから、検索します。 対象ファイルは、指定フォルダに テーブル名.xml 形式で格納しておきます。 このフォルダのファイルをピックアップします。 useTimeStamp 属性を true に設定すると、このファイルを読み取る都度 タイムスタンプを、クリアします。 また、タイムスタンプがクリアされたファイルは読み込みませんので、機能的に 一度しか読み込まないという事になります。
      パラメータ:
        `path` - 対象となるファイル群を検索する、クラスパス
      変更履歴:

        6.0.0.0 (2014/04/11) 新規追加
        6.4.0.4 (2015/12/26) Writer(ログ)のCloseは、ここでは行わない。
        6.8.5.1 (2018/01/15) ファイル名は、##バージョン番号を変換しておく必要がある。

    - #### loadXMLFiles

          public void loadXMLFiles(java.io.File fileObj)

      対象となるファイル群を ファイル単体、フォルダ階層以下、ZIPファイル から、検索します。 対象ファイルは、テーブル名.xml 形式で格納しておきます。 この処理では、ファイル単体(*.xml)、フォルダ階層以下、ZIPファイル(*.jar , *.zip) は混在できません。 最初に判定した形式で、個々の処理に振り分けています。
      パラメータ:
        `fileObj` - 読取元のファイルオブジェクト
      関連項目:
        `loadClassPathFiles( String )`
      変更履歴:

        6.0.0.0 (2014/04/11) 新規追加
        6.4.0.4 (2015/12/26) Writer(ログ)のCloseは、ここでは行わない。

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