Standalone Tool zum Vergleich von FLEXIBLE_INDEX und FLEXIBLE_INDE_UI Dateien sowie SQL Create-Scripts

Motivation

In B2B und CCM gibt es einige Dateien, die aus einer Vielzahl von Blöcken aufgebaut sind (FLEXIBLE_INDEX, FLEXIBLE_INDEX_UI). Bei Formatumstellungen fallen einige dieser Blöcke weg, neue kommen hinzu, einige ändern sich, einige werden umbenannt, einige werden durch neue Versionen ersetzt, die Reihenfolge ändert sich. Versucht man, die Dateien mit einem Standard-Vergleichstool (z.B. Notepad++ Compare) zu vergleichen, hat man keine Chance, weil das Tool in der Regel mit der Komplexität nicht zurecht kommt.

FlexibleIndexCompare analysiert und vergleicht die Dateien, extrahiert die Blöcke, schreibt einen Report und bereitet die veränderten Blöcke so auf, dass die veränderten Blöcke mit Notepad++ verglichen werden können. Das Verfahren erfordert immer noch einige Handarbeit und Mitdenken, aber die Bearbeitungszeit reduziert sich in der Regel um mehrere Stunden. Gerade prinzipiell unveränderte Dateien (alte Blöcke entfernt, neue hinzugekommen) erkennt das Tool sofort, was in Notepad++ nicht einfach ist.

Anwendungsfälle

  • Formatumstellung, Prüfung, ob kundenspezifische Änderungen vorhanden sind
  • Vergleich zwischen PROD- und DEV/KON-Systemen (z.B. beim Quickcheck)
  • Prüfung, ob auf einem Kundensystem der Standard verwendet wird
  • Prüfung, ob auf einem Kundensystem veraltete AV verwendet werden
  • SQL-Create Skripte: Prüfung auf Vollständigkeit (gegen Referenzliste)

Einrichtung des Tools

Ausführbare jar-Datei in ZIP-Archiv

Das Tool wird in einem ZIP-Archiv ausgeliefert. Die enthaltenen Dateien (ohne Verzeichnis) sollten in ein neues Verzeichnis (z.B. FICompare/bin) entpackt werden. Der Arbeitsordner (FICompare) sollte in der Datei ficompare.properties unter der Variable pathFICompare eingetragen werden. Die zu vergleichenden Dateien sollten ebenfalls in das Arbeitsverzeichnis FICompare kopiert werden. Start des Programms erfolgt mit einem Doppelklick auf die jar-Datei. Sollte zusätzlicher Debug-Output gewünscht sein, kann das Programm auch mit Doppelklick auf die start.bat Datei gestartet werden. Dann öffnet sich zusätzlich zu der Dateiauswahlbox ein Konsolenfenster.

IDE Version

Projekt [B2B_Sources]/tools/FlexibleIndexCompare auschecken und in der IDE ausführen. In der Properties-Datei ficompare.properties im Projekt-Root-Verzeichnis kann der Pfad des Basisverzeichnisses FICompare, in dem die zu vergleichenden Dateien liegen sollten (evtl. in Unterordnern) und in die die Reports geschrieben werden, angepasst werden.

Was macht das Tool? Was macht es nicht?

Nach dem Start können über zwei Dialogboxen zwei Dateiversionen (z.B. alte Kundenversion / neue Standardversion, KON/PROD-System etc.) desselben Typs ausgewählt werden. Das Tool liest die Dateien ein, identifiziert die vorhandenen Blöcke und parst deren Namen. Anschließend werden zunächst die Namen verglichen und herausgefunden, welche Namen nur in der alten Datei vorkommen und welche nur in der neuen. Die Blöcke mit gleichen Namen werden zeichenweise verglichen und aufgeteilt in unveränderte Blöcke und veränderte Blöcke. Über die gefundenen Veränderungen wird eine Report-Datei in das Basisverzeichnis FICompare geschrieben. Zusätzlich werden anschließend NUR DIE IN BEIDEN DATEIEN VORHANDENEN VERÄNDERTEN BLÖCKE nach Namen sortiert in zwei Output-Dateien (DateiName1_ChangedBlocksSorted / DateiName2_ChangedBlocksSorted) ausgegeben und können präzise mit Notepad++ Compare verglichen werden. Die Outputdateien dienen nur zum Vergleich. Notwendige Anpassungen müssen immer manuell in den Originaldateien vorgenommen werden. Das Tool macht keine automatischen Anpassungen.

Implementierte Dateitypen

Extension FLEXIBLE_INDEX

Die Extension besteht aus Blöcken für Nachrichten-Formatversionen (UTILMD5.1F, UTILMD5.1G etc.) + Header + Kommentarzeilen.

Extension FLEXIBLE_INDEX_UI

Die Extension besteht aus Blöcken für Varianten-Definitionen (Arbeitsvorräte).

Achtung! Die Header werden bisher nicht berücksichtigt, da sie schwer zu erkennen sind. Änderungen müssen daher in den Originaldateien vorgenommen werden.

Bei Arbeitsvorräten können neben inhaltlichen Änderungen auch noch Umbenennungen (“Zählpunktsuche $PRE” wird zu “Meldpunktsuche $PRE”) vorkommen sowie neue Versionen (“Fehlende Contrl_MSG $PRE” ist aktueller als “Fehlende Contrl 201504 $PRE” ist aktueller als “Fehlende Contrl $PRE”). Diese Zusammenhänge können in der ficompare.properties Datei eingetragen werden.

Beispiele (ficompare.properties):

# Geänderte Variantennamen; Zeilenformat:
# changed1=AktuellerName <- AlterName
changed1=Meldepunktsuche $PRE<-Zählpunktsuche $PRE

# Alte Variantenversionen; Zeilenformat:
# oldVersions1=aktuelleVariante <- ältereVariante <- nochÄltereVariante <- ...
oldVersions1=Bestandsliste (E06) MSG $PRE<-Bestandsliste (E06) $PRE<-Bestandsliste BEZ (E06) $PRE

Im Report werden die umbenannten Dateien aufgelistet, sowie diejenigen mit veralteten Versionen. Für beide Typen werden für Datei 1 und 2 jeweils Dateien geschrieben, die die umbenannten Blöcke bzw. die unterschiedlich alten Versionen enthalten. (…_ChangedBlocksRenamedUnsorted, _ChangedBlocksOldVersionsUnsorted). Unsorted bedeutet hier, dass die Blöcke nicht alphabetisch sortiert sind, wohl aber die umbenannten Blöcke in beiden Dateien in der gleichen Reihenfolge gespeichert sind. Auf diese Weise können auch die umbenannten Blöcke / Blöcke mit alten Versionen mit Notepad++ Compare auf inhaltliche Veränderungen untersucht werden.

Liste von SQL-CREATE Skripten

Spezialanwendung: Dateien, die CREATE TABLE und CREATE INDEX Anweisungen enthalten, können mit einer Referenzliste von in B2B, CCM und FSS vorhandenen Tabellen und Indizes verglichen werden. Die Referenzliste muss dabei immer die zweite ausgewählte Datei sein.

Beim Vergleich der SQL Create Skripte wird nur ein Report geschrieben, keine Vergleichsdateien. Es werden auch nicht die kompletten CREATE-Befehle identifiziert, sondern nur die vorhandenen Namen der Tabellen und Indizes extrahiert.  

View Me   Edit Me