All Downloads are FREE. Search and download functionalities are using the official Maven repository.

microsoft.exchange.webservices.data.Appointment Maven / Gradle / Ivy

Go to download

The source came from http://archive.msdn.microsoft.com/ewsjavaapi Support for Maven has been added.

The newest version!
/**************************************************************************
 * copyright file="Appointment.java" company="Microsoft"
 *     Copyright (c) Microsoft Corporation.  All rights reserved.
 * 
 * Defines the Appointment.java.
 **************************************************************************/
package microsoft.exchange.webservices.data;

import java.util.ArrayList;
import java.util.Date;

/**
 * Represents an appointment or a meeting. Properties available on appointments
 * are defined in the AppointmentSchema class.
 * 
 */
@Attachable
@ServiceObjectDefinition(xmlElementName = XmlElementNames.CalendarItem)
public class Appointment extends Item implements ICalendarActionProvider {

	/**
	 * Initializes an unsaved local instance of Appointment". To bind to an
	 * existing appointment, use Appointment.Bind() instead.
	 * 
	 * @param service
	 *            The ExchangeService instance to which this appointmtnt is
	 *            bound.
	 * @throws Exception
	 *             the exception
	 */
	public Appointment(ExchangeService service) throws Exception {
		super(service);
	}

	/**
	 * Initializes a new instance of Appointment.
	 * 
	 * @param parentAttachment
	 *            the parent attachment
	 * @param isNew
	 *            If true, attachment is new.
	 * @throws Exception
	 *             the exception
	 */
	protected Appointment(ItemAttachment parentAttachment, boolean isNew)
			throws Exception {
		// If we're running against Exchange 2007, we need to explicitly preset
		// the StartTimeZone property since Exchange 2007 will otherwise scope
		// start and end to UTC.
		super(parentAttachment);
	}

	/**
	 * Binds to an existing appointment and loads the specified set of
	 * properties. Calling this method results in a call to EWS.
	 * 
	 * @param service
	 *            the service
	 * @param id
	 *            the id
	 * @param propertySet
	 *            the property set
	 * @return An Appointment instance representing the appointment
	 *         corresponding to the specified Id.
	 * @throws Exception
	 *             the exception
	 */
	public static Appointment bind(ExchangeService service, ItemId id,
			PropertySet propertySet) throws Exception {
		return service.bindToItem(Appointment.class, id, propertySet);
	}

	/**
	 * Binds to an existing appointment and loads its first class properties.
	 * Calling this method results in a call to EWS.
	 * 
	 * @param service
	 *            the service
	 * @param id
	 *            the id
	 * @return An Appointment instance representing the appointment
	 *         corresponding to the specified Id.
	 * @throws Exception
	 *             the exception
	 */
	public static Appointment bind(ExchangeService service, ItemId id)
			throws Exception {
		return Appointment.bind(service, id, PropertySet.FirstClassProperties);
	}

	/**
	 * Binds to an existing appointment and loads its first class properties.
	 * Calling this method results in a call to EWS.
	 * 
	 * @param service
	 *            the service
	 * @param recurringMasterId
	 *            the recurring master id
	 * @param occurenceIndex
	 *            the occurence index
	 * @return An Appointment instance representing the appointment
	 *         corresponding to the specified Id.
	 * @throws Exception
	 *             the exception
	 */
	public static Appointment bindToOccurrence(ExchangeService service,
			ItemId recurringMasterId, int occurenceIndex) throws Exception {
		return Appointment.bindToOccurrence(service, recurringMasterId,
				occurenceIndex, PropertySet.FirstClassProperties);
	}

	/**
	 * Binds to an existing appointment and loads its first class properties.
	 * Calling this method results in a call to EWS.
	 * 
	 * @param service
	 *            the service
	 * @param recurringMasterId
	 *            the recurring master id
	 * @param occurenceIndex
	 *            the occurence index
	 * @param propertySet
	 *            the property set
	 * @return An Appointment instance representing the appointment
	 *         corresponding to the specified Id.
	 * @throws Exception
	 *             the exception
	 */
	public static Appointment bindToOccurrence(ExchangeService service,
			ItemId recurringMasterId, int occurenceIndex,
			PropertySet propertySet) throws Exception {
		AppointmentOccurrenceId occurenceId = new AppointmentOccurrenceId(
				recurringMasterId.getUniqueId(), occurenceIndex);
		return Appointment.bind(service, occurenceId, propertySet);
	}

