-
Notifications
You must be signed in to change notification settings - Fork 0
Tracker
Der Datentyp "Tracker" ist in der Lage, Änderungen des Nutzers aufzuzeichnen und in einer Log-Datei zu speichern.
Bei der Instanziierung des Datentyps wird der Projektname übergeben, der danach fest mit dem Tracker verbunden ist. Über die Funktion getProjectName() kann der Name außerdem ausgelesen werden. Jetzt stellt der Tracker mehrere Funktionen zur Verfügung, die von anderen Teilen des Programms aufgerufen werden können:
statusChanged: Wenn diese Funktion aufgerufen wird, wird die übergebene Statusvariable überprüft und in einer kurzen Textnachricht verarbeitet, die den Statuswechsel und das Vorhandensein von Babysteps dokumentiert. Zudem wird die Funktion getTime() aufgerufen, die das aktuelle Datum formatiert zurückgibt. Es wird außerdem die Zeit, die vom Nutzer benötigt wurde, um die Phase erfolgreich zu beenden, dokumentiert. Wenn Babysteps aktiviert ist, wird die Zeit des Nutzers sogar grafisch präsentiert, indem das Verhältnis der benötigten Zeit zur Maximalzeit von Babysteps in einer Art "Fortschrittsbalken" mit passender Prozentzahl präsentiert wird. So kann der Nutzer auf einen Blick seine zeitlichen Fortschritte vergleichen. Die erstellten Textnachrichten werden dann mithilfe der saveChanges-Funktion in der Datei log.txt, die sich im aktuellen Projektverzeichnis im data-Ordner befindet, gespeichert. Es wird zusätzlich noch geprüft, ob sich der Status seit der letzten Aktualisierung verändert hat, ob also wirklich ein Statuswechsel vorliegt. Wenn die Variable laststatus mit der übergebenen Statusvariable übereinstimmt, wird dieser nicht erfolgte Wechsel nicht dokumentiert.
timesUp: Diese Funktion erstellt eine Textnachricht für die Log-Datei, wenn der Nutzer nicht in der Lage war, seine Programmierprobleme innerhalb der Babysteps-Maximalzeit zu lösen, und somit der Fortschritt wieder zurückgesetzt wird. Es wird außerdem der entstandene Zeitverlust dokumentiert.
compilationFailed: Diese Funktion erhält eine Fehlermeldung, die im Idealfall aus der CompileError-Klasse stammt, und wandelt diese in eine mehrzeilige Textnachricht für die Log-Datei um. Die Zeilen werden einheitlich eingerückt und zusammen mit dem aktuellen Datum, welches ebenfalls von der Funktion getTime() geliefert wird, und einer "Compilation failed"-Nachricht in die Log-Datei geschrieben (über saveChanges). Auch hier wird überprüft, ob die selbe Fehlermeldung bereits beim letzten Versuch dokumentiert wurde. Stimmt die Fehlermeldung mit der Variable lasterror überein, wird die dokumentierte Textnachricht in der Log-Datei abgekürzt. Dies hat den Sinn, dass der Nutzer nach vielen erfolglosen Versuchen, einen bestimmten Fehler zu beheben, keine lange Liste mit exakt der selben Meldung in der Log-Datei findet.
Die Methoden, mit denen die Log-Dateien und die entsprechenden Verzeichnisse erzeugt werden, ähneln sehr denen aus der Saver-Klasse, die in der entsprechenden Dokumentation ausführlicher beschrieben werden.
\o/ Two Finger Joe \o/
Verzeichnis
Catalogue
- [Dateiformat](Catalogue.cfg Format)
- ParseSource
- ParseHelper
- CatalogueReader
- Catalogue, Project, ...
Controller
- Logic
- [Main Controller](Main Controller)
- [Project Controller](Project Controller)
File Interaction
Tracking