Class IcsEventMapper

java.lang.Object
org.exoplatform.caldav.ics.IcsEventMapper

@Component public class IcsEventMapper extends Object
Turns a parsed calendar object into the agenda event that will stand for it.

Kept apart from IcsParser on purpose: the parser answers "what does this object say", this answers "what does agenda hold for it". The first is about a protocol, the second about a platform, and mixing them is how a quirk of one ends up encoded in the other.

  • Constructor Details

    • IcsEventMapper

      public IcsEventMapper()
  • Method Details

    • toEvent

      public org.exoplatform.agenda.model.Event toEvent(org.exoplatform.caldav.model.IcsEvent source, long calendarId)
      The agenda event standing for one parsed object.

      Identity is deliberately absent: no id, no calendar, no creator. Those belong to the caller placing the event, not to the object being read, and an event carrying an id it invented would overwrite whatever holds it.

      Parameters:
      source - the parsed object
      calendarId - the eXo calendar the event belongs in
      Returns:
      the event to create or update
    • occurrenceOf

      public ZonedDateTime occurrenceOf(String value, String zoneId)
      A raw RFC 5545 date or date-time as the occurrence agenda names.

      EXDATE values arrive as the object spelled them — with a zone, in UTC, or as a bare date for an all-day series — so they are read the same way a RECURRENCE-ID is, and anchored on the event's own zone.

      Parameters:
      value - the raw value
      zoneId - the zone the event is anchored on
      Returns:
      the occurrence identifier, or null when the value cannot be read
    • occurrenceOf

      public ZonedDateTime occurrenceOf(org.exoplatform.caldav.model.IcsEvent source)
      The occurrence an override amends, in the event's own zone.
      Parameters:
      source - the parsed override
      Returns:
      the occurrence identifier, or null when the object is not one