	/**
	 * Binds to the master appointment of a recurring series and loads its first
	 * class properties. Calling this method results in a call to EWS.
	 * 
	 * @param service
	 *            the service
	 * @param occurrenceId
	 *            the occurrence id
	 * @return An Appointment instance representing the appointment
	 *         corresponding to the specified Id.
	 * @throws Exception
	 *             the exception
	 */
	public static Appointment bindToRecurringMaster(ExchangeService service,
			ItemId occurrenceId) throws Exception {
		return Appointment.bindToRecurringMaster(service, occurrenceId,
				PropertySet.FirstClassProperties);
	}

	/**
	 * Binds to the master appointment of a recurring series and loads its first
	 * class properties. Calling this method results in a call to EWS.
	 * 
	 * @param service
	 *            the service
	 * @param occurrenceId
	 *            the occurrence id
	 * @param propertySet
	 *            the property set
	 * @return An Appointment instance representing the appointment
	 *         corresponding to the specified Id.
	 * @throws Exception
	 *             the exception
	 */
	public static Appointment bindToRecurringMaster(ExchangeService service,
			ItemId occurrenceId, PropertySet propertySet) throws Exception {
		RecurringAppointmentMasterId recurringMasterId = 
				new RecurringAppointmentMasterId(
				occurrenceId.getUniqueId());
		return Appointment.bind(service, recurringMasterId, propertySet);
	}

	/**
	 * Internal method to return the schema associated with this type of object.
	 * 
	 * @return The schema associated with this type of object
	 */
	@Override
	protected ServiceObjectSchema getSchema() {
		return AppointmentSchema.Instance;
	}

	/**
	 * Gets the minimum required server version.
	 * 
	 * @return Earliest Exchange version in which this service object type is
	 *         supported.
	 */
	@Override
	protected ExchangeVersion getMinimumRequiredServerVersion() {
		return ExchangeVersion.Exchange2007_SP1;
	}	

	/**
	 * Determines whether properties defined with
	 * ScopedDateTimePropertyDefinition require custom time zone scoping.
	 * 
	 * @return if this item type requires custom scoping for scoped date/time
	 *         properties; otherwise, .
	 */
	@Override
	protected boolean getIsCustomDateTimeScopingRequired() {
		return true;
	}
	
	/**
	 * Validates this instance.
	 * @throws Exception 
	 */
	@Override
    protected  void validate() throws Exception {
        super.validate();

        //  PS # 250452: Make sure that if we're
        //on the Exchange2007_SP1 schema version, 
        // if any of the following
        //  properties are set or updated:
        //      o   Start
        //      o   End
        //      o   IsAllDayEvent
        //      o   Recurrence
        //  ... then, we must send the MeetingTimeZone element 
        // (which is generated from StartTimeZone for
        //  Exchange2007_SP1 requests (see 
        //StartTimeZonePropertyDefinition.cs).  
        // If the StartTimeZone isn't
        //  in the property bag, then throw, because clients must 
        // supply the proper time zone - either by
        //  loading it from a currently-existing appointment, 
        //or by setting it directly. 
        // Otherwise, to dirty
        //  the StartTimeZone property, we just set it to its current value.
//        if ((this.getService().getRequestedServerVersion() == ExchangeVersion.Exchange2007_SP1) &&
//            !(this.getService().getExchange2007CompatibilityMode())) {
//            if (this.getPropertyBag().isPropertyUpdated(AppointmentSchema.Start) ||
//                this.getPropertyBag().isPropertyUpdated(AppointmentSchema.End) ||
//                this.getPropertyBag().isPropertyUpdated(AppointmentSchema.IsAllDayEvent) ||
//                this.getPropertyBag().isPropertyUpdated(AppointmentSchema.Recurrence))
//            {
//                //  If the property isn't in the property bag, throw....
//                if (!this.getPropertyBag().contains(AppointmentSchema.StartTimeZone))
//                {
//                    throw new ServiceLocalException(Strings.
//                    		StartTimeZoneRequired);
//                    		//getStartTimeZoneRequired());
//                }
//
//                //  Otherwise, set the time zone to its current value to
//                // force it to be sent with the request.
//               this.setStartTimeZone(this.getStartTimeZone());
//            }
//        }
    }

