パッケージ org.opengion.fukurou.xml

# クラス XMLFileLoader

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

public final class XMLFileLoader extends Object
ORACLE XDK 形式のXMLﾌｧｲﾙを読み取って、ﾃﾞｰﾀﾍﾞｰｽに登録します。 これは、Ver5の時は、org.opengion.hayabusa.common.InitFileLoader として 使用されていたｸﾗｽを改造したものです。 InitFileLoader は、Ver6 では廃止されていますので、ご注意ください。 登録の実行有無の判断は、ﾌｧｲﾙの更新時刻より判断します。(useTimeStamp=true の場合) これは、読み取りﾌｧｲﾙの更新時刻が、0でない場合、読み取りを行います。 読み取りが完了した場合は、更新時刻を 0 に設定します。 読み取るﾌｧｲﾙは、ｸﾗｽﾛｰﾀﾞｰのﾘｿｰｽや、指定のﾌｫﾙﾀﾞ以下のﾌｧｲﾙ、そして、 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) ﾊﾟｯｹｰｼﾞ、ｸﾗｽﾌｧｲﾙ変更
導入されたバージョン:
  JDK7.0,

- ## フィールドの概要

  フィールド
  修飾子とタイプ
  フィールド
  説明
  `static final int`
  `DDL`
  getCRUDCount() で返される ｶｳﾝﾄ数の配列番号 3
  `static final int`
  `DEL`
  getCRUDCount() で返される ｶｳﾝﾄ数の配列番号 1
  `static final int`
  `INS`
  getCRUDCount() で返される ｶｳﾝﾄ数の配列番号 0
  `static final int`
  `UPD`
  getCRUDCount() で返される ｶｳﾝﾄ数の配列番号 2

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

  コンストラクタ
  コンストラクタ
  説明
  `XMLFileLoader(Connection conn, boolean useTimeStamp)`
  ｺﾈｸｼｮﾝを引数にする、ｺﾝｽﾄﾗｸﾀｰです。

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `int[]`
  `getCRUDCount()`
  XMLﾌｧｲﾙを登録後の、追加,更新,削除,実行 のｶｳﾝﾄ配列を返します。
  `void`
  `loadClassPathFiles(String path)`
  対象となるﾌｧｲﾙ群を ClassLoader の指定ﾊﾟｽから、検索します。
  `void`
  `loadClassPathFiles(String path, String keyword)`
  対象となるﾌｧｲﾙ群を ClassLoader の指定ﾊﾟｽから、検索します。
  `void`
  `loadXMLFiles(File fileObj)`
  対象となるﾌｧｲﾙ群を ﾌｧｲﾙ単体、ﾌｫﾙﾀﾞ階層以下、ZIPﾌｧｲﾙ から、検索します。
  `void`
  `setAfterMap(Map<String,String> map)`
  XMLﾌｧｲﾙを読み取った後で指定するｶﾗﾑと値のﾍﾟｱ(ﾏｯﾌﾟ)情報をｾｯﾄします。
  `void`
  `setLogWriter(Writer log)`
  ﾛｸﾞ出力を行う 内部ﾛｸﾞ(Writer) を指定します。

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

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

- ## フィールド詳細

  - ### INS

    public static final int INS
    getCRUDCount() で返される ｶｳﾝﾄ数の配列番号 0
    関連項目:
      - 定数フィールド値

  - ### DEL

    public static final int DEL
    getCRUDCount() で返される ｶｳﾝﾄ数の配列番号 1
    関連項目:
      - 定数フィールド値

  - ### UPD

    public static final int UPD
    getCRUDCount() で返される ｶｳﾝﾄ数の配列番号 2
    関連項目:
      - 定数フィールド値

  - ### DDL

    public static final int DDL
    getCRUDCount() で返される ｶｳﾝﾄ数の配列番号 3
    関連項目:
      - 定数フィールド値

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

  - ### XMLFileLoader

    public XMLFileLoader(Connection conn, boolean useTimeStamp)
    ｺﾈｸｼｮﾝを引数にする、ｺﾝｽﾄﾗｸﾀｰです。 classPath="resource" で初期化された XMLFileLoader を作成します。 useTimeStamp 属性を true に設定すると、このﾌｧｲﾙを読み取る都度 ﾀｲﾑｽﾀﾝﾌﾟを、ｸﾘｱします。 また、ﾀｲﾑｽﾀﾝﾌﾟがｸﾘｱされたﾌｧｲﾙは読み込みませんので、機能的に 一度しか読み込まないという事になります。
    パラメータ:
      `conn` - 登録用ｺﾈｸｼｮﾝ
      `useTimeStamp` - ﾀｲﾑｽﾀﾝﾌﾟの管理を行うかどうか[true:行う/false:行わない]

