xslt erzeugt Code


Kurzfassung

In der Programmierung mit Lotus Notes nutzt man gerne Profil-Dokumente, siehe hier und hier. Eine Wrapper-Klasse macht das Profil-Dokument für Objekt-Orientierte Programmierung verfügbar. Die Wrapper-Klasse zu schreiben ist stupide und fehleranfällig. Ich habe deshalb etwas gebaut, das mir aus der Maske eines Profil-Dokuments die Wrapper-Klasse erzeugt.


Detail: Profil-Dokument

In der vergangenen Woche habe ich ein Projekt vollendet. Sein wesentlicher Bestandteil ist der Export von Daten aus einer Notes-Datenbank in eine Datei für die Controlling-Abteilung. “Nebenbei” kann ein Administrator etliche Einstellungen vornehmen: Adresse der Datenquelle, Adresse der Ziel-Datei, Backup-anlegen-oder-nicht – um nur drei zu nennen. In Notes liegen diese Einstellungen in einem Dokument – wie alle Daten in Notes. Und wie in Notes üblich gibt es auch eine Maske, die in diesem Zusammenhang benutzt wird. Dieses Dokument mit den Einstellungen nennt man Profil-Dokument und die Maske Profil-Maske.

Detail: Programmierung

In Notes kann ich objektorientiert programmieren :-)) Um auf einen Feld-Wert in einem Dokument zuzugreifen, muss ich den Namen des Feldes kennen. Das ist etwas umständlich, denn ich muss immer wieder auf die Maske schielen :-(( Muss ich?!? Nein. Ich schreibe eine Wrapper-Klasse. Dann kann mir die IDE helfen,wie ein Sausewind zu programmieren.

Um die Wrapper-Klasse zu schreiben braucht man nicht viel zu denken: Der Name der Klasse setzt sich zusammen aus dem Namen der Maske, im Beispiel “Test”, und dem Wort “Class”. Die Klasse enthält für jedes Feld einen Getter, dessen Name “get”-plus-Feldname ist.

Ich kann die Wrapper-Klasse “einfach so” ‘runtertippen. Das habe ich auch schon ein paar mal gemacht. Es ist langweilig und fehleranfällig. Deswegen nutze ich die Notes-interne Darstellung der Maske als XML und meine Transformation. Der Notes-interne XMLTransformator macht aus den beiden eine Datei. Und diese Datei füge ich als Script-Bibliothek in das fragliche Projekt ein. Voila! Ein Beispiel für eine Maske in XML-Form findet sich hier. Und meine Transformation hier. Die beiden Dateien haben die falsche Endung, weil es so in WordPress einfacher ist.

Die Sache funktioniert mit dem XMLTransfomator in Notes. Und mit xsltproc auch: hier ist das Ergebnis.

Ausblick

Wenn ich auf ein Profil-Dokument zugreife, dann lesend. Geschrieben und verändert wird es anderswo. Deswegen hat die Wrapper-Klasse nur get-Methoden. Es ist einfach, eine andere Transformation zu erschaffen, die sowohl Getter als auch Setter hat.

Der Rückgabe-Wert ist hier immer “Variant”. Das ist in diesem Fall ok, aber vielleicht will ich Typensicherheit – so gut das in Notes möglich ist. Im field-Tag sieht man das Attribute “type”. Hier ist noch Potential.

Supercool wäre ein Verfahren, das direkt den Code in einer Script-Bibliothek in einem Notes-Template erzeugt. Das spart mir den Weg über eine Datei.

Fazit

Dieses Verfahren ist nicht auch Profil-Masken beschränkt. Ein kleines Dingelchen, das meine Prodktivität steigert. Möge es auch der Notes-Welt nutzen.

Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen auf den Permalink.