	/**
	 * Creates a reply response to the organizer and/or attendees of the
	 * meeting.
	 * 
	 * @param replyAll
	 *            the reply all
	 * @return A ResponseMessage representing the reply response that can
	 *         subsequently be modified and sent.
	 * @throws Exception
	 *             the exception
	 */
	public ResponseMessage createReply(boolean replyAll) throws Exception {
		this.throwIfThisIsNew();

		return new ResponseMessage(this,
				replyAll ? ResponseMessageType.ReplyAll :
						 ResponseMessageType.Reply);
	}

	/**
	 * Replies to the organizer and/or the attendees of the meeting. Calling
	 * this method results in a call to EWS.
	 * 
	 * @param bodyPrefix
	 *            the body prefix
	 * @param replyAll
	 *            the reply all
	 * @throws Exception
	 *             the exception
	 */
	public void reply(MessageBody bodyPrefix, boolean replyAll)
			throws Exception {
		ResponseMessage responseMessage = this.createReply(replyAll);

		responseMessage.setBodyPrefix(bodyPrefix);
		responseMessage.sendAndSaveCopy();
	}

	/**
	 * Creates a forward message from this appointment.
	 * 
	 * @return A ResponseMessage representing the forward response that can
	 *         subsequently be modified and sent.
	 * @throws Exception
	 *             the exception
	 */
	public ResponseMessage createForward() throws Exception {
		this.throwIfThisIsNew();
		return new ResponseMessage(this, ResponseMessageType.Forward);
	}

	/**
	 * Forwards the appointment. Calling this method results in a call to EWS.
	 * 
	 * @param bodyPrefix
	 *            the body prefix
	 * @param toRecipients
	 *            the to recipients
	 * @throws Exception
	 *             the exception
	 */
	public void forward(MessageBody bodyPrefix, EmailAddress... toRecipients)
			throws Exception {
		if (null != toRecipients) {
			ArrayList list = new ArrayList();
			for (EmailAddress email : toRecipients) {
				list.add(email);
			}

			this.forward(bodyPrefix, list);
		}
	}

	/**
	 * Forwards the appointment. Calling this method results in a call to EWS.
	 * 
	 * @param bodyPrefix
	 *            the body prefix
	 * @param toRecipients
	 *            the to recipients
	 * @throws Exception
	 *             the exception
	 */
	public void forward(MessageBody bodyPrefix,
			Iterable toRecipients) throws Exception {
		ResponseMessage responseMessage = this.createForward();

		responseMessage.setBodyPrefix(bodyPrefix);
		responseMessage.getToRecipients()
				.addEmailRange(toRecipients.iterator());

		responseMessage.sendAndSaveCopy();
	}

	/**
	 * Saves this appointment in the specified folder. Calling this method
	 * results in at least one call to EWS. Mutliple calls to EWS might be made
	 * if attachments have been added.
	 * 
	 * @param destinationFolderName
	 *            the destination folder name
	 * @param sendInvitationsMode
	 *            the send invitations mode
	 * @throws Exception
	 *             the exception
	 */
	public void save(WellKnownFolderName destinationFolderName,
			SendInvitationsMode sendInvitationsMode) throws Exception {
		this.internalCreate(new FolderId(destinationFolderName), null,
				sendInvitationsMode);
	}

	/**
	 * Saves this appointment in the specified folder. Calling this method
	 * results in at least one call to EWS. Mutliple calls to EWS might be made
	 * if attachments have been added.
	 * 
	 * @param destinationFolderId
	 *            the destination folder id
	 * @param sendInvitationsMode
	 *            the send invitations mode
	 * @throws Exception
	 *             the exception
	 */
	public void save(FolderId destinationFolderId,
			SendInvitationsMode sendInvitationsMode) throws Exception {
		EwsUtilities.validateParam(destinationFolderId, "destinationFolderId");

		this.internalCreate(destinationFolderId, null, sendInvitationsMode);
	}

	/**
	 * Saves this appointment in the Calendar folder. Calling this method
	 * results in at least one call to EWS. Mutliple calls to EWS might be made
	 * if attachments have been added.
	 * 
	 * @param sendInvitationsMode
	 *            the send invitations mode
	 * @throws Exception
	 *             the exception
	 */
	public void save(SendInvitationsMode sendInvitationsMode) throws Exception {
		this.internalCreate(null, null, sendInvitationsMode);
	}

