public class VFreeBusy extends CalendarComponent
4.6.4 Free/Busy Component Component Name: VFREEBUSY Purpose: Provide a grouping of component properties that describe either a request for free/busy time, describe a response to a request for free/busy time or describe a published set of busy time. Formal Definition: A "VFREEBUSY" calendar component is defined by the following notation: freebusyc = "BEGIN" ":" "VFREEBUSY" CRLF fbprop "END" ":" "VFREEBUSY" CRLF fbprop = *( ; the following are optional, ; but MUST NOT occur more than once contact / dtstart / dtend / duration / dtstamp / organizer / uid / url / ; the following are optional, ; and MAY occur more than once attendee / comment / freebusy / rstatus / x-prop ) Description: A "VFREEBUSY" calendar component is a grouping of component properties that represents either a request for, a reply to a request for free or busy time information or a published set of busy time information. When used to request free/busy time information, the "ATTENDEE" property specifies the calendar users whose free/busy time is being requested; the "ORGANIZER" property specifies the calendar user who is requesting the free/busy time; the "DTSTART" and "DTEND" properties specify the window of time for which the free/busy time is being requested; the "UID" and "DTSTAMP" properties are specified to assist in proper sequencing of multiple free/busy time requests. When used to reply to a request for free/busy time, the "ATTENDEE" property specifies the calendar user responding to the free/busy time request; the "ORGANIZER" property specifies the calendar user that originally requested the free/busy time; the "FREEBUSY" property specifies the free/busy time information (if it exists); and the "UID" and "DTSTAMP" properties are specified to assist in proper sequencing of multiple free/busy time replies. When used to publish busy time, the "ORGANIZER" property specifies the calendar user associated with the published busy time; the "DTSTART" and "DTEND" properties specify an inclusive time window that surrounds the busy time information; the "FREEBUSY" property specifies the published busy time information; and the "DTSTAMP" property specifies the date/time that iCalendar object was created. The "VFREEBUSY" calendar component cannot be nested within another calendar component. Multiple "VFREEBUSY" calendar components can be specified within an iCalendar object. This permits the grouping of Free/Busy information into logical collections, such as monthly groups of busy time information. The "VFREEBUSY" calendar component is intended for use in iCalendar object methods involving requests for free time, requests for busy time, requests for both free and busy, and the associated replies. Free/Busy information is represented with the "FREEBUSY" property. This property provides a terse representation of time periods. One or more "FREEBUSY" properties can be specified in the "VFREEBUSY" calendar component. When present in a "VFREEBUSY" calendar component, the "DTSTART" and "DTEND" properties SHOULD be specified prior to any "FREEBUSY" properties. In a free time request, these properties can be used in combination with the "DURATION" property to represent a request for a duration of free time within a specified window of time. The recurrence properties ("RRULE", "EXRULE", "RDATE", "EXDATE") are not permitted within a "VFREEBUSY" calendar component. Any recurring events are resolved into their individual busy time periods using the "FREEBUSY" property. Example: The following is an example of a "VFREEBUSY" calendar component used to request free or busy time information: BEGIN:VFREEBUSY ORGANIZER:MAILTO:jane_doe@host1.com ATTENDEE:MAILTO:john_public@host2.com DTSTART:19971015T050000Z DTEND:19971016T050000Z DTSTAMP:19970901T083000Z END:VFREEBUSY The following is an example of a "VFREEBUSY" calendar component used to reply to the request with busy time information: BEGIN:VFREEBUSY ORGANIZER:MAILTO:jane_doe@host1.com ATTENDEE:MAILTO:john_public@host2.com DTSTAMP:19970901T100000Z FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M URL:http://host2.com/pub/busy/jpublic-01.ifb COMMENT:This iCalendar file contains busy time information for the next three months. END:VFREEBUSY The following is an example of a "VFREEBUSY" calendar component used to publish busy time information. BEGIN:VFREEBUSY ORGANIZER:jsmith@host.com DTSTART:19980313T141711Z DTEND:19980410T141711Z FREEBUSY:19980314T233000Z/19980315T003000Z FREEBUSY:19980316T153000Z/19980316T163000Z FREEBUSY:19980318T030000Z/19980318T040000Z URL:http://www.host.com/calendar/busytime/jsmith.ifb END:VFREEBUSYExample 1 - Requesting all busy time slots for a given period:
// request all busy times between today and 1 week from now..
DateTime start = new DateTime();
DateTime end = new DateTime(start.getTime() + 1000 * 60 * 60 * 24 * 7);
VFreeBusy request = new VFreeBusy(start, end);
VFreeBusy reply = new VFreeBusy(request, calendar.getComponents());
Example 2 - Requesting all free time slots for a given period of at least the specified duration:
// request all free time between today and 1 week from now of
// duration 2 hours or more..
DateTime start = new DateTime();
DateTime end = new DateTime(start.getTime() + 1000 * 60 * 60 * 24 * 7);
VFreeBusy request = new VFreeBusy(start, end, new Dur(0, 2, 0, 0));
VFreeBusy response = new VFreeBusy(request, myCalendar.getComponents());
Modifier and Type | Class and Description |
---|---|
static class |
VFreeBusy.Factory |
EMPTY_VALIDATOR
Constructor and Description |
---|
VFreeBusy()
Default constructor.
|
VFreeBusy(boolean initialise) |
VFreeBusy(DateTime start,
DateTime end)
Constructs a new VFreeBusy instance with the specified start and end boundaries.
|
VFreeBusy(DateTime start,
DateTime end,
java.time.temporal.TemporalAmount duration)
Constructs a new VFreeBusy instance with the specified start and end boundaries.
|
VFreeBusy(PropertyList properties)
Constructor.
|
VFreeBusy(VFreeBusy request,
ComponentList<CalendarComponent> components)
Constructs a new VFreeBusy instance representing a reply to the specified VFREEBUSY request according to the
specified list of components.
|
Modifier and Type | Method and Description |
---|---|
Contact |
getContact() |
DtStamp |
getDateStamp() |
Duration |
getDuration() |
DtEnd |
getEndDate() |
Organizer |
getOrganizer() |
DtStart |
getStartDate() |
Uid |
getUid()
Returns the UID property of this component if available.
|
Url |
getUrl() |
protected Validator |
getValidator(Method method) |
void |
validate(boolean recurse)
Perform validation on a component.
|
validate, validateAdd, validateCancel, validateCounter, validateDeclineCounter, validatePublish, validateRefresh, validateReply, validateRequest
calculateRecurrenceSet, copy, equals, getName, getProperties, getProperties, getProperty, getRequiredProperty, hashCode, toString, validate, validateProperties
public VFreeBusy()
public VFreeBusy(boolean initialise)
public VFreeBusy(PropertyList properties)
properties
- a list of propertiespublic VFreeBusy(DateTime start, DateTime end)
start
- the starting boundary for the VFreeBusyend
- the ending boundary for the VFreeBusypublic VFreeBusy(DateTime start, DateTime end, java.time.temporal.TemporalAmount duration)
start
- the starting boundary for the VFreeBusyend
- the ending boundary for the VFreeBusyduration
- the length of the period being requestedpublic VFreeBusy(VFreeBusy request, ComponentList<CalendarComponent> components)
request
- a VFREEBUSY requestcomponents
- a component list used to initialise busy timeValidationException
public final void validate(boolean recurse) throws ValidationException
validate
in class Component
recurse
- indicates whether to validate the component's propertiesValidationException
- where the component is not in a valid stateprotected Validator getValidator(Method method)
getValidator
in class CalendarComponent
method
- a method to validate onpublic final Contact getContact()
public final DtStart getStartDate()
public final DtEnd getEndDate()
public final Duration getDuration()
public final DtStamp getDateStamp()
public final Organizer getOrganizer()
public final Url getUrl()
public final Uid getUid()