lógica de eventos recurrentes

Estoy trabajando en una aplicación tipo calendario Groovy / Java que permite al usuario ingresar eventos con una fecha de inicio y una recurrencia opcional. Si es un evento recurrente, puede reaparecer:

mensualmente en una fecha del mes que corresponde a la fecha de iniciosemanalmente en un día de la semana correspondiente a la fecha de iniciocada 2 semanas en un día de la semana correspondiente a la fecha de inicioetc.

Originalmente planeé usar la API de calendario de Google para hacer toda la lógica de recurrencia, pero resultó ser una PITA enorme, por razones que discutiré más a fondo si a alguien le importa.

Así que ahora, he decidido lanzar mi propia solución. Dada una fecha, quiero averiguar si se produce un evento recurrente en esta fecha. Mi lógica (en pseudocódigo) será la siguiente:

public boolean occursOnDate(def date, def event) {

  def firstDate = event.startDate

  if (firstDate > date) {
    return false;

  } else if (event.isWeekly()) {
    return event.dayOfWeek() == date.dayOfWeek()

  } else if (event.isMonthly()) {
    return event.dayOfMonth() == date.dayOfMonth()

  } else {
    // At this point we know the event occurs every X weeks where X > 1
    // Increment firstDate by adding X weeks to it as many times as possible, without
    // going past date
    return firstDate == date
  }  
}

Esta lógica parece razonable, pero en realidad será un gran esfuerzo implementarla si considera todos los casos extraños (por ejemplo, cómo manejar un evento recurrente mensual en febrero cuya primera ocurrencia es el 31 de enero).

¿Hay alguna biblioteca que pueda ayudarme a implementar esto? Algunos detalles serían muy apreciados (por ejemplo, no se otorgará crédito por "Usar Joda Time").

Gracias don

Respuestas a la pregunta(3)

Su respuesta a la pregunta