001package microsoft.exchange.webservices.data.core.service.item;
002
003import microsoft.exchange.webservices.data.core.*;
004import microsoft.exchange.webservices.data.core.enumeration.misc.*;
005import microsoft.exchange.webservices.data.property.complex.*;
006
007public class UploadItem {
008
009  public enum CreateAction {
010    CreateNew,
011    Update
012  }
013
014  private CreateAction createAction;
015
016  private FolderId parentFolderId;
017
018  private ItemId itemId;
019
020  private byte[] data;
021
022  public void writeToXml(EwsServiceXmlWriter writer) {
023    try {
024      writer.writeStartElement(XmlNamespace.Types, XmlElementNames.Item);
025      writer.writeAttributeValue(XmlAttributeNames.CreateAction, createAction);
026      parentFolderId.writeToXml(writer, XmlElementNames.ParentFolderId);
027      if (itemId != null) {
028        itemId.writeToXml(writer);
029      }
030      writer.writeStartElement(XmlNamespace.Types, XmlElementNames.Data);
031      writer.writeBase64ElementValue(data);
032      writer.writeEndElement();
033      writer.writeEndElement();
034    } catch (Exception e) {
035      throw new RuntimeException(e);
036    }
037  }
038
039  public void validate() throws Exception {
040    EwsUtilities.validateParam(createAction, "createAction");
041    EwsUtilities.validateParam(parentFolderId, "parentFolderId");
042    EwsUtilities.validateParam(data, "data");
043    if (createAction == CreateAction.Update) {
044      EwsUtilities.validateParam(itemId, "itemId required for updates");
045    }
046  }
047
048  public CreateAction getCreateAction() {
049    return createAction;
050  }
051
052  public UploadItem setCreateAction(CreateAction createAction) {
053    this.createAction = createAction;
054    return this;
055  }
056
057  public FolderId getParentFolderId() {
058    return parentFolderId;
059  }
060
061  public UploadItem setParentFolderId(FolderId parentFolderId) {
062    this.parentFolderId = parentFolderId;
063    return this;
064  }
065
066  public ItemId getItemId() {
067    return itemId;
068  }
069
070  public UploadItem setItemId(ItemId itemId) {
071    this.itemId = itemId;
072    return this;
073  }
074
075  public byte[] getData() {
076    return data;
077  }
078
079  public UploadItem setData(byte[] data) {
080    this.data = data;
081    return this;
082  }
083}