- ## メソッドの詳細

  - ### setLogWriter

    public void setLogWriter(Writer log)
    ﾛｸﾞ出力を行う 内部ﾛｸﾞ(Writer) を指定します。 内部ﾛｸﾞ(Writer) の初期値は、null とします。 内部ﾛｸﾞ(Writer)が null の場合は、なにもしません。
    パラメータ:
      `log` - Writerｵﾌﾞｼﾞｪｸﾄ
    変更履歴:
      6.0.0.0 (2014/04/11) ﾛｸﾞ関係を Writer で管理します。

  - ### setAfterMap

    public void setAfterMap(Map<String,String> 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(String path)
    対象となるﾌｧｲﾙ群を ClassLoader の指定ﾊﾟｽから、検索します。 対象ﾌｧｲﾙは、指定ﾌｫﾙﾀﾞに ﾃｰﾌﾞﾙ名.xml 形式で格納しておきます。 このﾌｫﾙﾀﾞのﾌｧｲﾙをﾋﾟｯｸｱｯﾌﾟします。 useTimeStamp 属性を true に設定すると、このﾌｧｲﾙを読み取る都度 ﾀｲﾑｽﾀﾝﾌﾟを、ｸﾘｱします。 また、ﾀｲﾑｽﾀﾝﾌﾟがｸﾘｱされたﾌｧｲﾙは読み込みませんので、機能的に 一度しか読み込まないという事になります。
    パラメータ:
      `path` - 対象となるﾌｧｲﾙ群を検索するｸﾗｽﾊﾟｽ
    変更履歴:
      8.5.0.0 (2023/04/21) 対象外の resource を読込んでいた為、判定条件を変更

  - ### loadClassPathFiles

    public void loadClassPathFiles(String path, String keyword)
    対象となるﾌｧｲﾙ群を ClassLoader の指定ﾊﾟｽから、検索します。 対象ﾌｧｲﾙは、指定ﾌｫﾙﾀﾞに ﾃｰﾌﾞﾙ名.xml 形式で格納しておきます。 このﾌｫﾙﾀﾞのﾌｧｲﾙをﾋﾟｯｸｱｯﾌﾟします。 useTimeStamp 属性を true に設定すると、このﾌｧｲﾙを読み取る都度 ﾀｲﾑｽﾀﾝﾌﾟを、ｸﾘｱします。 また、ﾀｲﾑｽﾀﾝﾌﾟがｸﾘｱされたﾌｧｲﾙは読み込みませんので、機能的に 一度しか読み込まないという事になります。
    パラメータ:
      `path` - 対象となるﾌｧｲﾙ群を検索するｸﾗｽﾊﾟｽ
      `keyword` - 検索対象ﾌｧｲﾙのｷｰﾜｰﾄﾞ
    変更履歴:
      6.0.0.0 (2014/04/11) 新規追加, 6.4.0.4 (2015/12/26) Writer(ﾛｸﾞ)のCloseは、ここでは行わない。, 6.8.5.1 (2018/01/15) ﾌｧｲﾙ名は、##ﾊﾞｰｼﾞｮﾝ番号を変換しておく必要がある。, 8.5.0.0 (2023/04/21) 対象外の resource を読込んでいた為、判定条件を変更

  - ### loadXMLFiles

    public void loadXMLFiles(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は、ここでは行わない。