$Id: VEvent.java,v 1.52 2009/01/10 07:27:23 fortuna Exp $ [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.getProperties().add(rrule);
weekdayNineToFiveEvents.getProperties().add(summary);
weekdayNineToFiveEvents.getProperties().add(new DtStart(weekday9AM.getTime()));
weekdayNineToFiveEvents.getProperties().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());
copy
public Component copy()
throws ParseException,
IOException,
URISyntaxException
Overrides default copy method to add support for copying alarm sub-components.
net.fortuna.ical4j.model.Component.copy()
equals
public boolean equals(Object arg0)
getAlarms
public final ComponentList getAlarms()
Returns the list of alarms for this event.
getClassification
public final Clazz getClassification()
- the optional access classification property for an event
getConsumedTime
public final PeriodList getConsumedTime(Date rangeStart,
Date rangeEnd)
Returns a normalised list of periods representing the consumed time for this event.
- a normalised list of periods representing consumed time for this event
VEvent.getConsumedTime(Date, Date, boolean)
getConsumedTime
public final PeriodList getConsumedTime(Date rangeStart,
Date rangeEnd,
boolean normalise)
Returns a list of periods representing the consumed time for this event in the specified range. Note that the
returned list may contain a single period for non-recurring components or multiple periods for recurring
components. If no time is consumed by this event an empty list is returned.
rangeStart
- the start of the range to check for consumed timerangeEnd
- the end of the range to check for consumed timenormalise
- indicate whether the returned list of periods should be normalised
- a list of periods representing consumed time for this event
getCreated
public final Created getCreated()
- the optional creation-time property for an event
getDateStamp
public final DtStamp getDateStamp()
- the optional date-stamp property
getDescription
public final Description getDescription()
- the optional description property for an event
getDuration
public final Duration getDuration()
- the optional Duration property
getEndDate
public final DtEnd getEndDate()
Returns the end date of this event. Where an end date is not available it will be derived from the event
duration.
- a DtEnd instance, or null if one cannot be derived
getEndDate
public final DtEnd getEndDate(boolean deriveFromDuration)
Convenience method to pull the DTEND out of the property list. If DTEND was not specified, use the DTSTART +
DURATION to calculate it.
deriveFromDuration
- specifies whether to derive an end date from the event duration where an end date is
not found
getGeographicPos
public final Geo getGeographicPos()
- the optional geographic position property for an event
getLastModified
public final LastModified getLastModified()
- the optional last-modified property for an event
getLocation
public final Location getLocation()
- the optional location property for an event
getOccurrence
public final VEvent getOccurrence(Date date)
throws IOException,
URISyntaxException,
ParseException
Returns a single occurrence of a recurring event.
getOrganizer
public final Organizer getOrganizer()
- the optional organizer property for an event
getPriority
public final Priority getPriority()
- the optional priority property for an event
getRecurrenceId
public final RecurrenceId getRecurrenceId()
- the optional recurrence identifier property for an event
getSequence
public final Sequence getSequence()
- the optional sequence number property for an event
getStartDate
public final DtStart getStartDate()
Convenience method to pull the DTSTART out of the property list.
- The DtStart object representation of the start Date
getStatus
public final Status getStatus()
- the optional status property for an event
getSummary
public final Summary getSummary()
- the optional summary property for an event
getTransparency
public final Transp getTransparency()
- the optional time transparency property for an event
getUid
public final Uid getUid()
Returns the UID property of this component if available.
- a Uid instance, or null if no UID property exists
getUrl
public final Url getUrl()
- the optional URL property for an event
hashCode
public int hashCode()
toString
public final String toString()
java.lang.Object.toString()
validate
public final void validate(boolean recurse)
throws ValidationException
net.fortuna.ical4j.model.Component.validate(boolean)
validateAdd
public void validateAdd()
throws ValidationException
validateCancel
public void validateCancel()
throws ValidationException
validateCounter
public void validateCounter()
throws ValidationException
validateDeclineCounter
public void validateDeclineCounter()
throws ValidationException
validatePublish
public void validatePublish()
throws ValidationException
Component/Property Presence
------------------- ----------------------------------------------
METHOD 1 MUST equal "PUBLISH"
VEVENT 1+
DTSTAMP 1
DTSTART 1
ORGANIZER 1
SUMMARY 1 Can be null.
UID 1
RECURRENCE-ID 0 or 1 only if referring to an instance of a
recurring calendar component. Otherwise
it MUST NOT be present.
SEQUENCE 0 or 1 MUST be present if value is greater than
0, MAY be present if 0
ATTACH 0+
CATEGORIES 0 or 1 This property may contain a list of
values
CLASS 0 or 1
COMMENT 0 or 1
CONTACT 0+
CREATED 0 or 1
DESCRIPTION 0 or 1 Can be null
DTEND 0 or 1 if present DURATION MUST NOT be present
DURATION 0 or 1 if present DTEND MUST NOT be present
EXDATE 0+
EXRULE 0+
GEO 0 or 1
LAST-MODIFIED 0 or 1
LOCATION 0 or 1
PRIORITY 0 or 1
RDATE 0+
RELATED-TO 0+
RESOURCES 0 or 1 This property MAY contain a list of values
RRULE 0+
STATUS 0 or 1 MAY be one of TENTATIVE/CONFIRMED/CANCELLED
TRANSP 0 or 1
URL 0 or 1
X-PROPERTY 0+
ATTENDEE 0
REQUEST-STATUS 0
VALARM 0+
VFREEBUSY 0
VJOURNAL 0
VTODO 0
VTIMEZONE 0+ MUST be present if any date/time refers to
a timezone
X-COMPONENT 0+
validateRefresh
public void validateRefresh()
throws ValidationException
validateReply
public void validateReply()
throws ValidationException
validateRequest
public void validateRequest()
throws ValidationException