FileDocCategorySizeDatePackage
EventEntry.javaAPI DocAndroid 1.5 API8054Wed May 06 22:41:16 BST 2009com.google.wireless.gdata.calendar.data

EventEntry.java

// Copyright 2007 The Android Open Source Project

package com.google.wireless.gdata.calendar.data;

import com.google.wireless.gdata.data.Entry;

import java.util.Hashtable;
import java.util.Vector;
import java.util.Enumeration;

/**
 * Entry containing information about an event in a calendar.
 */
public class EventEntry extends Entry {

    // TODO: pack all of these enums into an int

    /**
     * Status constant indicating that a user's attendance at an event is
     * tentative.
     */
    public static final byte STATUS_TENTATIVE = 0;

    /**
     * Status constant indicating that a user's attendance at an event is
     * confirmed.
     */
    public static final byte STATUS_CONFIRMED = 1;

    /**
     * Status constant indicating that an event has been cancelled.
     */
    public static final byte STATUS_CANCELED = 2;

    /**
     * Visibility constant indicating that an event uses the user's default
     * visibility.
     */
    public static final byte VISIBILITY_DEFAULT = 0;

    /**
     * Visibility constant indicating that an event has been marked
     * confidential.
     */
    public static final byte VISIBILITY_CONFIDENTIAL = 1;

    /**
     * Visibility constant indicating that an event has been marked private.
     */
    public static final byte VISIBILITY_PRIVATE = 2;

    /**
     * Visibility constant indicating that an event has been marked public.
     */
    public static final byte VISIBILITY_PUBLIC = 3;

    /**
     * Transparency constant indicating that an event has been marked opaque.
     */
    public static final byte TRANSPARENCY_OPAQUE = 0;

    /**
     * Transparency constant indicating that an event has been marked
     * transparent.
     */
    public static final byte TRANSPARENCY_TRANSPARENT = 1;

    private byte status = STATUS_TENTATIVE;
    private String recurrence = null;
    private byte visibility = VISIBILITY_DEFAULT;
    private byte transparency = TRANSPARENCY_OPAQUE;
    private Vector attendees = new Vector();
    private Vector whens = new Vector();
    private Vector reminders = null;
    private String originalEventId = null;
    private String originalEventStartTime = null;
    private String where = null;
    private String commentsUri = null;
    private Hashtable extendedProperties = null;

    /**
     * Creates a new empty event entry.
     */
    public EventEntry() {
    }

    /*
     * (non-Javadoc)
     * @see com.google.wireless.gdata.data.Entry#clear()
     */
    public void clear() {
        super.clear();
        status = STATUS_TENTATIVE;
        recurrence = null;
        visibility = VISIBILITY_DEFAULT;
        transparency = TRANSPARENCY_OPAQUE;
        attendees.removeAllElements();
        whens.removeAllElements();
        reminders = null;
        originalEventId = null;
        originalEventStartTime = null;
        where = null;
        commentsUri = null;
        extendedProperties = null;
    }

    /**
     * @return the recurrence
     */
    public String getRecurrence() {
        return recurrence;
    }

    /**
     * @param recurrence the recurrence to set
     */
    public void setRecurrence(String recurrence) {
        this.recurrence = recurrence;
    }

    /**
     * @return the status
     */
    public byte getStatus() {
        return status;
    }

    /**
     * @param status the status to set
     */
    public void setStatus(byte status) {
        this.status = status;
    }

    /**
     * @return the transparency
     */
    public byte getTransparency() {
        return transparency;
    }

    /**
     * @param transparency the transparency to set
     */
    public void setTransparency(byte transparency) {
        this.transparency = transparency;
    }

    /**
     * @return the visibility
     */
    public byte getVisibility() {
        return visibility;
    }

    /**
     * @param visibility the visibility to set
     */
    public void setVisibility(byte visibility) {
        this.visibility = visibility;
    }

    public void clearAttendees() {
        attendees.clear();
    }

    public void addAttendee(Who attendee) {
        attendees.add(attendee);
    }

    public Vector getAttendees() {
        return attendees;
    }

    public void clearWhens() {
        whens.clear();
    }

    public void addWhen(When when) {
        whens.add(when);
    }

    public Vector getWhens() {
        return whens;
    }

    public When getFirstWhen() {
        if (whens.isEmpty()) {
            return null;
        }
        return (When) whens.elementAt(0);
    }

    public Vector getReminders() {
        return reminders;
    }

    public void addReminder(Reminder reminder) {
        if (reminders == null) {
            reminders = new Vector();
        }
        reminders.add(reminder);
    }

    public void clearReminders() {
        reminders = null;
    }

    public String getOriginalEventId() {
        return originalEventId;
    }

    public void setOriginalEventId(String originalEventId) {
        this.originalEventId = originalEventId;
    }

    public String getOriginalEventStartTime() {
        return originalEventStartTime;
    }

    public void setOriginalEventStartTime(String originalEventStartTime) {
        this.originalEventStartTime = originalEventStartTime;
    }

    /**
     * @return the where
     */
    public String getWhere() {
        return where;
    }

    /**
     * @param where the where to set
     */
    public void setWhere(String where) {
        this.where = where;
    }

    public Hashtable getExtendedProperties() {
        return extendedProperties;
    }

    public String getExtendedProperty(String name) {
        if (extendedProperties == null) {
            return null;
        }
        String value = null;
        if (extendedProperties.containsKey(name)) {
            value = (String) extendedProperties.get(name);
        }
        return value;
    }

    public void addExtendedProperty(String name, String value) {
        if (extendedProperties == null) {
            extendedProperties = new Hashtable();
        }
        extendedProperties.put(name, value);
    }

    public void clearExtendedProperties() {
        extendedProperties = null;
    }

    public String getCommentsUri() {
        return commentsUri;
    }

    public void setCommentsUri(String commentsUri) {
        this.commentsUri = commentsUri;
    }

    public void toString(StringBuffer sb) {
        super.toString(sb);
        sb.append("STATUS: " + status + "\n");
        appendIfNotNull(sb, "RECURRENCE", recurrence);
        sb.append("VISIBILITY: " + visibility + "\n");
        sb.append("TRANSPARENCY: " + transparency + "\n");
        
        appendIfNotNull(sb, "ORIGINAL_EVENT_ID", originalEventId);
        appendIfNotNull(sb, "ORIGINAL_START_TIME", originalEventStartTime);

        Enumeration whos = this.attendees.elements();
        while (whos.hasMoreElements()) {
            Who who = (Who) whos.nextElement();
            who.toString(sb);
        }

        Enumeration times = this.whens.elements();
        while (times.hasMoreElements()) {
            When when = (When) times.nextElement();
            when.toString(sb);
        }
        if (reminders != null) {
            Enumeration alarms = reminders.elements();
            while (alarms.hasMoreElements()) {
                Reminder reminder = (Reminder) alarms.nextElement();
                reminder.toString(sb);
            }
        }
        appendIfNotNull(sb, "WHERE", where);
        appendIfNotNull(sb, "COMMENTS", commentsUri);
        if (extendedProperties != null) {
            Enumeration entryNames = extendedProperties.keys();
            while (entryNames.hasMoreElements()) {
                String name = (String) entryNames.nextElement();
                String value = (String) extendedProperties.get(name);
                sb.append(name);
                sb.append(':');
                sb.append(value);
                sb.append('\n');
            }
        }
    }
}