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>
コンストラクタと説明 |
---|
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)
テスト用のメインメソッド
Usage: 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
※ ファイルが存在しなかった場合、FileNotFoundException を RuntimeException に変換して、throw します。
|
void |
onExecErrException(boolean flag)
EXEC_SQL のエラー時に Exception を発行するかどうかを指定できます(初期値:true)。
|
void |
setAfterMap(java.util.Map map)
XMLファイルを読み取った後で指定するカラムと値のペア(マップ)情報をセットします。
|
void |
setDefaultMap(java.util.Map map)
XMLファイルを読み取る前に指定するカラムと値のペア(マップ)情報をセットします。
|
public HybsXMLSave(java.sql.Connection conn)
conn
- データベース接続public HybsXMLSave(java.sql.Connection conn, java.lang.String table)
conn
- データベース接続table
- テーブル名(ROWSETタグのtable属性が未設定時に使用)public void onExecErrException(boolean flag)
flag
- true:Exception を発行する/false:標準エラー出力に出力するpublic void actionInit(TagElement tag)
actionInit
インタフェース内 TagElementListener
tag
- タグエレメントTagElement
,
HybsXMLHandler.setTagElementListener( TagElementListener )
public void actionRow(TagElement tag)
actionRow
インタフェース内 TagElementListener
tag
- タグエレメントTagElement
,
HybsXMLHandler.setTagElementListener( TagElementListener )
public void actionExecSQL(TagElement tag)
actionExecSQL
インタフェース内 TagElementListener
tag
- タグエレメントTagElement
,
HybsXMLHandler.setTagElementListener( TagElementListener )
public void actionMergeSQL(TagElement tag)
actionMergeSQL
インタフェース内 TagElementListener
tag
- タグエレメントTagElement
,
HybsXMLHandler.setTagElementListener( TagElementListener )
public void setDefaultMap(java.util.Map map)
map
- 初期設定するカラムデータマップsetAfterMap( Map )
public void setAfterMap(java.util.Map map)
map
- 後設定するカラムデータマップsetDefaultMap( Map )
public void insertXML(java.io.Reader reader)
reader
- XMLファイルを指定するリーダーpublic int getInsertCount()
public int getUpdateCount()
public int getDeleteCount()
public int getDDLCount()
public java.lang.String getTableName()
public static void main(java.lang.String[] args) throws java.lang.ClassNotFoundException, java.sql.SQLException
args
- コマンド引数配列java.lang.ClassNotFoundException
- クラスを見つけることができなかった場合。java.sql.SQLException
- データベース接続エラーが発生した場合。Webアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.