MetaKey UUID = MetaKey.REMINDER_UUID;
// Reminder laden
String uuid = UUID.get(order);
Reminder reminder = (uuid != null ? provider.get(uuid) : null);
// a) ohne Intervall
if (interval == null)
{
// wenn wir schon einen Reminder haben, dann loeschen wir ihn
if (reminder != null)
{
provider.delete(uuid);
UUID.set(order,null); // Referenz loeschen
}
}
else // b) mit Intervall
{
// Neuen Reminder anlegen?
if (reminder == null)
reminder = new Reminder();
// Wichtig: Das Start-Datum des Reminders ist nicht direkt der
// Termin sondern {Termin + ersters Intervall}. Die erste
// Ausfuehrung ist ja der Auftrag "bu" selbst. Erst die Folge-Termine
// kommen ja via Reminder.
// Das erste Datum ignorieren wir. Wir wollen ja erst das naechste haben.
// Selbst bei jaehrlicher Ausfuehrung sollte die Liste jetzt genau
// 2 Daten enthalten (erster und letzter des Jahres).
List<Date> dates = interval.getDates(((Terminable)order).getTermin(),null,null);
if (dates.size() < 2)
throw new ApplicationException(i18n.tr("Kein Datum f�r die n�chste Wiederholung ermittelbar"));
reminder.setDate(dates.get(1));
reminder.setEnd(end);
reminder.setData(Reminder.KEY_EXPIRED,null); // expired date resetten. Wird vom Service bei Bedarf neu gesetzt
reminder.setQueue("hibiscus.reminder.order");
reminder.setData("order.class",order.getClass().getName());
reminder.setData("order.id",order.getID());
reminder.setReminderInterval(interval);
if (uuid != null) // Update
{
provider.update(uuid,reminder);
}