Sascha Deutschkron 
Version vom: $Date: 2001/02/09 16:01:08 $

Das Wiederholungsangebot

Projektdokumentation | Systemspezifikation | Das Wiederholungsangebot


Zurück Hauptseite

Für das System sind die Wiederholungsangebote nicht als Veranstaltungen sichtbar. Sie dienen als Templates. Aus ihnen werden die entsprechenden Veranstaltungen gebildet, wenn es nötig wird.

Ein Wiederholungsangebot besitzt eine startzeit - der Moment, an dem dieses Angebot zum ersten Mal zu einer Veranstaltung wird, eine endzeit - der Zeitpunkt, an den dieses Angebot zum letzten Mal zu einer Veranstaltung werden kann und die periode - ein Zeitabschnitt, der angibt, in welchen Abständen dieses Angebot zu einer Veranstaltung werden kann.
Außerdem gibt es zwei Zähler: aktuelleWiederholung gibt an, wie oft dieses Angebot bereits wiederholt wurde. Und maximaleWiederholung gibt an, wie oft dieses Angebot maximal wiederholt werden darf.

Daneben existiert eine Methode checkVeranstaltung(Date zeitpunkt), die die aktuelle Zeit übergeben bekommt und anhand dieser entscheidet, ob dieses Angebot gelöscht, eine neue Veranstaltung aus diesem Angebot erzeugt oder gar nichts getan werden soll.

Schließlich erhält die Klasse Veranstaltung noch eine Klassenmethode Veranstaltung erstelleVeranstalung(Wiederholungsangebot vorlage), die aus einem Wiederholungsangebot eine konkrete Veranstaltung erzeugt.

Das Wiederholungsangebot arbeitet folgendermaßen: Im Hintergrund des Systems läuft ein Thread, der von allen bekannten Wiederholungsangeboten die Methode checkVeranstaltung(Date zeitpunkt) aufruft. Diese leistet nun folgende Sachen:
  • Ist der zeitpunkt < startzeit, dann tue gar nichts.
  • Ist der zeitpunkt > endzeit, dann lösche dieses Wiederholungsangebot.
  • Ist der zeitpunkt > startzeit && zeitpunkt < endzeit, dann tue folgendes:
    • Ist der zeitpunkt >= startzeit + aktuelleWiederholung * periode && aktuelleWiederholung + 1 < maximaleWiederholung, dann erzeuge eine neue Veranstaltung aus diesem Wiederholungsangebot (Veranstaltung.erstelleVeranstaltung (this)). Diese Veranstaltung erhält als termin folgenden Wert:
      termin = startzeit + (aktuelleWiederholung - 1) * periode
      Diese Veranstaltung kann nun vom System verwaltet werden.

Zurück Top Hauptseite