ilishaper ist ein in Java erstelltes Programm, um nicht-öffentliche Attribute und Objekte resp. nicht-öffentliche Klasse abzustreifen.
Es bestehen u.a. folgende Funktionen:
Die Log-Meldungen sollen dem Benutzer zeigen, was das Programm macht. Am Anfang erscheinen Angaben zur Programm-Version.:
Info: ilishaper-1.0.0 ... Info: compile models... ... Info: ...clone done
Bei einem Fehler wird das am Ende des Programms vermerkt. Der eigentliche Fehler wird aber in der Regel schon früher ausgegeben.:
Info: ilishaper-1.0.0 ... Info: compile models... ... Error: failed to read ilimodels.xml ... Error: ...conversion failed
Das Programm setzt Java 1.8 voraus.
GNU Lesser General Public License
In den folgenden Abschnitten wird die Funktionsweise anhand einzelner Anwendungsfälle beispielhaft beschrieben. Die detaillierte Beschreibung einzelner Funktionen ist im Kapitel „Referenz“ zu finden.
Es existiert aktuell kein GUI. Das Programm kann nur über die Kommandozeile benutzt werden.
Ausgehend von einem existierenden Modell Basismodell.ili wird anhand der Konfiguration Beispiel1.ini ein vereinfachtes Modell Derivatmodell.ili erstellt.
java -jar ilishaper.jar --createModel --config Beispiel1.ini --out Derivatmodell.ili Basismodell.ili
Ausgehend von existierenden, vollständigen Daten Basisdaten.xtf wird anhand der Konfiguration Beispiel1.ini ein vereinfachter, reduzierter Datensatz Derivatdaten.xtf (passend zum vereinfachten Modell Derivatmodell.ili) erstellt.
java -jar ilishaper.jar --deriveData --config Beispiel1.ini --out Derivatdaten.xtf Basisdaten.xtf
In den folgenden Abschnitten werden einzelne Aspekte detailliert, aber isoliert, beschrieben. Die Funktionsweise als Ganzes wird anhand einzelner Anwendungsfälle beispielhaft im Kapitel „Funktionsweise“ (weiter oben) beschrieben.
java -jar ilishaper.jar [Options] file...
Es existiert aktuell kein GUI. Das Programm kann nur über die Kommandozeile benutzt werden.
Der Rückgabewert ist wie folgt:
- 0 Funktion ok, keine Fehler festgestellt
- !0 Funktion nicht ok, Fehler festgestellt
Optionen:
Option | Beschreibung |
---|---|
--createModel | Erstellt ein neues Modell (ili-Datei). Zwingende weitere Angaben: Konfigurationsdatei (--config) und Ausgabedatei (--out) |
--deriveData | Erstellt ein neue, reduzierte Daten-Datei (xtf-Datei). Zwingende weitere Angaben: Quelldatei (file), Konfigurationsdatei (--config) und Ausgabedatei (--out) |
--modeldir path | Dateipfade, die Modell-Dateien (ili-Dateien) enthalten. Mehrere Pfade können durch Semikolon ‚;‘ getrennt werden. Es sind auch URLs von Modell-Repositories möglich. Default ist %ITF_DIR;http://models.interlis.ch/;%JAR_DIR/ilimodels %ITF_DIR ist ein Platzhalter für das Verzeichnis mit der Transferdatei. %JAR_DIR ist ein Platzhalter für das Verzeichnis des ilivalidator Programms (ilivalidator.jar Datei). Der erste Modellname (Hauptmodell), zu dem ili2db die ili-Datei sucht, ist nicht von der INTERLIS-Sprachversion abhängig. Es wird in folgender Reihenfolge nach einer ili-Datei gesucht: zuerst INTERLIS 2.3, dann 1.0 und zuletzt 2.2. Beim Auflösen eines IMPORTs wird die INTERLIS Sprachversion des Hauptmodells berücksichtigt, so dass also z.B. das Modell Units für ili2.2 oder ili2.3 unterschieden wird. |
--out filename | Datei die erstellt oder überschrieben wird. |
--config filename | Konfiguriert die Konvertierung mit Hilfe einer INI-Datei. |
--log filename | Schreibt die log-Meldungen in eine Text-Datei. |
--proxy host | Proxy Server für den Zugriff auf Modell Repositories |
--proxyPort port | Proxy Port für den Zugriff auf Modell Repositories |
--trace | Erzeugt zusätzliche Log-Meldungen (wichtig für Programm-Fehleranalysen) |
--help | Zeigt einen kurzen Hilfetext an. |
--version | Zeigt die Version des Programmes an. |
Die Abbildung muss in einer Konfigurations-Datei definiert werden.
Um z.B. ein Attribut abzustreifen schreibt man in der INI-Datei:
Modelelement | Konfiguartion | Beschreibung |
---|---|---|
ModelDef | name |
Definiert den Namen des neu zu erstellenden Modells Beispiel [Basismodell] name=Derivatmodell |
ModelDef | issuer |
Definiert den Herausgeber des neu zu erstellenden Modells. Das muss eine URI sein. Beispiel [Basismodell] issuer=mailto:user@host |
ModelDef | version |
Definiert die Angabe zur VERSION des neu zu erstellenden Modells. Beispiel [Basismodell] version=1.0 |
ModelDef | versionExpl |
Definiert die optionale Angabe Erläuterung zur VERSION des neu zu erstellenden Modells. Beispiel [Basismodell] versionExpl=Entwurf |
ModelDef | doc |
Definiert den Modell-Kommentar des neu zu erstellenden Modells. Beispiel [Basismodell] doc=Kommentar zum neuen Modell |
TopicDef | ignore |
Falls true wird das entsprechende Topic ignoriert. Beispiel [Basismodell.TopicT2] ignore=true |
ClassDef StructureDef AssociationDef ViewDef | ignore |
Falls true wird die entsprechende Klasse, Struktur, Assoziation oder Sicht ignoriert. Beispiel [Basismodell.TopicT2.ClassB] ignore=true |
ClassDef StructureDef AssociationDef ViewDef | filter |
Ein Ausdruck (Syntax-Regel Expression; wie bei einem Mandatory-Constraint). Falls die Auswertung des Ausdrucks true ergibt, wird das entsprechende Objekt in die Ausgabe kopiert, falls false (oder der Ausdruck nicht auswertbar ist (z.B. Division mit 0)), wird das Objekt ignoriert. Der Ausdruck muss pro Objekt (ohne Beizug anderer Objekte) auswertbar sein (darf also keine Rollen oder Referenzattribute enthalten). Beispiel [Basismodell.TopicT1.ClassA] filter="Attr5==#rot" |
AttributeDef | ignore |
Falls true wird das entsprechende Attribut ignoriert. Beispiel [Basismodell.TopicT2.ClassA.Attr1] ignore=true |