Class VEvent

  • All Implemented Interfaces:
    Serializable, ComponentContainer<Component>, PropertyContainer

    public class VEvent
    extends CalendarComponent
    implements ComponentContainer<Component>
    $Id$ [Apr 5, 2004] Defines an iCalendar VEVENT component.
           4.6.1 Event Component
    
              Component Name: "VEVENT"
    
              Purpose: Provide a grouping of component properties that describe an
              event.
    
              Format Definition: A "VEVENT" calendar component is defined by the
              following notation:
    
                eventc     = "BEGIN" ":" "VEVENT" CRLF
                             eventprop *alarmc
                             "END" ":" "VEVENT" CRLF
    
                eventprop  = *(
    
                           ; the following are optional,
                           ; but MUST NOT occur more than once
    
                           class / created / description / dtstart / geo /
                           last-mod / location / organizer / priority /
                           dtstamp / seq / status / summary / transp /
                           uid / url / recurid /
    
                           ; either 'dtend' or 'duration' may appear in
                           ; a 'eventprop', but 'dtend' and 'duration'
                           ; MUST NOT occur in the same 'eventprop'
    
                           dtend / duration /
    
                           ; the following are optional,
                           ; and MAY occur more than once
    
                           attach / attendee / categories / comment /
                           contact / exdate / exrule / rstatus / related /
                           resources / rdate / rrule / x-prop
    
                           )
     
    Example 1 - Creating a new all-day event:
    
     java.util.Calendar cal = java.util.Calendar.getInstance();
     cal.set(java.util.Calendar.MONTH, java.util.Calendar.DECEMBER);
     cal.set(java.util.Calendar.DAY_OF_MONTH, 25);
    
     VEvent christmas = new VEvent(cal.getTime(), "Christmas Day");
    
     // initialise as an all-day event..
     christmas.getProperties().getProperty(Property.DTSTART).getParameters().add(
             Value.DATE);
    
     // add timezone information..
     VTimeZone tz = VTimeZone.getDefault();
     TzId tzParam = new TzId(tz.getProperties().getProperty(Property.TZID)
             .getValue());
     christmas.getProperties().getProperty(Property.DTSTART).getParameters().add(
             tzParam);
     
    Example 2 - Creating an event of one (1) hour duration:
    
     java.util.Calendar cal = java.util.Calendar.getInstance();
     // tomorrow..
     cal.add(java.util.Calendar.DAY_OF_MONTH, 1);
     cal.set(java.util.Calendar.HOUR_OF_DAY, 9);
     cal.set(java.util.Calendar.MINUTE, 30);
    
     VEvent meeting = new VEvent(cal.getTime(), 1000 * 60 * 60, "Progress Meeting");
    
     // add timezone information..
     VTimeZone tz = VTimeZone.getDefault();
     TzId tzParam = new TzId(tz.getProperties().getProperty(Property.TZID)
             .getValue());
     meeting.getProperties().getProperty(Property.DTSTART).getParameters().add(
             tzParam);
     
    Example 3 - Retrieve a list of periods representing a recurring event in a specified range:
    
     Calendar weekday9AM = Calendar.getInstance();
     weekday9AM.set(2005, Calendar.MARCH, 7, 9, 0, 0);
     weekday9AM.set(Calendar.MILLISECOND, 0);
    
     Calendar weekday5PM = Calendar.getInstance();
     weekday5PM.set(2005, Calendar.MARCH, 7, 17, 0, 0);
     weekday5PM.set(Calendar.MILLISECOND, 0);
    
     // Do the recurrence until December 31st.
     Calendar untilCal = Calendar.getInstance();
     untilCal.set(2005, Calendar.DECEMBER, 31);
     untilCal.set(Calendar.MILLISECOND, 0);
    
     // 9:00AM to 5:00PM Rule
     Recur recur = new Recur(Recur.WEEKLY, untilCal.getTime());
     recur.getDayList().add(WeekDay.MO);
     recur.getDayList().add(WeekDay.TU);
     recur.getDayList().add(WeekDay.WE);
     recur.getDayList().add(WeekDay.TH);
     recur.getDayList().add(WeekDay.FR);
     recur.setInterval(3);
     recur.setWeekStartDay(WeekDay.MO.getDay());
     RRule rrule = new RRule(recur);
    
     Summary summary = new Summary("TEST EVENTS THAT HAPPEN 9-5 MON-FRI");
    
     weekdayNineToFiveEvents = new VEvent();
     weekdayNineToFiveEvents.add(rrule);
     weekdayNineToFiveEvents.add(summary);
     weekdayNineToFiveEvents.add(new DtStart(weekday9AM.getTime()));
     weekdayNineToFiveEvents.add(new DtEnd(weekday5PM.getTime()));
    
     // Test Start 04/01/2005, End One month later.
     // Query Calendar Start and End Dates.
     Calendar queryStartDate = Calendar.getInstance();
     queryStartDate.set(2005, Calendar.APRIL, 1, 14, 47, 0);
     queryStartDate.set(Calendar.MILLISECOND, 0);
     Calendar queryEndDate = Calendar.getInstance();
     queryEndDate.set(2005, Calendar.MAY, 1, 11, 15, 0);
     queryEndDate.set(Calendar.MILLISECOND, 0);
    
     // This range is monday to friday every three weeks, starting from
     // March 7th 2005, which means for our query dates we need
     // April 18th through to the 22nd.
     PeriodList periods = weekdayNineToFiveEvents.getPeriods(queryStartDate
             .getTime(), queryEndDate.getTime());
     
    See Also:
    Serialized Form