Strukturanzeigefunktion implementieren

Das Vergleichs-Plug-in bietet eine substanzielle Unterstützung für die Implementierung einer eigenen Inhaltsanzeigefunktion:

Differenzierer 

Differencer ist eine Differenzierungssteuerkomponente für hierarchisch strukturierte Daten. Sie akzeptiert zwei oder drei Eingaben und führt einen Zweifach- bzw. Dreifachvergleich zwischen ihnen aus.

Wenn die Eingabeelemente für die Differenzierungssteuerkomponente die Schnittstelle IStructureComparator implementieren, wendet die Steuerkomponente sich selbst rekursiv auf die Kinder des Eingabeelements an. Blattelemente müssen die Schnittstelle IStreamContentAccessor implementieren, damit der Differenzierer den Inhalt Byte für Byte vergleichen kann.

Es gibt mehrere gute Beispiele für Differenzierer, die in der Plattformimplementierung enthalten sind:

In der Standardeinstellung gibt die Differenzierungssteuerkomponente das Vergleichsergebnis als Baumstruktur von Objekten DiffNode zurück.  Ein Objekt DiffNode beschreibt die Änderungen, die zwischen zwei oder drei Eingabeobjekten vorgenommen wurden.  Der Typ der Ergebnisknoten kann geändert werden, indem eine einzige Methode der Steuerkomponente überschrieben wird.

Differenzanzeigefunktionen

Eine Baumstruktur aus Objekten DiffNode kann in einer Anzeigefunktion des Typs DiffTreeViewer dargestellt werden. Für DiffTreeViewer müssen die inneren Knoten der Baumstruktur die Schnittstelle IDiffContainer und Blätter die Schnittstelle IDiffElement implementieren.

Die üblichen Schritte für den Vergleich von hierarchisch strukturierten Daten und für das Anzeigen der Unterschiede sind:

  1. Zuordnung der Eingabedaten zu einer Objektbaumstruktur, die die Schnittstellen IStructureComparator und IStreamContentAccessor implementiert,
  2. Ausführen der Vergleichsoperation mit Hilfe des Differencer und
  3. Eingabe der Vergleichsergebnisse in den DiffTreeViewer.
Der Typ StructureDiffViewer ist eine spezielle Form von DiffTreeViewer, die die drei oben genannten Schritte automatisiert. Er akzeptiert ein einzelnes Eingabeobjekt vom Typ ICompareInput, aus dem er zwei oder drei Eingabeelemente für den Vergleich abruft. Er verwendet IStructureCreator, um eine Baumstruktur zu extrahieren, die Objekte IStructureComparator und IStreamContentAccessor aus den Eingaben enthält. Diese Baumstrukturen werden dann mit der Differenzierungssteuerkomponente verglichen, und die Ergebnisse werden in der Baumstrukturanzeigefunktion angezeigt.

ZipFileStructureCreator ist eine Implementierung der Schnittstelle IStructureCreator, die den Inhalt eines komprimierten Archivs als hierarchische Struktur von Objekten IStructureComparator verfügbar macht, die auf einfache Weise durch die Differenzierunssteuerkomponente (Differencer) verglichen werden können. Dies stellt ein gutes Beispiel dafür dar, wie strukturierte Dateien für die hierarchische Vergleichsfunktionalität des Vergleichs-Plug-ins zur Verfügung gestellt werden können.

Copyright IBM Corporation und Andere 2000, 2002. Alle Rechte vorbehalten.