Eric S. Raymond hat einmal gesagt "release early, release often". Also bekommt ihr hier die Version 0.1 meiner Java-Bibliothek namens "libf59", die der Kommunikation mit der WL-Echtzeitdaten-API dient.
Warum Java? Damit man die Bibliothek (längerfristiges Ziel) auch sehr einfach aus Android-Apps heraus verwenden kann. So braucht nicht jeder Entwickler einer App immer wieder bei Null beginnen.
Die Lizenz der Library ist völlig offen. Ihr könnt damit machen, was auch immer ihr wollt: Verwenden, Ändern, Weitergeben, ... Sowohl in freien als auch kommerziellen Projekten, ist mir ganz egal. Ich würde mich auf jeden Fall aber über (positive wie auch kritische) Rückmeldungen freuen: f59@f59.at
Die Spezifikation (oder besser gesagt: das, was wirklich vom Server zurückgeliefert wird) wurde so gut wie möglich implementiert und das meiste sollte "out of the box" funktionieren. Es wird sicher noch mehrere "Komfort"-Methoden geben, damit alles einfacher verwendbar wird. Dazu muss ich aber selbst erst die Apps schreiben, die darauf aufbauen, damit ich merke, was noch besonders fehlt (und was noch nicht funktioniert).
Hier ist ein kleiner Ausschnitt, wie man die Library verwenden kann:
String sender = "<KEY>";
Database db = Database.getInstance();
Gate gate = db.getGate("10", "Hietzing");
MonitorRequest request = new MonitorRequest(sender, gate.getRblNumber());
MonitorResponse response = (MonitorResponse) request.send();
System.out.println("Nächste Abfahrten:");
for (Monitor mon : response.getMonitors()) {
for (Line lin : mon.getLines()) {
for (Departure dep : lin.getDepartures()) {
System.out.print(lin.getName()+"\t");
System.out.println(lin.getTowards() + "\t" + dep.getCountdown());
}
}
}
Ich lese die Haltestellen- und Liniendaten bewusst nicht bei jedem Programmstart aus den CSV-Dateien ein, sondern habe sie mit (mitgelieferten) Perl-Scripts in eine Java-Klasse konvertiert. Die Datenbank wird nur dann aufgebaut, wenn man das erste Mal (mit getInstance(), ein Singleton) darauf zugreift, ansonsten (also wenn man die gewünschte RBL-Nummer schon kennt) verbraucht sie keine Laufzeit.
Vielleicht kann das ganze jemand von euch brauchen!