''[escargo] 17 May 2005'' - Oh, my! How did we get something in German? Anybody know where this came from? It almost makes sense to me; certainly "API" and "XML-Form" make as much sense in English as they do in German. But we lost this correction: See [Wiki format to HTML] - [RS]. ---- == '''Was ist das''' == Flat2xml ist eine API, die dafür gut sein soll, Listen von Objekten in der
attributzentrierten XML-Form darzustellen. Die Konvertierungsvorschriften werden selber auch in der XML-Form definiert. Diese legen fest: *das XML-Format, d.h. die Tags mit den Atttributen und der hierarchischen Anordnung *wie werden die Daten berechnet bzw. wie werden den Attributen die Werte zugewiesen. *Woher kommen die Werte. =='''API-Schnittstelle'''== Die Schnittstelle besteht aus zwei Komponenten: *Flat2XML-Konvertierungsvorschrift *Java-Schnittstelle Die Syntax, Semantik, Tipps etc für die Vorschriften werden weiter möglichst
ausführlich erklärt. Die Java-Schnittstelle ist denkbar einfach und wird hoffentlich wenn überhaupt,
dann nur unwesentliche Änderungen erfahren. ==='''Java-Schnittstelle'''=== Die homogene Liste myVector sei gegeben.
Sie soll in der XML-Form dargestellt werden. Man erzeugt eine Instanz der Klasse Flat2XMLConvertor.
Der Flat2XMLConvertor-Konstruktor hat folgende Parameter: *Pfad zu der Flat2XML-Konvertierungsvorschrift *ein Gebilde namens ProcessRelief, anhand dessen man definiert **was das Ausgabeziel ist **welche (beliebige) Parameter dem Prozess mitgegeben werden **wie auf die Ereignisse während der Konvertierung reagiert wird. *DebugSwitch ==='''Für Anwender relevante Klassen'''=== ==='''Interface ProcessRelief'''=== Der Sinn des Interfaces ist paar Zeilen weiter oben erklärt.
Durch das Implementieren von print() und println() legt man fest,
wohin der XML-Strom geschrieben wird. Zur Zeit gibt es: * einen DefaultRelief, der einen java.io.Writer oder einen java.io.OutputStream bekommen kann, in die er den XML-Strom schreibt. *einen DCSProcessRelief, der auf den DCS-Server die Daten schreibt. Ein wesentlicher Punkt soll noch erwähnt werden. Das Interface definiert die
Methode Object getParameter(String name).
Diese kann von den Berechnungen (Vorschrift) aufgerufen werden, wodurch man die
Möglichkeit hat, die Konvertierung zu steuern oder ihr zusätzliche Informationen mitzugeben. Die Implementierungen von ProcessRelief bekommen einen Flat2XMLListener. Flat2XMLListener hat folgende drei Methoden: *''void onWarning(String message, Object o, Throwable t);'' :Diese Methode wird vom Konvertierungsprozess aufgerufen, wenn eine zulässige, :aber doch nicht ganz glatte Situation zustande kommt. *''void onError(String message, Object o, Throwable t);'' :Wird aufgerufen, wenn ein Fehler bei der Berechnung auftrit oder die :Berechnungen eine Situation ergeben, die durch die Konvertierungsvorschrift :als fehlerhafte zu defenieren ist. *''void onProcess(Object o);'' :Listenelement o kommt in die Verarbeitung rein. Es ist gut denkbar, dass die aufrufenden Stellen dieses Interface implementieren,
weil sie wissen, wie auf die beschriebenen Ereignisse zu reagieren ist.
Im einfachsten Fall kann die Reaktion das Protokolieren sein. ==='''Konvertierungsvorschrift'''=== Wie schon erwähnt, die Vorschriften werden in der XML-Form verfasst. Detailierte Erklärung ist in der Datei Flat2XMLDefinition.txt. An der Stelle seien nur paar allgemeine Worte gesagt. Angenommen, die zu verarbeitende Liste enthält Elemente vom Typ
Wohnung und man wolle als Ergebnis die XML-Ausgabe im folgenden Format haben: Die Tags Wohnung und Zimmer kommen zustande durch folgende Fragmente in der
Flat2Xml-Definition Die Definitionen von Parametern sind nicht vollständig, sie beschreiben nicht,
wie die Werte berechnet werden. Dieses Thema ist der Gegenstand der o.g.
Flat2XMLDefinition.txt-Datei.