6.2 Implementation des Konfigurators
6.2.1 Implementation des Moduls «Simple DB Export»
Dieses erste Modul ist ein leicht umgebauter Datenbankbrowser und stellt zusätzlich zu dessen Funk-tion die Möglichkeit bereit einzelne Tabellen auszuwählen (um nicht immer die ganze Datenbank ex-portieren zu müssen) und stellt dem Anwender zwei verschiedene fixierte Ausgabeformate zur Verfü-gung.
<?xml version="1.0" encoding="UTF-8"?>
<database
name="Project DB"
url="jdbc:mysql://localhost:3306/projekte?useUnicode=true">
<tables>
<projekte >
<row>
<ID>1</ID>
<name>orange8</name>
<ende>2001-12-31</ende>
<status >0</status >
<anfang >2001-10-31</anfang>
</row>
<row>
<ID>2</ID>
<name>e-freak</name>
<ende>2002-06-30</ende>
<status >0</status >
<anfang >2002-03-01</anfang>
</row>
</projekte>
</tables>
</database>
Abbildung 22 : Beispielausgabe des Moduls «Simple DB Export» (simple)
Das einfachere Format («simple») basiert auf dem von Ronald Bourret vorgeschlagenen
Ausgabefor-mat für Tabellen-basiertes Mapping (siehe Abbildung 13 und ein Beispiel in Abbildung 22) und wurde
lediglich um zwei Attribute erweitert welche weitere Informationen zu der ausgewählten Datenbank
enthalten (Name und JDBC-URL der Datenbank). Dieses Format basiert auf keiner DTD und kann
deshalb nicht validiert werden.
6 Implementation des Modells
Das erweiterte Format («verbose») ist eine standardisierte Erweiterung des einfachen Formates wobei es so abgeändert wurde, dass es in einer DTD ausgedrückt werden kann (Tabellennamen werden als Attribute und nicht als Elementnamen ausgedrückt). Des weiteren enthält es noch den Typ der Daten.
Dies erhöht die Redundanz der Daten, dafür sind alle Informationen enthalten um aus diesen Daten zu einem späteren Zeitpunkt eine Datenbank zu rekonstruieren (siehe Abbildung 23 für die DTD und ein Beispiel der Ausgabe in Abbildung 24).
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT database (tables*)>
<!ATTLIST database name CDATA #REQUIRED url CDATA #REQUIRED
>
<!ELEMENT tables (table*)>
<!ELEMENT table (row*)>
<!ATTLIST table
name CDATA #REQUIRED
>
<!ELEMENT row (column*)>
<!ELEMENT column EMPTY>
<!ATTLIST column
name CDATA #REQUIRED type CDATA #REQUIRED data CDATA #REQUIRED
>
Abbildung 23 : xmlizer.smdbe.verbose.dtd
Für die Erzeugung des XML Formats, wurde auf die Verwendung von DOM verzichtet, da die Ausga-be von DatenbanktaAusga-bellen sehr grosse Datenmengen erzeugen kann. DOM kann nur auf kleine XML Dokumente angewendet werden, da der Speicherverbrauch (unabhängig von der verwendeten DOM-Bibliothek) sehr gross ist. Die Ausgabe von grossen Datenbanken kann daher auch sehr lange dau-ern. Deshalb ist es möglich die Ausgabe abzubrechen. Dazu wurde die Klasse «activityMeter» bereit-gestellt, welche einen Knopf zum abbrechen und eine «JP rogressBar» enthält um den Fortschritt zu beobachten. Diese Progressbar zeigt ausserdem die Anzahl aktuell laufender Hintergrundprozesse an, die aber nicht gestoppt werden können. Durch die ausgiebige Verwendung von Threads ist es auch möglich während eines laufenden Exports weitere Tabellen der Datenbank anzeigen zu lassen.
Die grafische Oberfläche diese Moduls («SMDBEmain») ist nichts weiter als ein speziell angepasster
Datenbank-Browser («dbBrowser»), da sich die Möglichkeiten dieses Moduls mit der Auswahl von
Tabellen und dem Auswählen eines Ausgabenformates erschöpfen.
6 Implementation des Modells
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE database SYSTEM "xmlizer.smdbe.verbose.dtd">
<database
name="Project DB"
url="jdbc:mysql://localhost:3306/projekte?useUnicode=true">
<tables>
<table name="projekte">
<row>
<column name="ID" type="LONG" data="1"/>
<column name="name" type="VARCHAR" data="orange8"/>
<column name="ende" type="DATE" data="2001-12-31"/>
<column name="status" type="INT" data="0"/>
<column name="anfang" type="DATE" data="2001-10-31"/>
</row>
<row>
<column name="ID" type="LONG" data="2"/>
<column name="name" type="VARCHAR" data="e-freak"/>
<column name="ende" type="DATE" data="2002-06-30"/>
<column name="status" type="INT" data="0"/>
<column name="anfang" type="DATE" data="2002-03-01"/>
</row>
</table>
</tables>
</database>
Abbildung 24 : Beispielausgabe des Moduls «Simple DB Export» (verbose)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xmlizerprojectconfig SYSTEM "xmlizer.project.config.dtd">
<xmlizerprojectconfig>
<initialsetup> ...</initialsetup>
<databasesetup> ... </databasesetup>
<schemasetup> ... </schemasetup>
<mapping>
<smdbe>
<smdbe_item name="XML-DB" type="simple">
<smdbe_table >activities</smdbe_table>
</smdbe_item>
<smdbe_item name="Project-DB" type="verbose">
<smdbe_table >dateien</smdbe_table>
<smdbe_table >lesezeichen</smdbe_table>
<smdbe_table >profile</smdbe_table>
<smdbe_table >projekte</smdbe_table>
<smdbe_table>termine</smdbe_table>
</smdbe_item>
</smdbe>
</mapping>
</xmlizerprojectconfig>
Abbildung 25 : Beispiel der Mappingdaten für das Modul «Simple DB Export» (gekürzt)
Diese Daten für das Mapping werden in der Konfigurationsdatei nach einem einfachen Schema
ge-speichert. Abbildung 25 zeigt ein Beispiel für gültige Mappingdaten. Für jede Datenbank wird ein
6 Implementation des Modells
«smdbe_item» erstellt welches einen Namen und einen Typ haben muss (der Name wird vom
An-wender beim Setup selbst zugeteilt und der Typ ist wie schon erwähnt entweder «simple» oder
«ver-bose». Diese Elemente wiederum enthalten beliebig viele Elemente «smdbe_table» welche nur den
Namen der zu exportierenden Tabelle enthält.
In document
Datenaustausch mit XML
(Page 42-45)