Das zugegeben zur Zeit etwas schleppend weiterentwickelte Mockframework kann jetzt xml-Konfigurationsdateien zur Deklarierung der "Umgebung" einlesen.
Unter Umgebung verstehe ich so Sachen wie Datenbanken, Ansichten, Ordner, Dokumente.
Java-Agenten, LS2J Zeugs oder externe Javaprogramme, die mit dem Framework entwickelt und testbar gemacht werden sollen erwarten ja so etwas wie eine Umgebung.
Hier eine Beispiel-Konfigurationsdatei:
<?xml version="1.0" encoding="UTF-8"?>
<declaration>
<database title="music" path="music.nsf">
<view name="byYear" formula="form={music}">
<column title="year" formula="year" sort_policy="ASCENDING"
type="int" response="false" />
<column title="type" formula="type" />
<column title="artist" formula="artist" />
<column title="title" formula="title" />
</view>
<view name="all" formula="@all">
<column title="form" formula="form" sort_policy="ASCENDING" />
</view>
<folder name="wantHear" formula="form={music}">
<column title="artist" formula="artist"
sort_policy="ASCENDING" />
<column title="title" formula="title"
sort_policy="Ascending" />
<column title="year" formula="year" />
<column title="type" formula="type" />
</folder>
<profile form="profile">
<item name="aProfField">
wert
</item>
</profile>
<document form="music">
<item name="year" type="NUMBERS">1835</item>
<item name="artist">Robert Schumann</item>
<item name="type" sep=",">Clasic, Romantic</item>
<item name="title">Von fremden Ländern und Menschen</item>
</document>
<document form="music">
<item name="year" type="NUMBERS">1977</item>
<item name="artist">Joy Division</item>
<item name="type" sep=",">Pop</item>
<item name="title">Control</item>
</document>
</database>
</declaration>
Damit werden dann in der Umgebung die im xml deklarierten Datenbank(en), die Ansichten, die Profildokumente, die Ordner und die Dokumente angelegt.
Hier ist Testcode, der die obige xml einliest:
MockFactory fac = MockFactory.getInstanceXmlDecl("mockfactory.xml");
Session s = fac.getSession();
Database db = s.getDatabase("", "music.nsf");
View vw = db.getView("byYear");
;
System.out.println(vw.prettyPrint());
Hier ist das Ergebnis vom System.out des Testcodes:
Datenbank=music(music.nsf)
Ansicht=byYear, Selektionsformel=form={music}
year|type |artist |title |
____|________________|_______________|________________________________|
1835|Clasic, Romantic|Robert Schumann|Von fremden Ländern und Menschen|
____|________________|_______________|________________________________|
1977|Pop |Joy Division |Control |
____|________________|_______________|________________________________|
Sobald sich das xml stabilisiert, werd ich dafür ein xml-Schema schreiben. So kann leichter validiert werden, ob die Eingaben des Benutzers im xml ok sind.
Xml ist natürlich ein ziemlich geschwätziges Format, aber man kann da prima mit copy und paste arbeiten und es ist eben ziemlich selbsterklärend.
Ich denke auch darüber nach DXL einlesen zu können, das kommt aber später.