Implementazione di un visualizzatore di strutture

Il plug-in di confronto fornisce supporto sostanziale per l'implementazione del visualizzatore di contenuto:

Differenziatore 

Ildifferenziatore è un modulo di differenziazione per i dati strutturati gerarchicamente, che esegue confronti simultanei bidirezionali o a tre direzioni tra i due o i tre input richiesti.

Se gli elementi di input per il modulo di differenziazione implementano l'interfaccia IStructureComparator, il modulo applica in modo ricorsivo se stesso agli elementi secondari dell'elemento di input. Gli elementi foglia devono implementare l'interfaccia IStreamContentAccessor in modo che il differenziatore possa eseguire un confronto sulla base dei byte del rispettivo contenuto.

Esistono diversi buoni esempi di differenziatori inclusi nell'implementazione della piattaforma:

Per impostazione predefinita il modulo di differenziazione restituisce il risultato dell'operazione di confronto come struttura di oggetti DiffNode objects.  A DiffNode descrive le modifiche tra due o tre input.  Il tipo dei nodi risultati può essere modificato sostituendo un solo metodo del modulo.

Visualizzatori di differenze

Una struttura di DiffNodes può essere visualizzata in un DiffTreeViewer. DiffTreeViewer richiede che i nodi interni della struttura implementino l'interfaccia IDiffContainer e le foglie implementano l'interfaccia IDiffElement.

I passaggi tipici per confrontare i dati strutturati gerarchicamente e per visualizzare le differenze sono i seguenti:

  1. mappare i dati di input in una struttura di oggetti che implementa sia l'interfaccia IStructureComparator che IStreamContentAccessor,
  2. eseguire le operazioni di confronto in base a Differencer e
  3. aggiunge il risultato di differenziazione nel DiffTreeViewer.
StructureDiffViewer è un DiffTreeViewer specializzato che automatizza i tre passaggi descritti. Esso richiede un singolo oggetto di input del tipo ICompareInput dal quale ricava i due o tre elementi di input da confrontare. Utilizza un IStructureCreator per estrarre una struttura contenente gli oggetti IStructureComparator e IStreamContentAccessor. Queste strutture vengono confrontate con il motore di differenziazione e il risultato viene mostrato nel visualizzatore di struttura.

ZipFileStructureCreator è un'implementazione dell'interfaccia IStructureCreator e rende il contenuto di un'archivio zip disponibile come struttura gerarchica di IStructureComparators che può facilmente essere confrontata dal modulo di differenziazione (Differencer). E un buon esempio di come rendere i file strutturati disponibili per la funzionalità di confronto gerarchico del plug-in di confronto.

Copyright
IBM Corp. e altri 2000,2002.