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:[email protected]
ATTENDEE:MAILTO:[email protected]
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:[email protected]
ATTENDEE:MAILTO:[email protected]
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:[email protected]
DTSTART:19980313T141711Z
DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
URL:http://www.host.com/calendar/busytime/jsmith.ifb
END:VFREEBUSY
Example 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 |
|---|---|
| private static class | VFreeBusy.
Create a FREEBUSY property representing the busy time for the specified component list. |
| public static class | VFreeBusy.
Default factory. |
| private static class | VFreeBusy.
Create a FREEBUSY property representing the free time available of the specified duration for the given list of components. |
| Modifier and Type | Field and Description |
|---|---|
| private static final Map | |
| private static final long |
| Access | Constructor and Description |
|---|---|
| public | |
| public | |
| public | |
| public | |
| public | VFreeBusy(final Instant
the starting boundary for the VFreeBusy start, final Instant the ending boundary for the VFreeBusy end, final TemporalAmount the length of the period being requested duration)Constructs a new VFreeBusy instance with the specified start and end boundaries. |
| public | VFreeBusy(final VFreeBusy
a VFREEBUSY request request, final List<CalendarComponent> a component list used to initialise busy time 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 |
|---|---|
| public VFreeBusy | copy()
Overrides net. Implements net. Create a (deep) copy of this component. |
| public ComponentList | Returns: Returns the underlying component list.Implements net.
|
| private static <T extends Temporal> List | getConsumedTime(final List<CalendarComponent> components, final Period<T> range)
Creates a list of periods representing the time consumed by the specified list of components. |
| public final Optional | Returns: the CONTACT property or null if not specified
Deprecated
use
VFreeBusy#getProperty(String)
|
| public final Optional | Returns: the DTSTAMP property or null if not specified
Deprecated
use
VFreeBusy#getProperty(String)
|
| public final <T extends Temporal> Optional | Returns: the DTEND property or null if not specified
Deprecated
use
DateTimePropertyAccessor#getDateTimeEnd()
|
| public final Optional | Returns: the ORGANIZER property or null if not specified
Deprecated
use
VFreeBusy#getProperty(String)
|
| public final <T extends Temporal> Optional | Returns: the DTSTART propery or null if not specified
Deprecated
use
DateTimePropertyAccessor#getDateTimeStart()
|
| public final Optional | Returns: the URL property or null if not specified
Deprecated
use
VFreeBusy#getProperty(String)
|
| protected ComponentFactory | newFactory()
Implements abstract net. Returns a new component factory used to create deep copies. |
| public void | setComponentList(ComponentList<Component> components)
Implements net.
|
| public ValidationResult | validate(final boolean
indicates whether to validate the component's properties recurse)Implements abstract net. Perform validation on a component. |
| public ValidationResult | validate(Method
the applicable method method)Overrides net. Performs method-specific ITIP validation. |
| methodValidators | back to summary |
|---|---|
| private static final Map<Method, Validator<VFreeBusy>> methodValidators | |
| serialVersionUID | back to summary |
|---|---|
| private static final long serialVersionUID Hides net. | |
| VFreeBusy | back to summary |
|---|---|
| public VFreeBusy() Default constructor. | |
| VFreeBusy | back to summary |
|---|---|
| public VFreeBusy(boolean initialise) | |
| VFreeBusy | back to summary |
|---|---|
| public VFreeBusy(final PropertyList properties) Constructor.
| |
| VFreeBusy | back to summary |
|---|---|
| public VFreeBusy(final Temporal start, final Temporal end) Constructs a new VFreeBusy instance with the specified start and end boundaries. This constructor should be used for requesting busy time for a specified period. | |
| VFreeBusy | back to summary |
|---|---|
| public VFreeBusy(final Instant start, final Instant end, final TemporalAmount duration) Constructs a new VFreeBusy instance with the specified start and end boundaries. This constructor should be used for requesting free time for a specified duration in given period defined by the start date and end date.
| |
| VFreeBusy | back to summary |
|---|---|
| public VFreeBusy(final VFreeBusy request, final List<CalendarComponent> components) Constructs a new VFreeBusy instance representing a reply to the specified VFREEBUSY request according to the specified list of components. If the request argument has its duration set, then the result represents a list of free times (that is, parameter FBTYPE is set to FbType.FREE). If the request argument does not have its duration set, then the result represents a list of busy times.
| |
| copy | back to summary |
|---|---|
| public VFreeBusy copy() Overrides net. Implements net. Doc from net. Create a (deep) copy of this component. | |
| getComponentList | back to summary |
|---|---|
| public ComponentList Implements net.
| |
| getConsumedTime | back to summary |
|---|---|
| private static <T extends Temporal> List Creates a list of periods representing the time consumed by the specified list of components. | |
| getContact | back to summary |
|---|---|
| public final Optional Deprecated | |
| getDateStamp | back to summary |
|---|---|
| public final Optional Deprecated | |
| getEndDate | back to summary |
|---|---|
| public final <T extends Temporal> Optional Deprecated | |
| getOrganizer | back to summary |
|---|---|
| public final Optional Deprecated | |
| getStartDate | back to summary |
|---|---|
| public final <T extends Temporal> Optional Deprecated | |
| getUrl | back to summary |
|---|---|
| public final Optional Deprecated | |
| newFactory | back to summary |
|---|---|
| protected ComponentFactory Implements abstract net. Doc from net. Returns a new component factory used to create deep copies.
| |
| setComponentList | back to summary |
|---|---|
| public void setComponentList(ComponentList<Component> components) Implements net.
| |
| validate | back to summary |
|---|---|
| public ValidationResult validate(final boolean recurse) throws ValidationException Implements abstract net. Doc from net. Perform validation on a component.
| |
| validate | back to summary |
|---|---|
| public ValidationResult validate(Method method) throws ValidationException Overrides net. Performs method-specific ITIP validation.
| |
| Modifier and Type | Field and Description |
|---|---|
| private List | |
| private Instant | |
| private Instant |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public FreeBusy | |
| public VFreeBusy. | |
| public VFreeBusy. | |
| public VFreeBusy. |
| components | back to summary |
|---|---|
| private List<CalendarComponent> components | |
| end | back to summary |
|---|---|
| private Instant end | |
| start | back to summary |
|---|---|
| private Instant start | |
| BusyTimeBuilder | back to summary |
|---|---|
| private BusyTimeBuilder() | |
| build | back to summary |
|---|---|
| public FreeBusy build() | |
| components | back to summary |
|---|---|
| public VFreeBusy. | |
| end | back to summary |
|---|---|
| public VFreeBusy. | |
| start | back to summary |
|---|---|
| public VFreeBusy. | |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| public VFreeBusy | |
| public VFreeBusy | createComponent(PropertyList properties)
Implements net.
|
| Factory | back to summary |
|---|---|
| public Factory() | |
| createComponent | back to summary |
|---|---|
| public VFreeBusy createComponent() Implements net.
| |
| createComponent | back to summary |
|---|---|
| public VFreeBusy createComponent(PropertyList properties) Implements net.
| |
| Modifier and Type | Field and Description |
|---|---|
| private List | |
| private TemporalAmount | |
| private Instant | |
| private Instant |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public FreeBusy | |
| public VFreeBusy. | |
| private VFreeBusy. | |
| public VFreeBusy. | |
| public VFreeBusy. |
| components | back to summary |
|---|---|
| private List<CalendarComponent> components | |
| duration | back to summary |
|---|---|
| private TemporalAmount duration | |
| end | back to summary |
|---|---|
| private Instant end | |
| start | back to summary |
|---|---|
| private Instant start | |
| FreeTimeBuilder | back to summary |
|---|---|
| private FreeTimeBuilder() | |
| build | back to summary |
|---|---|
| public FreeBusy build() | |
| components | back to summary |
|---|---|
| public VFreeBusy. | |
| duration | back to summary |
|---|---|
| private VFreeBusy. | |
| end | back to summary |
|---|---|
| public VFreeBusy. | |
| start | back to summary |
|---|---|
| public VFreeBusy. | |