Příklad porovnání - strukturální porovnání dvojic klíč/hodnota
Úvod
Tento příklad ukazuje, jak podporovat strukturální porovnání souborů skládajících se z dvojic klíč/hodnota. Ukazuje, jak implementovat a registrovat vlastního autora struktury, který analyzuje dvojice klíč/hodnota a vytváří stromovou strukturu, která se používá jako vstup pro rámec strukturálního porovnávání zajišťovaný modulem plug-in Compare. Kromě toho registruje standardní textový prohlížeč pro jednotlivé dvojice klíč/hodnota.
Tento příklad je určen pouze pro předváděcí účely. Podporu strukturálního porovnávání souborů vlastností Java (další formát klíč/hodnota) zajišťují nástroje Java prostředí Eclipse.
Spuštění příkladu
- Vytvořte projekt (nemusí to být právě projekt Java).
- Vytvořte soubor f1.kv s dvojicemi klíč/hodnota.
- Otevřete Okno > Předvolby > Workbench > Přiřazení souborů a přiřaďte k výchozímu textovému editoru příponu souboru "kv".
- Otevřete soubor f1.kv pomocí daného editoru a zadejte tento obsah:
lastname=Doe
firstname=John
city=Chicago
state=IL
- Vytvořte kopii tohoto souboru a přejmenujte ji na f2.kv.
- Otevřete f2.kv a změňte křestní jméno (firstname) "John" na "Mary".
- Přidejte do f2.kv další dvojici klíč/hodnota "country=US".
- Vyberte soubor f1.kv i soubor f2.kv.
- Z kontextové nabídky vyberte Porovnat s > Navzájem.
- Otevře se nový editor porovnání, který v horním podokně zobrazuje strukturální rozdíly mezi oběma soubory. Při výběru jedné z vlastností "firstname" nebo "country" se vloží text odpovídající dvojice klíč/hodnota do standardního prohlížeče porovnání textu ve spodním podokně.
Uspořádání kódu v příkladu
Kód příkladu je uspořádán v jediném balíčku org.eclipse.compare.examples.structurecreator:
- KeyValuePairStructureCreator
je autor struktury, který analyzuje obsah toku a vytváří strom komparátorů IStructureComparator.
- TextMergeViewerCreator
je továrna pro prohlížeče TextMergeViewer. Je registrovaná pro typ "kvtxt", což je typ individuální dvojice klíč/hodnota.
- Util
poskytuje obslužné metody pro podporu NLS a pro čtení vstupního toku InputStream jako Řetězce.