	/**
	 * Applies the local changes that have been made to this appointment.
	 * Calling this method results in at least one call to EWS. Mutliple calls
	 * to EWS might be made if attachments have been added or removed.
	 * 
	 * @param conflictResolutionMode
	 *            the conflict resolution mode
	 * @param sendInvitationsOrCancellationsMode
	 *            the send invitations or cancellations mode
	 * @throws Exception
	 *             the exception
	 */
	public void update(
			ConflictResolutionMode conflictResolutionMode,
			SendInvitationsOrCancellationsMode 
			sendInvitationsOrCancellationsMode)
			throws Exception {
		this.internalUpdate(null, conflictResolutionMode, null,
				sendInvitationsOrCancellationsMode);
	}

	/**
	 * Deletes this appointment. Calling this method results in a call to EWS.
	 * 
	 * @param deleteMode
	 *            the delete mode
	 * @param sendCancellationsMode
	 *            the send cancellations mode
	 * @throws Exception
	 *             the exception
	 */
	public void delete(DeleteMode deleteMode,
			SendCancellationsMode sendCancellationsMode) throws Exception {
		this.internalDelete(deleteMode, sendCancellationsMode, null);
	}

	/**
	 * Creates a local meeting acceptance message that can be customized and
	 * sent.
	 * 
	 * @param tentative
	 *            the tentative
	 * @return An AcceptMeetingInvitationMessage representing the meeting
	 *         acceptance message.
	 * @throws Exception
	 *             the exception
	 */
	public AcceptMeetingInvitationMessage createAcceptMessage(boolean tentative)
			throws Exception {
		return new AcceptMeetingInvitationMessage(this, tentative);
	}

	/**
	 * Creates a local meeting acceptance message that can be customized and
	 * sent.
	 * 
	 * @return A CancelMeetingMessage representing the meeting cancellation
	 *         message.
	 * @throws Exception
	 *             the exception
	 */
	public CancelMeetingMessage createCancelMeetingMessage() throws Exception {
		return new CancelMeetingMessage(this);
	}

	/**
	 * Creates a local meeting declination message that can be customized and
	 * sent.
	 * 
	 * @return A DeclineMeetingInvitation representing the meeting declination
	 *         message.
	 * @throws Exception
	 *             the exception
	 */
	public DeclineMeetingInvitationMessage createDeclineMessage()
			throws Exception {
		return new DeclineMeetingInvitationMessage(this);
	}

	/**
	 * Accepts the meeting. Calling this method results in a call to EWS.
	 * 
	 * @param sendResponse
	 *            the send response
	 * @return A CalendarActionResults object containing the various items that
	 *         were created or modified as a results of this operation.
	 * @throws Exception
	 *             the exception
	 */
	public CalendarActionResults accept(boolean sendResponse) throws Exception {
		return this.internalAccept(false, sendResponse);
	}

	/**
	 * Tentatively accepts the meeting. Calling this method results in a call to
	 * EWS.
	 * 
	 * @param sendResponse
	 *            the send response
	 * @return A CalendarActionResults object containing the various items that
	 *         were created or modified as a results of this operation.
	 * @throws Exception
	 *             the exception
	 */
	public CalendarActionResults acceptTentatively(boolean sendResponse)
			throws Exception {
		return this.internalAccept(true, sendResponse);
	}

	/**
	 * Accepts the meeting.
	 * 
	 * @param tentative
	 *            the tentative
	 * @param sendResponse
	 *            the send response
	 * @return A CalendarActionResults object containing the various items that
	 *         were created or modified as a results of this operation.
	 * @throws Exception
	 *             the exception
	 */
	protected CalendarActionResults internalAccept(boolean tentative,
			boolean sendResponse) throws Exception {
		AcceptMeetingInvitationMessage accept = this
				.createAcceptMessage(tentative);

		if (sendResponse) {
			return accept.calendarSendAndSaveCopy();
		} else {
			return accept.calendarSave();
		}
	}

	/**
	 * Cancels the meeting and sends cancellation messages to all attendees.
	 * Calling this method results in a call to EWS.
	 * 
	 * @return A CalendarActionResults object containing the various items that
	 *         were created or modified as a results of this operation.
	 * @throws Exception
	 *             the exception
	 */
	public CalendarActionResults cancelMeeting() throws Exception {
		return this.createCancelMeetingMessage().calendarSendAndSaveCopy();
	}

