Konfiguration, Persistierung, Zustandssicherung und Parametrisierung von Domain-Objects
Nachdem ich jetzt schon eine Weile nichts mehr über Programmierung etc. geschrieben habe, möchte ich heute kurz von ein paar Ideen berichten, die wir während unserer Arbeit an der Neuimplementierung von pt_list hatten. Zuerst einmal zu pt_list selber: Es handelt sich um ein Plugin für Typo3 das im Prinzip aus SQL-Schnippseln eine Anfrage an eine beliebige (My)SQL-Datenbanken schicken kann und eine Frontend-Liste generiert. Diese Liste kann gefilter, sortiert, gepaged und Ge-Bookmarked werden, d.h. einmal gemachte Abfragen können gespeichert werden. Die Extension wurde bei der punkt.de GmbH entwickelt, maßgeblich von Fabrizio Branca.
Derzeit versuchen Daniel und ich, dieses Plugin auf ExtBase zu portieren, wobei das Hauptaugenmerk allerdings auf einer etwas entkoppelteren Architektur der Komponenten liegt. Bei der Erzeugung und "Füllung" der einzelnen Domänenobjekte treten meistens die selben Abläufe auf:
1. Erzeugen der Objekte aus Konfiguration (TypoScript)
2. Herstellen eines alten Zustandes aus der Session / Datenbank
3. "Parametrisieren" der Objekte aus gegebenen GET/POST-Parameter
Diesen Objekt-Lebenszyklus hat Fabrizio in einem neuen Architekturvorschlag bereits versucht durch diverse Methoden einer Komponenten-Klasse in den Objekten selbst zu implementieren. Sein Vorschlag waren Methoden wie loadFromSession(), saveToSession(), setByParameters() etc. direkt in einer Elternklasse aller pt_list-Komponenten zu implementieren.
Daniel und ich haben uns heute auf einen Vorschlag geeinigt, der es ermöglicht, die Komponenten von beliebigen Klassen erben zu lassen, also keine Komponenten-Basisklasse zu implementieren und die Funktionalität über Interfaces zur Verfügung zu stellen. Der Plan ist es jetzt, dass jedes Objekt über ein Interface "Identifiable" eine Methode getIdentifier() implementiert, welche die nötigen Parameter, sei es in einer Session oder in Form von GET/POST Parametern an eine Art Namensraum bindet. Beim Erzeugen des Objektes kann nun ein Session-Container und ein GET/POST-Parameter-Container nach entsprechenden Parametern in diesem Namensraum durchsucht werden und über ein Interface "SettableBySession" und "SettableByParameters" entsprechend mit den Daten aus Session und GET/POST-Parametern gefüttert werden.
Da die entsprechenden Methoden in der jeweiligen Klasse implementiert sind, kann auch die Klasse für sich entscheiden, welche Properties beim Setzen wie überschrieben werden. Diese Überschreibung tritt vor allem bei den Filtern in pt_list sehr häufig auf, da es dort vorkommt, dass bestimmte Werte zuerst aus der TS-Konfiguration entstammen, dann von GET/POST-Parametern überschrieben werden und schließlich je nach Anwendungsfall von der Session stammen können.
Grundsätzlich kann ein solcher Lifecycle aber nicht nur in pt_list angewendet werden, sondern wäre sicherlich eine Bereicherung für ExtBase als Framework an sich. Die Technologie für das Mappen von Relationalen Daten auf Objekte sowie von Formulardaten auf Objekte ist ja bereits vorhanden, was noch fehlt ist ein Session-Adapter und evtl. ein generischer Weg, Objekte mit ihrer Konfiguration zu "impfen".
Sobald wir erste Implementierungserfahrungen sammeln konnten, halte ich euch auf dem Laufenden!
Panorama Hauslabkogel
Panorama vom Hauslabkogel in den Ötztaler Alpen. Ich kenne bei weitem nicht alle Gipfel, aber auf die Schnelle konnte ich die Wildspitze, Brochkogel, Fineilspitze, Saykogel, Similaun, Hintere Schwärze, Schalfkogel und die Ramolkögel ausmachen. Weiter im Hintergrund sieht man dann auch noch den Ortler und die Weißkugel.
Oster-Skitouren im Ötztal
Über die Ostertage hat's doch tatsächlich mal geklappt, dass ich mit meiner Schwester etwas länger auf Skitour gehen konnte. Mit dabei war außerdem Katharina aus meiner Jugendgruppe in Karlsruhe. Großes Ziel: Schwesterles erster 3.000er. Fazit: Mission erfolgreich ausgeführt :-)
Auf dem Plan stand die Martin-Busch Hütte und von da aus der Similaun und der Hauslabkogel... hier ein paar Impressionen
Nachdem wir uns im Aufstieg dank Nebel und Schneesturm erst mal ordentlich verlaufen hatten (man kann sich im Sommer nicht vorstellen, dass das auf diesem breiten Ziehweg überhaupt geht), kamen wir nach 4,5 statt den angeschriebenen 2,5h auf der Hütte an. Entsprechend groß war die Freude über das üppige Abendessen:
Irre geleitet durch die von der Hütte aus einsehbare wunderschöne Firnflanke unterhalb des Gipfels, haben wir dann am zweiten Tag unser eigentliches Ziel - den Saykogel - verfehlt und sind auf dem Hauslabkogel gelandet. Was zunächst so aussah, als würde es uns den Weiterweg auf unser zweites Ziel - die Fineilspitze - blockieren, stellte sich dann später als nicht so schlimm raus, denn aufziehende Wolken machten den zweiten Gipfel eh unmöglich und die Abfahrt vom Hauslabkogel war mit Sicherheit viel schöner, als die vom Saykogel.
Neue Laufstrecke
Am Montag habe ich eine neue Laufstrecke ausprobiert, weil ich mal ein paar "Berge" haben wollte... nun ja, immerhin sind's auf 20km 240hm geworden... nicht gerade viel, aber ein Anfang. Hier die Karte von gpsies.com










































