openGionopenGion
5.5.5.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部には、1つのSQL文のみ記述します。 <ROWSET tableName="XX" > <EXEC_SQL> 最初に記載して、初期処理(データクリア等)を実行させる。 delete from GEXX where YYYYY </EXEC_SQL> <MERGE_SQL> このSQL文で UPDATEして、結果が0件なら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 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 (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対応)

actionExecSQL

public void actionExecSQL(TagElement tag)
<EXEC_SQL> タグの endElement 処理毎に呼び出されます。 getBody メソッドを使用して、このタグのBODY部の文字列を取得します。 この Listener をセットすることにより、EXEC_SQL データを取得都度、 TagElement オブジェクトを作成し、このメソッドが呼び出されます。

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

actionMergeSQL

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

定義:
インタフェース TagElementListener 内の actionMergeSQL
パラメータ:
tag - タグエレメント
関連項目:
TagElement, HybsXMLHandler.setTagElementListener( TagElementListener )
変更履歴:
4.0.0 (2007/05/09) ParameterMetaData を使用したパラメータ設定追加。
4.0.0.0 (2007/09/25) isOracle から useParamMetaData に変更

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 としています。

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

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 を指定する。

openGion 5.5.5.0

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