	/**
	 * Cancels the meeting and sends cancellation messages to all attendees.
	 * Calling this method results in a call to EWS.
	 * 
	 * @param cancellationMessageText
	 *            the cancellation message text
	 * @return A CalendarActionResults object containing the various items that
	 *         were created or modified as a results of this operation.
	 * @throws Exception
	 *             the exception
	 */
	public CalendarActionResults cancelMeeting(String cancellationMessageText)
			throws Exception {
		CancelMeetingMessage cancelMsg = this.createCancelMeetingMessage();
		cancelMsg.setBody(new MessageBody(cancellationMessageText));
		return cancelMsg.calendarSendAndSaveCopy();
	}

	/**
	 * Declines the meeting invitation. Calling this method results in a call to
	 * EWS.
	 * 
	 * @param sendResponse
	 *            the send response
	 * @return A CalendarActionResults object containing the various items that
	 *         were created or modified as a results of this operation.
	 * @throws Exception
	 *             the exception
	 */
	public CalendarActionResults decline(boolean 
			sendResponse) throws Exception {
		DeclineMeetingInvitationMessage decline = this.createDeclineMessage();

		if (sendResponse) {
			return decline.calendarSendAndSaveCopy();
		} else {
			return decline.calendarSave();
		}
	}

	/**
	 * Gets the default setting for sending cancellations on Delete.
	 * 
	 * @return If Delete() is called on Appointment, we want to send
	 *         cancellations and save a copy.
	 */
	@Override
	protected SendCancellationsMode getDefaultSendCancellationsMode() {
		return SendCancellationsMode.SendToAllAndSaveCopy;
	}

	/**
	 * Gets the default settings for sending invitations on Save.
	 * 
	 * @return the default send invitations mode
	 */
	@Override
	protected SendInvitationsMode getDefaultSendInvitationsMode() {
		return SendInvitationsMode.SendToAllAndSaveCopy;
	}

	/**
	 * Gets the default settings for sending invitations on Save.
	 * 
	 * @return the default send invitations or cancellations mode
	 */
	@Override
	protected SendInvitationsOrCancellationsMode 
		getDefaultSendInvitationsOrCancellationsMode() {
		return SendInvitationsOrCancellationsMode.SendToAllAndSaveCopy;
	}

	// Properties

