Rakenteen katseluohjelman toteutus

Rakenteen yhdistämisen katseluohjelma suorittaa kahden- tai kolmenvälistä syötteiden vertailua, esittää tulokset hierarkkisessa näkymässä ja mahdollistaa sen, että käyttäjä voi yhdistellä syötteitä.  Rakenteen yhdistämisen katseluohjelmat ovat yleisiä työtilan resursseissa tai arkistokansion jäsenissä.

Rakenteiset rakenteen katseluohjelmat

Koska monet rakenteen vertailun katseluohjelmat perustuvat rakenteeseen, vertailulisäosa tuo käyttöön yleisen rakenteisen StructureDiffViewer-luokan. Lisäosan rakenteenluontitoiminto hajottaa syöteolion hierarkkiseksi rakenteeksi. StructureDiffViewer-luokka suorittaa vertailun kyseisessä rakenteessa ja esittää tulokset rakenne-esityksenä.

Voit määrittää lisäosan rakenteenluontitoiminnon käyttämällä laajennusta org.eclipse.compare.structureCreators. Kuten sisällönkatseluohjelmakin, rakenteenluontitoiminto voidaan määrittää tietyille tiedoston tunnisteille tai contentTypeBinding-elementtiä voidaan käyttää liittämään sisältölaji tiettyyn rakenteenluontitoimintoon. Toiminnon merkintöjä ei tässä käydä läpi, koska ne ovat hyvin samankaltaiset kuin sisällön katseluohjelmissa. JDT-lisäosa määrittää useita lisäyksiä laajennuspisteeseen org.eclipse.compare.structureCreators.

Muut hierarkkiset rakenteen katseluohjelmat

Joissakin tapauksissa rakenteinen StructureDiffViewer-luokka ei ole lisäosan mukainen.  Laajennuspisteen org.eclipse.compare.structureMergeViewers avulla voit määrittää rakenteen yhdistämisen katseluohjelmalle oman toteutuksen. Rakenteen yhdistämistoiminto voidaan määrittää tietyille tiedoston tunnisteille, tai contentTypeBinding-elementtiä voidaan käyttää liittämään sisältölaji tiettyyn rakenteen yhdistämisen katseluohjelmaan. JDT-lisäosasta kertovassa kohdassa org.eclipse.compare.structureMergeViewers on esimerkkejä lisäyksistä.

Haku-lisäosan apuohjelmaluokat ovat hyödyksi haun katseluohjelman toteuttamisessa.

Erojen vertailutoiminto 

Erojen vertailutoiminto on hierarkkisesti rakentuneen tiedon vertailuun tarkoitettu perusosa. Se käsittelee kahta tai kolmea syötettä ja suorittaa niiden välillä kahden- tai kolmenvälistä vertailua.

Jos vertailuperusosan syöte-elementit toteuttavat rajapinnan IStructureComparator, perusosa soveltaa itseään rekursiivisesti syöte-elementin aliosiin. Lehtielementtien pitää toteuttaa liittymä IStreamContentAccessor, jotta erojen vertailutoiminto voi suorittaa niiden sisällölle tavukohtaisen vertailun.

Käyttöympäristön toteutukseen sisältyvistä erojen vertailutoiminnoista on useita hyviä esimerkkejä:

Oletusarvon mukaan erojen vertailutoiminto palauttaa vertailutoiminnon tulokset DiffNode-objekteista koostuvana rakenteena.  DiffNode määrittää kahden tai kolmen syötteen välillä ilmenevät muutokset.  Tuloksena olevien solmujen lajia voidaan muuttaa ohittamalla perusosan yksittäinen metodi.

Vertailuerojen katseluohjelmat

DiffNode-luokkien rakenne voidaan esittää DiffTreeViewer-luokkana. DiffTreeViewer edellyttää, että rakenteen sisäiset solmut toteuttavat rajapinnan IDiffContainer ja että rakenteen pääteobjektit toteuttavat rajapinnan IDiffElement .

Hierarkkisesti jäsentyneen tiedon vertailu ja erojen esitys etenee yleensä seuraavien vaiheiden mukaan:

  1. Määritä syöte objektien muodostamaksi rakenteeksi toteuttamalla sekä rajapinta IStructureComparator että rajapinta IStreamContentAccessor.
  2. Suorita vertailutoiminto erojen vertailutoiminnonavulla.
  3. Syötä tulos DiffTreeViewer-katseluohjelmaan.

StructureDiffViewer on erikoistunut DiffTreeViewer-katseluohjelma, joka suorittaa yllä mainitut kolme vaihetta automaattisesti. Se käsittelee yhtä syöteoliota ja hakeeICompareInput-rajapinnasta kaksi tai kolme syöte-oliota vertailukohdiksi.  Se käyttää rajapintaa IStructureCreator ja noutaa sen avulla rakenteen, joka sisältää rajapintojen IStructureComparator ja IStreamContentAccessor objekteja. Näitä rakenteita verrataan vertailuperusosan avulla ja tulokset esitetään rakenteen katseluohjelmassa.

ZipFileStructureCreator on liittymän IStructureCreator toteutus ja se järjestää zip-arkistojen sisällön IStructureComparator-rajapintojen hierarkkiseksi rakenteeksi, jota puolestaan voidaan helposti vertailla erojen vertailutoiminto)-vertailuperusosan avulla. Tämä on hyvä esimerkki siitä, kuinka rakenteiset tiedostot voi tuoda vertailulisäosan hierarkkisen vertailutoiminnon saataville.