net.fortuna.ical4j.model

## Class Component

- java.lang.Object
- - net.fortuna.ical4j.model.Component

All Implemented Interfaces:
  Serializable

Direct Known Subclasses:
  Available, CalendarComponent, Observance

    public abstract class Component
    extends Object
    implements Serializable

$Id$ [Apr 5, 2004] Defines an iCalendar component. Subclasses of this class provide additional validation and typed values for specific iCalendar components.

Author:
  Ben Fortuna
See Also:
  Serialized Form

### Field Summary

Fields
`static String` `AVAILABLE` Component token.
`static String` `BEGIN` Component start token.
`static String` `END` Component end token.
`static String` `EXPERIMENTAL_PREFIX` Prefix for non-standard components.
`static String` `VALARM` Component token.
`static String` `VAVAILABILITY` Component token.
`static String` `VEVENT` Component token.
`static String` `VFREEBUSY` Component token.
`static String` `VJOURNAL` Component token.
`static String` `VTIMEZONE` Component token.
`static String` `VTODO` Component token.
`static String` `VVENUE` Component token.

### Constructor Summary

Constructors
`protected` `Component(String s)` Constructs a new component containing no properties.
`protected` `Component(String s, PropertyList p)` Constructor made protected to enforce the use of `ComponentFactory` for component instantiation.

### Method Summary

Methods
`PeriodList` `calculateRecurrenceSet(Period period)` Calculates the recurrence set for this component using the specified period.
`Component` `copy()` Create a (deep) copy of this component.
`boolean` `equals(Object arg0)`
`String` `getName()`
`PropertyList` `getProperties()`
`PropertyList` `getProperties(String name)` Convenience method for retrieving a list of named properties.
`Property` `getProperty(String name)` Convenience method for retrieving a named property.
`int` `hashCode()`
`String` `toString()`
`void` `validate()` Perform validation on a component and its properties.
`abstract void` `validate(boolean recurse)` Perform validation on a component.
`protected void` `validateProperties()` Invoke validation on the component properties in its current state.

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### BEGIN

    public static final String BEGIN

Component start token.

See Also:
  Constant Field Values

#### END

    public static final String END

Component end token.

See Also:
  Constant Field Values

#### VEVENT

    public static final String VEVENT

Component token.

See Also:
  Constant Field Values

#### VTODO

    public static final String VTODO

Component token.

See Also:
  Constant Field Values

#### VJOURNAL

    public static final String VJOURNAL

Component token.

See Also:
  Constant Field Values

#### VFREEBUSY

    public static final String VFREEBUSY

Component token.

See Also:
  Constant Field Values

#### VTIMEZONE

    public static final String VTIMEZONE

Component token.

See Also:
  Constant Field Values

#### VALARM

    public static final String VALARM

Component token.

See Also:
  Constant Field Values

#### VAVAILABILITY

    public static final String VAVAILABILITY

Component token.

See Also:
  Constant Field Values

#### VVENUE

    public static final String VVENUE

Component token.

See Also:
  Constant Field Values

#### AVAILABLE

    public static final String AVAILABLE

Component token.

See Also:
  Constant Field Values

#### EXPERIMENTAL_PREFIX

    public static final String EXPERIMENTAL_PREFIX

Prefix for non-standard components.

See Also:
  Constant Field Values

### Constructor Detail

#### Component

    protected Component(String s)

Constructs a new component containing no properties.

Parameters:
  `s` - a component name

#### Component

    protected Component(String s,
             PropertyList p)

Constructor made protected to enforce the use of `ComponentFactory` for component instantiation.

Parameters:
  `s` - component name
  `p` - a list of properties

### Method Detail

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### getName

    public final String getName()

Returns:
  Returns the name.

#### getProperties

    public final PropertyList getProperties()

Returns:
  Returns the properties.

#### getProperties

    public final PropertyList getProperties(String name)

Convenience method for retrieving a list of named properties.

Parameters:
  `name` - name of properties to retrieve
Returns:
  a property list containing only properties with the specified name

#### getProperty

    public final Property getProperty(String name)

Convenience method for retrieving a named property.

Parameters:
  `name` - name of the property to retrieve
Returns:
  the first matching property in the property list with the specified name

#### validate

    public final void validate()
                        throws ValidationException

Perform validation on a component and its properties.

Throws:
  `ValidationException` - where the component is not in a valid state

#### validate

    public abstract void validate(boolean recurse)
                           throws ValidationException

Perform validation on a component.

Parameters:
  `recurse` - indicates whether to validate the component's properties
Throws:
  `ValidationException` - where the component is not in a valid state

#### validateProperties

    protected final void validateProperties()
                                     throws ValidationException

Invoke validation on the component properties in its current state.

Throws:
  `ValidationException` - where any of the component properties is not in a valid state

#### equals

    public boolean equals(Object arg0)

Overrides:
  `equals` in class `Object`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `Object`

#### copy

    public Component copy()
                   throws ParseException,
                          IOException,
                          URISyntaxException

Create a (deep) copy of this component.

Returns:
  the component copy
Throws:
  `IOException` - where an error occurs reading the component data
  `ParseException` - where parsing component data fails
  `URISyntaxException` - where component data contains an invalid URI

#### calculateRecurrenceSet

    public final PeriodList calculateRecurrenceSet(Period period)

Calculates the recurrence set for this component using the specified period. The recurrence set is derived from a combination of the component start date, recurrence rules and dates, and exception rules and dates. Note that component transparency and anniversary-style dates do not affect the resulting intersection.

If an explicit DURATION is not specified, the effective duration of each returned period is derived from the DTSTART and DTEND or DUE properties. If the component has no DURATION, DTEND or DUE, the effective duration is set to PT0S

Parameters:
  `period` - a range to calculate recurrences for
Returns:
  a list of periods