構造ビューアーのインプリメント

比較プラグインは、独自のコンテンツ・ビューアーをインプリメントするための実質的サポートを提供します。

ディファレンサー 

Differencer は、階層構造のデータ用の相違検出エンジンです。 2 つまたは 3 つの入力を取り込み、それらに対して両方向または 3 方向比較を実行します。

相違検出エンジンへの入力エレメントが IStructureComparator インターフェースをインプリメントする場合、エンジンは再帰的にそれ自身を入力エレメントの子に適用します。 ディファレンサーがバイト単位でコンテンツを比較できるよう、リーフ・エレメントは IStreamContentAccessor インターフェースをインプリメントする必要があります。

プラットフォームのインプリメンテーションには、ディファレンサーの例がいくつか含まれています。

デフォルトでは、相違検出エンジンは、比較操作の結果を DiffNodeオブジェクトのツリーとして戻します。 DiffNode は、2 つまたは 3 つの入力間の変更を記述します。 結果ノードのタイプは、エンジンの単一メソッドをオーバーライドすることによって変更できます。

相違ビューアー

DiffNode のツリーは、DiffTreeViewer に表示できます。 DiffTreeViewer は、ツリーの内部ノードが IDiffContainer インターフェースをインプリメントし、IDiffElement インターフェースをリーフ化することを必要とします。

階層構造のデータを比較して相違を表示するための一般的なステップは、以下のとおりです。

  1. 入力データを IStructureComparator および IStreamContentAccessor のツリーにマップする
  2. Differencer を使用して比較操作を実行する
  3. 相違検出結果を DiffTreeViewer に送る
StructureDiffViewer は、上記の 3 つのステップを自動化する特殊な DiffTreeViewer です。 型 ICompareInput の入力オブジェクトを 1 つだけ取り込み、そこから比較する入力エレメントを 2 つまたは 3 つ取り出します。 さらに、IStructureCreator を使用して、入力エレメントから IStructureComparator および IStreamContentAccessor のツリーを取り出します。 これらのツリーは相違検出エンジンで比較され、結果はツリー・ビューアーに表示されます。

ZipFileStructureCreatorは、IStructureCreator インターフェースのインプリメンテーションであり、ZIP アーカイブのコンテンツを、相違検出エンジン (Differencer) によって簡単に比較できる IStructureComparator の階層構造として使用できるようにします。 これは、比較プラグインの階層比較機能に使用できる構造化ファイルを作成する方法の一例です。

Copyright IBM Corp. and others 2000,2002.