	/**
	 * Gets the start time of the appointment.
	 * 
	 * @return the start
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Date getStart() throws ServiceLocalException {
		return (Date) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.Start);
	}

	/**
	 * Sets the start.
	 * 
	 * @param value
	 *            the new start
	 * @throws Exception
	 *             the exception
	 */
	public void setStart(Date value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.Start, value);
	}

	/**
	 * Gets or sets the end time of the appointment.
	 * 
	 * @return the end
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Date getEnd() throws ServiceLocalException {
		return (Date) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.End);
	}

	/**
	 * Sets the end.
	 * 
	 * @param value
	 *            the new end
	 * @throws Exception
	 *             the exception
	 */
	public void setEnd(Date value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.End, value);
	}

	/**
	 * Gets the original start time of this appointment.
	 * 
	 * @return the original start
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Date getOriginalStart() throws ServiceLocalException {
		return (Date) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.OriginalStart);
	}

	/**
	 * Gets a value indicating whether this appointment is an all day
	 * event.
	 * 
	 * @return the checks if is all day event
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Boolean getIsAllDayEvent() throws ServiceLocalException {
		return (Boolean) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.IsAllDayEvent);
	}

	/**
	 * Sets the checks if is all day event.
	 * 
	 * @param value
	 *            the new checks if is all day event
	 * @throws Exception
	 *             the exception
	 */
	public void setIsAllDayEvent(Boolean value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.IsAllDayEvent, value);
	}

	/**
	 * Gets  a value indicating the free/busy status of the owner of this
	 * appointment.
	 * 
	 * @return the legacy free busy status
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public LegacyFreeBusyStatus getLegacyFreeBusyStatus()
			throws ServiceLocalException {
		return (LegacyFreeBusyStatus) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.LegacyFreeBusyStatus);
	}

	/**
	 * Sets the legacy free busy status.
	 * 
	 * @param value
	 *            the new legacy free busy status
	 * @throws Exception
	 *             the exception
	 */
	public void setLegacyFreeBusyStatus(LegacyFreeBusyStatus value)
			throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.LegacyFreeBusyStatus, value);
	}

	/**
	 * Gets  the location of this appointment.
	 * 
	 * @return the location
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public String getLocation() throws ServiceLocalException {
		return (String) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.Location);
	}

	/**
	 * Sets the location.
	 * 
	 * @param value
	 *            the new location
	 * @throws Exception
	 *             the exception
	 */
	public void setLocation(String value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.Location, value);
	}

	/**
	 * Gets a text indicating when this appointment occurs. The text returned by
	 * When is localized using the Exchange Server culture or using the culture
	 * specified in the PreferredCulture property of the ExchangeService object
	 * this appointment is bound to.
	 * 
	 * @return the when
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public String getWhen() throws ServiceLocalException {
		return (String) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.When);
	}

	/**
	 * Gets a value indicating whether the appointment is a meeting.
	 * 
	 * @return the checks if is meeting
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Boolean getIsMeeting() throws ServiceLocalException {
		return (Boolean) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.IsMeeting);
	}

	/**
	 * Gets a value indicating whether the appointment has been cancelled.
	 * 
	 * @return the checks if is cancelled
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Boolean getIsCancelled() throws ServiceLocalException {
		return (Boolean) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.IsCancelled);
	}

	/**
	 * Gets a value indicating whether the appointment is recurring.
	 * 
	 * @return the checks if is recurring
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Boolean getIsRecurring() throws ServiceLocalException {
		return (Boolean) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.IsRecurring);
	}

	/**
	 * Gets a value indicating whether the meeting request has already been
	 * sent.
	 * 
	 * @return the meeting request was sent
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Boolean getMeetingRequestWasSent() throws ServiceLocalException {
		return (Boolean) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.MeetingRequestWasSent);
	}

	/**
	 * Gets  a value indicating whether responses are requested when
	 * invitations are sent for this meeting.
	 * 
	 * @return the checks if is response requested
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Boolean getIsResponseRequested() throws ServiceLocalException {
		return (Boolean) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.IsResponseRequested);
	}

	/**
	 * Sets the checks if is response requested.
	 * 
	 * @param value
	 *            the new checks if is response requested
	 * @throws Exception
	 *             the exception
	 */
	public void setIsResponseRequested(Boolean value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.IsResponseRequested, value);
	}

	/**
	 * Gets a value indicating the type of this appointment.
	 * 
	 * @return the appointment type
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public AppointmentType getAppointmentType() throws ServiceLocalException {
		return (AppointmentType) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.AppointmentType);
	}

	/**
	 * Gets a value indicating what was the last response of the user that
	 * loaded this meeting.
	 * 
	 * @return the my response type
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public MeetingResponseType getMyResponseType() 
		throws ServiceLocalException {
		return (MeetingResponseType) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.MyResponseType);
	}

	/**
	 * Gets the organizer of this meeting. The Organizer property is read-only
	 * and is only relevant for attendees. The organizer of a meeting is
	 * automatically set to the user that created the meeting.
	 * 
	 * @return the organizer
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public EmailAddress getOrganizer() throws ServiceLocalException {
		return (EmailAddress) this.getPropertyBag()
				.getObjectFromPropertyDefinition(AppointmentSchema.Organizer);
	}

	/**
	 * Gets a list of required attendees for this meeting.
	 *  
	 * @return the required attendees
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public AttendeeCollection getRequiredAttendees( )
			throws ServiceLocalException {
		return (AttendeeCollection) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.RequiredAttendees);
	}

	/**
	 * Gets a list of optional attendeed for this meeting.
	 * 
	 * @return the optional attendees
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public AttendeeCollection getOptionalAttendees()
			throws ServiceLocalException {
		return (AttendeeCollection) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.OptionalAttendees);
	}

	/**
	 * Gets a list of resources for this meeting.
	 * 
	 * @return the resources
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public AttendeeCollection getResources() throws ServiceLocalException {
		return (AttendeeCollection) this.getPropertyBag()
				.getObjectFromPropertyDefinition(AppointmentSchema.Resources);
	}

	/**
	 * Gets the number of calendar entries that conflict with this appointment
	 * in the authenticated user's calendar.
	 * 
	 * @return the conflicting meeting count
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Integer getConflictingMeetingCount() throws ServiceLocalException {
		return (Integer) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.ConflictingMeetingCount);
	}

	/**
	 * Gets the number of calendar entries that are adjacent to this appointment
	 * in the authenticated user's calendar.
	 * 
	 * @return the adjacent meeting count
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Integer getAdjacentMeetingCount() throws ServiceLocalException {
		return (Integer) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.AdjacentMeetingCount);
	}

	/**
	 * Gets a list of meetings that conflict with this appointment in the
	 * authenticated user's calendar.
	 * 
	 * @return the conflicting meetings
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public ItemCollection getConflictingMeetings()
			throws ServiceLocalException {
		return (ItemCollection) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.ConflictingMeetings);
	}

	/**
	 * Gets a list of meetings that conflict with this appointment in the
	 * authenticated user's calendar.
	 * 
	 * @return the adjacent meetings
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public ItemCollection getAdjacentMeetings()
			throws ServiceLocalException {
		return (ItemCollection) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.AdjacentMeetings);
	}

	/**
	 * Gets the duration of this appointment.
	 * 
	 * @return the duration
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public TimeSpan getDuration() throws ServiceLocalException {
		return   (TimeSpan) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.Duration);
	}

	/**
	 * Gets the name of the time zone this appointment is defined in.
	 * 
	 * @return the time zone
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public String getTimeZone() throws ServiceLocalException {
		return (String) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.TimeZone);
	}

	/**
	 * Gets the time when the attendee replied to the meeting request.
	 * 
	 * @return the appointment reply time
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Date getAppointmentReplyTime() throws ServiceLocalException {
		return (Date) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.AppointmentReplyTime);
	}

	/**
	 * Gets the sequence number of this appointment.
	 * 
	 * @return the appointment sequence number
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Integer getAppointmentSequenceNumber() throws ServiceLocalException {
		return (Integer) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.AppointmentSequenceNumber);
	}

	/**
	 * Gets the state of this appointment.
	 * 
	 * @return the appointment state
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Integer getAppointmentState() throws ServiceLocalException {
		return (Integer) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.AppointmentState);
	}

	/**
	 * Gets the recurrence pattern for this appointment. Available
	 * recurrence pattern classes include Recurrence.DailyPattern,
	 * Recurrence.MonthlyPattern and Recurrence.YearlyPattern.
	 * 
	 * @return the recurrence
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Recurrence getRecurrence() throws ServiceLocalException {
		return (Recurrence) this.getPropertyBag()
				.getObjectFromPropertyDefinition(AppointmentSchema.Recurrence);
	}

	/**
	 * Sets the recurrence.
	 * 
	 * @param value
	 *            the new recurrence
	 * @throws Exception
	 *             the exception
	 */
	public void setRecurrence(Recurrence value) throws Exception {
		if (value != null) {
			if (value.isRegenerationPattern()) {
				throw new ServiceLocalException(
						Strings.RegenerationPatternsOnlyValidForTasks);
			}
		}
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.Recurrence, value);
	}

	/**
	 * Gets an OccurrenceInfo identifying the first occurrence of this meeting.
	 * 
	 * @return the first occurrence
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public OccurrenceInfo getFirstOccurrence() throws ServiceLocalException {
		return (OccurrenceInfo) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.FirstOccurrence);
	}

	/**
	 * Gets an OccurrenceInfo identifying the first occurrence of this meeting.
	 * 
	 * @return the last occurrence
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public OccurrenceInfo getLastOccurrence() throws ServiceLocalException {
		return (OccurrenceInfo) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.LastOccurrence);
	}

	/**
	 * Gets a list of modified occurrences for this meeting.
	 * 
	 * @return the modified occurrences
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public OccurrenceInfoCollection getModifiedOccurrences()
			throws ServiceLocalException {
		return (OccurrenceInfoCollection) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.ModifiedOccurrences);
	}

	/**
	 * Gets a list of deleted occurrences for this meeting.
	 * 
	 * @return the deleted occurrences
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public DeletedOccurrenceInfoCollection getDeletedOccurrences()
			throws ServiceLocalException {
		return (DeletedOccurrenceInfoCollection) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.DeletedOccurrences);
	}

	/**
	 * Gets the start time zone.
	 * 
	 * @return the start time zone
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public TimeZoneDefinition getStartTimeZone() throws ServiceLocalException {
		return (TimeZoneDefinition) this.getPropertyBag()
				.getObjectFromPropertyDefinition(
						AppointmentSchema.StartTimeZone);
	}

	/**
	 * Sets the start time zone.
	 * 
	 * @param value
	 *            the new start time zone
	 * @throws Exception
	 *             the exception
	 */
	public void setStartTimeZone(TimeZoneDefinition value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.StartTimeZone, value);

	}

	/**
	 * Gets the start time zone.
	 * 
	 * @return the start time zone
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public TimeZoneDefinition getEndTimeZone() throws ServiceLocalException {
		return (TimeZoneDefinition) this.getPropertyBag()
				.getObjectFromPropertyDefinition(AppointmentSchema.EndTimeZone);
	}

	/**
	 * Sets the start time zone.
	 * 
	 * @param value
	 *            the new end time zone
	 * @throws Exception
	 *             the exception
	 */
	public void setEndTimeZone(TimeZoneDefinition value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.EndTimeZone, value);

	}

	/**
	 * Gets  the type of conferencing that will be used during the
	 * meeting.
	 * 
	 * @return the conference type
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Integer getConferenceType() throws ServiceLocalException {
		return (Integer) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.ConferenceType);
	}

	/**
	 * Sets the conference type.
	 * 
	 * @param value
	 *            the new conference type
	 * @throws Exception
	 *             the exception
	 */
	public void setConferenceType(Integer value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.ConferenceType, value);
	}

	/**
	 * Gets a value indicating whether new time proposals are allowed
	 * for attendees of this meeting.
	 * 
	 * @return the allow new time proposal
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Boolean getAllowNewTimeProposal() throws ServiceLocalException {
		return (Boolean) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.AllowNewTimeProposal);
	}

	/**
	 * Sets the allow new time proposal.
	 * 
	 * @param value
	 *            the new allow new time proposal
	 * @throws Exception
	 *             the exception
	 */
	public void setAllowNewTimeProposal(Boolean value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.AllowNewTimeProposal, value);
	}

	/**
	 * Gets  a value indicating whether this is an online meeting.
	 * 
	 * @return the checks if is online meeting
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Boolean getIsOnlineMeeting() throws ServiceLocalException {
		return (Boolean) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.IsOnlineMeeting);
	}

	/**
	 * Sets the checks if is online meeting.
	 * 
	 * @param value
	 *            the new checks if is online meeting
	 * @throws Exception
	 *             the exception
	 */
	public void setIsOnlineMeeting(Boolean value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.IsOnlineMeeting, value);
	}

	/**
	 * Gets  the URL of the meeting workspace. A meeting workspace is a
	 * shared Web site for planning meetings and tracking results.
	 * 
	 * @return the meeting workspace url
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public String getMeetingWorkspaceUrl() throws ServiceLocalException {
		return (String) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.MeetingWorkspaceUrl);
	}

	/**
	 * Sets the meeting workspace url.
	 * 
	 * @param value
	 *            the new meeting workspace url
	 * @throws Exception
	 *             the exception
	 */
	public void setMeetingWorkspaceUrl(String value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.MeetingWorkspaceUrl, value);
	}

	/**
	 * Gets the URL of the Microsoft NetShow online meeting.
	 * 
	 * @return the net show url
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public String getNetShowUrl() throws ServiceLocalException {
		return (String) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.NetShowUrl);
	}

	/**
	 * Sets the net show url.
	 * 
	 * @param value
	 *            the new net show url
	 * @throws Exception
	 *             the exception
	 */
	public void setNetShowUrl(String value) throws Exception {
		this.getPropertyBag().setObjectFromPropertyDefinition(
				AppointmentSchema.NetShowUrl, value);
	}

	/**
	 * Gets the ICalendar Uid.
	 * 
	 * @return the i cal uid
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public String getICalUid() throws ServiceLocalException {
		return (String) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.ICalUid);
	}
	
	/**
	 * Sets the ICalendar Uid.
	 * 
	 * @param value the i cal uid
	 * @throws Exception 
	 *///this.PropertyBag[AppointmentSchema.ICalUid] = value;
	public void setICalUid(String value) throws Exception {
          this.getPropertyBag().setObjectFromPropertyDefinition(
        		  AppointmentSchema.ICalUid, value);
	}

	/**
	 * Gets the ICalendar RecurrenceId.
	 * 
	 * @return the i cal recurrence id
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Date getICalRecurrenceId() throws ServiceLocalException {
		return (Date) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.ICalRecurrenceId);
	}

	/**
	 * Gets the ICalendar DateTimeStamp.
	 * 
	 * @return the i cal date time stamp
	 * @throws ServiceLocalException
	 *             the service local exception
	 */
	public Date gaetICalDateTimeStmp() throws ServiceLocalException {
		return (Date) this.getPropertyBag().getObjectFromPropertyDefinition(
				AppointmentSchema.ICalDateTimeStamp);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy