概要 | パッケージ | クラス | 階層ツリー | 非推奨 API | 索引 | ヘルプ
openGion 5.6.9.0
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

## org.opengion.fukurou.xml
クラス HybsXMLSave

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

すべての実装されたインタフェース:
  TagElementListener

    public class HybsXMLSave

extends java.lang.Object
implements TagElementListener

このクラスは、オラクル XDKの oracle.xml.sql.dml.OracleXMLSave クラスと ほぼ同様の目的で使用できるクラスです。 拡張XDK形式のXMLファイルを読み込み、データベースに INSERT します。 拡張XDK形式の元となる オラクル XDK(Oracle XML Developer's Kit)については、以下の リンクを参照願います。 XDK(Oracle XML Developer's Kit) このクラスでは、MAP を登録する[ setDefaultMap( Map ) ]ことにより、 XMLファイルに存在しないカラムを初期値として設定することが可能になります。 例えば、登録日や、登録者、または、テンプレートより各システムID毎に 登録するなどです。 同様に、読み取った XMLファイルの情報を書き換える機能[ setAfterMap( Map ) ]メソッド により、カラムの値の置き換えも可能です。 拡張XDK形式の元となる オラクル XDK(Oracle XML Developer's Kit)については、以下の リンクを参照願います。 XDK(Oracle XML Developer's Kit) 拡張XDK形式とは、ROW 以外に、SQL処理用タグ(EXEC_SQL)を持つ XML ファイルです。 また、登録するテーブル(table)を ROWSETタグの属性情報として付与することができます。 (大文字小文字に注意) これは、オラクルXDKで処理する場合、無視されますので、同様に扱うことが出来ます。 この、EXEC_SQL は、それそれの XMLデータをデータベースに登録する際に、 SQL処理を自動的に流す為の、SQL文を記載します。 この処理は、イベント毎に実行される為、その配置順は重要です。 このタグは、複数記述することも出来ますが、BODY部には、１つのSQL文のみ記述します。 <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>

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

コンストラクタの概要
`HybsXMLSave(java.sql.Connection conn)` コネクションを指定して、オブジェクトを構築します。
`HybsXMLSave(java.sql.Connection conn, java.lang.String table)` コネクションとテーブル名を指定して、オブジェクトを構築します。

メソッドの概要
`void` | `actionExecSQL(TagElement tag)` <EXEC_SQL> タグの endElement 処理毎に呼び出されます。
`void` | `actionInit(TagElement tag)` <ROWSET> タグの一番最初に呼び出されます。
`void` | `actionMergeSQL(TagElement tag)` <MERGE_SQL> タグの endElement 処理時に呼び出されます。
`void` | `actionRow(TagElement tag)` <ROW> タグの endElement 処理毎に呼び出されます。
`int` | `getDDLCount()` データベースにDDL（データ定義言語：Data Definition Language）処理した件数を返します。
`int` | `getDeleteCount()` データベースに変更(更新、削除を含む)した件数を返します。
`int` | `getInsertCount()` データベースに追加した件数を返します。
`java.lang.String` | `getTableName()` 実際に登録された テーブル名を返します。
`int` | `getUpdateCount()` データベースを更新した件数を返します。
`void` | `insertXML(java.io.Reader reader)` データベースに追加処理(INSERT)を行います。
`static void` | `main(java.lang.String[] args)` テスト用のメインメソッド java org.opengion.fukurou.xml.HybsXMLSave USER PASSWD URL TABLE FILE [ENCODE] [DRIVER] USER : DB接続ユーザー(GE) PASSWD: DB接続パスワード(GE) URL : DB接続JDBCドライバURL(jdbc:oracle:thin:@localhost:1521:HYBS TABLE : 登録するテーブルID(GE21) FILE : 登録するORACLE XDK 形式 XMLファイル(GE21.xml) ENCODE: ファイルのエンコード 初期値:UTF-8 DRIVER: JDBCドライバー 初期値:oracle.jdbc.OracleDriver
`void` | `setAfterMap(java.util.Map<java.lang.String,java.lang.String> map)` XMLファイルを読み取った後で指定するカラムと値のペア(マップ)情報をセットします。
`void` | `setDefaultMap(java.util.Map<java.lang.String,java.lang.String> map)` XMLファイルを読み取る前に指定するカラムと値のペア(マップ)情報をセットします。
`void` | `setKeyColumns(java.lang.String[] keyCols)` UPDATE,DELETE を行う場合の WHERE 条件になるキー配列 このキーの AND 条件でカラムを特定し、UPDATE,DELETE などの処理を 行います。

クラス java.lang.Object から継承されたメソッド
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

コンストラクタの詳細

### HybsXMLSave

    public HybsXMLSave(java.sql.Connection conn)

  コネクションを指定して、オブジェクトを構築します。 テーブル名は、拡張XDK形式のROWSETタグのtableName属性に 記述しておく必要があります。

  パラメータ:
    `conn` - データベース接続

### HybsXMLSave

    public HybsXMLSave(java.sql.Connection conn,
                       java.lang.String table)

  コネクションとテーブル名を指定して、オブジェクトを構築します。 ここで指定するテーブル名は、デフォルトテーブルという扱いです。 拡張XDK形式のROWSETタグのtableName属性にテーブル名が記述されている場合は、 そちらが優先されます。

  パラメータ:
    `conn` - データベース接続
    `table` - テーブル名(ROWSETタグのtable属性が未設定時に使用)
  変更履歴:

    4.0.0.0 (2007/09/25) ParameterMetaData を使用したパラメータ設定追加。
    5.3.8.0 (2011/08/01) useParamMetaData を このクラスで直接取得する。(PostgreSQL対応)

メソッドの詳細

### actionInit

    public void actionInit(TagElement tag)

  <ROWSET> タグの一番最初に呼び出されます。 ROWSET の属性である、table 属性と、dbid 属性 を、TagElement の get メソッドで取得できます。 取得時のキーは、それぞれ、"TABLE" と "DBID" です。

  定義:
    インタフェース `TagElementListener` 内の `actionInit`
  パラメータ:
    `tag` - タグエレメント
  関連項目:
    `TagElement`, `HybsXMLHandler.setTagElementListener( TagElementListener )`

### actionRow

    public void actionRow(TagElement tag)

  <ROW> タグの endElement 処理毎に呼び出されます。 この Listener をセットすることにより、行データを取得都度、 TagElement オブジェクトを作成し、このメソッドが呼び出されます。

  定義:
    インタフェース `TagElementListener` 内の `actionRow`
  パラメータ:
    `tag` - タグエレメント
  関連項目:
    `TagElement`, `HybsXMLHandler.setTagElementListener( TagElementListener )`
  変更履歴:

    4.0.0.0 (2007/05/09) ParameterMetaData を使用したパラメータ設定追加。
    4.0.0.0 (2007/09/25) isOracle から useParamMetaData に変更
    4.3.7.0 (2009/06/01) HSQLDB対応
    5.3.8.0 (2011/08/01) useParamMetaData setNull 対応(PostgreSQL対応)
    5.6.6.1 (2013/07/12) lastSQL 対応。デバッグ用に、最後に使用したSQL文を残します。

### actionExecSQL

    public void actionExecSQL(TagElement tag)

  <EXEC_SQL> タグの endElement 処理毎に呼び出されます。 getBody メソッドを使用して、このタグのBODY部の文字列を取得します。 この Listener をセットすることにより、EXEC_SQL データを取得都度、 TagElement オブジェクトを作成し、このメソッドが呼び出されます。 EXEC_SQL タグでは、delete文やupdate文など、特殊な前処理や後処理用の SQLと DDL（データ定義言語：Data Definition Language）の処理なども記述できます。 ここでは簡易的に、何か実行された場合は、delete 処理と考え、削除カウントを加算し、 0件で帰ってきた場合に、DDLが実行されたと考え、DDLカウントを＋１します。 ただし、0件 delete も考えられるため、SQL文の先頭文字によるチェックは入れておきます。

  定義:
    インタフェース `TagElementListener` 内の `actionExecSQL`
  パラメータ:
    `tag` - タグエレメント
  関連項目:
    `TagElement`, `HybsXMLHandler.setTagElementListener( TagElementListener )`
  変更履歴:

    5.6.6.1 (2013/07/12) lastSQL 対応。デバッグ用に、最後に使用したSQL文を残します。
    5.6.7.0 (2013/07/27) DDL（データ定義言語：Data Definition Language）の処理件数追加

### actionMergeSQL

    public void actionMergeSQL(TagElement tag)

  <MERGE_SQL> タグの endElement 処理時に呼び出されます。 getBody メソッドを使用して、このタグのBODY部の文字列を取得します。 MERGE_SQLタグは、マージ処理したいデータ部よりも上位に記述しておく 必要がありますが、中間部に複数回記述しても構いません。 このタグが現れるまでは、INSERT のみ実行されます。このタグ以降は、 一旦 UPDATE し、結果が ０件の場合は、INSERTする流れになります。 完全に INSERT のみであるデータを前半に、UPDATE/INSERTを行う データを後半に、その間に、MERGE_SQL タグを入れることで、無意味な UPDATE を避けることが可能です。 この Listener をセットすることにより、MERGE_SQL データを取得都度、 TagElement オブジェクトを作成し、このメソッドが呼び出されます。

  定義:
    インタフェース `TagElementListener` 内の `actionMergeSQL`
  パラメータ:
    `tag` - タグエレメント
  関連項目:
    `TagElement`, `HybsXMLHandler.setTagElementListener( TagElementListener )`
  変更履歴:

    4.0.0.0 (2007/05/09) ParameterMetaData を使用したパラメータ設定追加。
    4.0.0.0 (2007/09/25) isOracle から useParamMetaData に変更
    5.6.6.1 (2013/07/12) lastSQL 対応。デバッグ用に、最後に使用したSQL文を残します。

### setKeyColumns

    public void setKeyColumns(java.lang.String[] keyCols)

  UPDATE,DELETE を行う場合の WHERE 条件になるキー配列 このキーの AND 条件でカラムを特定し、UPDATE,DELETE などの処理を 行います。

  パラメータ:
    `keyCols` - WHERE条件になるキー配列

### setDefaultMap

    public void setDefaultMap(java.util.Map<java.lang.String,java.lang.String> map)

  XMLファイルを読み取る前に指定するカラムと値のペア(マップ)情報をセットします。 このカラムと値のペアのマップは、オブジェクト構築前に設定される為、 XMLファイルにキーが存在している場合は、値が書き変わります。(XML優先) XMLファイルにキーが存在していない場合は、ここで指定するMapの値が 初期設定値として使用されます。 ここで指定する Map に LinkedHashMap を使用する場合、カラム順も 指定することが出来ます。

  パラメータ:
    `map` - 初期設定するカラムデータマップ
  関連項目:
    `setAfterMap( Map )`

### setAfterMap

    public void setAfterMap(java.util.Map<java.lang.String,java.lang.String> map)

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

  パラメータ:
    `map` - 後設定するカラムデータマップ
  関連項目:
    `setDefaultMap( Map )`

### insertXML

    public void insertXML(java.io.Reader reader)

  データベースに追加処理(INSERT)を行います。 先に指定されたコネクションを用いて、指定のテーブルに INSERT します。 引数には、XMLファイルを指定したリーダーをセットします。 コネクションは、終了後、コミットされます。(close されません。) リーダーのクローズは、ここでは行っていません。

  パラメータ:
    `reader` - XMLファイルを指定するリーダー
  変更履歴:

    5.1.1.0 (2009/11/11) insMeta , updMeta のクリア(気休め)

### getInsertCount

    public int getInsertCount()

  データベースに追加した件数を返します。

  戻り値:
    登録件数

### getUpdateCount

    public int getUpdateCount()

  データベースを更新した件数を返します。 これは、拡張XDK形式で、MERGE_SQL タグを使用した場合の更新処理件数を 合計した値を返します。

  戻り値:
    更新件数

### getDeleteCount

    public int getDeleteCount()

  データベースに変更(更新、削除を含む)した件数を返します。 これは、拡張XDK形式で、EXEC_SQL タグを使用した場合の実行件数を合計した 値を返します。 よって、更新か、追加か、削除かは、判りませんが、通常 登録前に削除する ケースで使われることから、deleteCount としています。

  戻り値:
    変更件数(主に、削除件数)

### getDDLCount

    public int getDDLCount()

  データベースにDDL（データ定義言語：Data Definition Language）処理した件数を返します。 これは、拡張XDK形式で、EXEC_SQL タグを使用した場合の実行件数を合計した 値を返します。 EXEC_SQL では、登録前に削除する delete 処理も、EXEC_SQL タグを使用して実行しますが その処理と分けてカウントします。

  戻り値:
    DDL（データ定義言語：Data Definition Language）処理した件数
  変更履歴:

    5.6.7.0 (2013/07/27) DDL（データ定義言語：Data Definition Language）の処理件数追加

### getTableName

    public java.lang.String getTableName()

  実際に登録された テーブル名を返します。 テーブル名は、拡張XDK形式のROWSETタグのtableName属性に 記述しておくか、コンストラクターで引数として渡します。 両方指定された場合は、ROWSETタグのtableName属性が優先されます。 ここでの返り値は、実際に使用された テーブル名です。

  戻り値:
    変更件数(主に、削除件数)

### main

    public static void main(java.lang.String[] args)
                     throws java.lang.ClassNotFoundException,
                            java.sql.SQLException

  テスト用のメインメソッド java org.opengion.fukurou.xml.HybsXMLSave USER PASSWD URL TABLE FILE [ENCODE] [DRIVER] USER : DB接続ユーザー(GE) PASSWD: DB接続パスワード(GE) URL : DB接続JDBCドライバURL(jdbc:oracle:thin:@localhost:1521:HYBS TABLE : 登録するテーブルID(GE21) FILE : 登録するORACLE XDK 形式 XMLファイル(GE21.xml) ENCODE: ファイルのエンコード 初期値:UTF-8 DRIVER: JDBCドライバー 初期値:oracle.jdbc.OracleDriver

  パラメータ:
    `args` - コマンド引数配列
  例外:
    `java.lang.Exception`
    `java.lang.ClassNotFoundException`
    `java.sql.SQLException`
  変更履歴:

    5.1.1.0 (2009/12/01) MySQL対応 明示的に、TRANSACTION_READ_COMMITTED を指定する。
    5.6.7.0 (2013/07/27) DDL（データ定義言語：Data Definition Language）の処理件数追加

概要 | パッケージ | クラス | 階層ツリー | 非推奨 API | 索引 | ヘルプ
| openGion 5.6.9.0
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

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