Class MasterDataRestorer

java.lang.Object
nablarch.test.event.TestEventListener.Template
nablarch.test.core.db.MasterDataRestorer
All Implemented Interfaces:
TestEventListener

public class MasterDataRestorer extends TestEventListener.Template
マスタデータ復旧クラス。

テスト内でマスタデータの書き換えが発生した場合、その復旧を行う。 テスト実行中、MasterDataRestorer.SqlLogWatchingFormatterから発行されたSQL文の通知を受ける。 マスタデータの書き換えが発生していた場合、次のテストメソッドが実行される前に、 マスタデータテーブルの復旧をTableDuplicatorに依頼する。 事前に準備されたマスタデータ復旧用のスキーマからデータをコピーすることにより、 マスタデータの復旧を行う。
マスタデータを復旧する順序はテーブルの依存関係(FK)に則り行われるが、 コンポーネント定義にnablarch.suppress-table-sortというキーで 真偽値trueが設定されていた場合はtablesTobeWatchedに設定された順序でマスタデータのインサート、逆順でデリートを行う。

更新SQLかどうかの判定するために厳密なSQL解析は行っていない。 更新SQLと見做せる条件のうちいずれかを満たしていればマスタデータ復旧を行う。 これは以下の理由による。

  • 厳密なSQL解析はコストが高くテスト実行速度を低下させる。
  • マスタデータが更新されることは稀であり、誤検知による復旧が発生してもコストが低い。

Author:
T.Kawasaki
  • Constructor Details

    • MasterDataRestorer

      public MasterDataRestorer()
  • Method Details

    • afterTestMethod

      public void afterTestMethod()
      テストメソッド実行後に呼び出されるコールバック

      実行されたSQLでマスタデータを更新するものがあれば、 マスタデータ復旧を行う。

      Specified by:
      afterTestMethod in interface TestEventListener
      Overrides:
      afterTestMethod in class TestEventListener.Template
    • setTablesTobeWatched

      public void setTablesTobeWatched(List<String> tablesTobeWatched)
      監視対象テーブル名を設定する。
      Parameters:
      tablesTobeWatched - 監視対象テーブル
    • setBackupSchema

      public void setBackupSchema(String backupSchema)
      バックアップスキーマを設定する。
      Parameters:
      backupSchema - バックアップスキーマを設定する。
    • setUpdateSqlKeywords

      public void setUpdateSqlKeywords(List<String> updateSqlKeywords)
      更新とみなされるSQLキーワードを設定する。 SQLキーワード文字列末尾には半角スペースが付与される。
      Parameters:
      updateSqlKeywords - 更新とみなされるSQLキーワード