001/*
002 * The MIT License
003 * Copyright (c) 2012 Microsoft Corporation
004 *
005 * Permission is hereby granted, free of charge, to any person obtaining a copy
006 * of this software and associated documentation files (the "Software"), to deal
007 * in the Software without restriction, including without limitation the rights
008 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
009 * copies of the Software, and to permit persons to whom the Software is
010 * furnished to do so, subject to the following conditions:
011 *
012 * The above copyright notice and this permission notice shall be included in
013 * all copies or substantial portions of the Software.
014 *
015 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
016 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
017 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
018 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
019 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
020 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
021 * THE SOFTWARE.
022 */
023
024package microsoft.exchange.webservices.data.core.service.schema;
025
026import microsoft.exchange.webservices.data.attribute.Schema;
027import microsoft.exchange.webservices.data.core.XmlElementNames;
028import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
029import microsoft.exchange.webservices.data.core.enumeration.property.Importance;
030import microsoft.exchange.webservices.data.core.enumeration.property.PropertyDefinitionFlags;
031import microsoft.exchange.webservices.data.core.enumeration.property.Sensitivity;
032import microsoft.exchange.webservices.data.property.complex.ConversationId;
033import microsoft.exchange.webservices.data.property.complex.FolderId;
034import microsoft.exchange.webservices.data.property.complex.ICreateComplexPropertyDelegate;
035import microsoft.exchange.webservices.data.property.complex.InternetMessageHeaderCollection;
036import microsoft.exchange.webservices.data.property.complex.ItemId;
037import microsoft.exchange.webservices.data.property.complex.MessageBody;
038import microsoft.exchange.webservices.data.property.complex.MimeContent;
039import microsoft.exchange.webservices.data.property.complex.StringList;
040import microsoft.exchange.webservices.data.property.complex.UniqueBody;
041import microsoft.exchange.webservices.data.property.definition.AttachmentsPropertyDefinition;
042import microsoft.exchange.webservices.data.property.definition.BoolPropertyDefinition;
043import microsoft.exchange.webservices.data.property.definition.ByteArrayPropertyDefinition;
044import microsoft.exchange.webservices.data.property.definition.ComplexPropertyDefinition;
045import microsoft.exchange.webservices.data.property.definition.DateTimePropertyDefinition;
046import microsoft.exchange.webservices.data.property.definition.EffectiveRightsPropertyDefinition;
047import microsoft.exchange.webservices.data.property.definition.GenericPropertyDefinition;
048import microsoft.exchange.webservices.data.property.definition.IntPropertyDefinition;
049import microsoft.exchange.webservices.data.property.definition.PropertyDefinition;
050import microsoft.exchange.webservices.data.property.definition.ResponseObjectsPropertyDefinition;
051import microsoft.exchange.webservices.data.property.definition.StringPropertyDefinition;
052
053import java.util.EnumSet;
054
055/**
056 * Represents the schema for generic item.
057 */
058@Schema
059public class ItemSchema extends ServiceObjectSchema {
060
061  /**
062   * The Interface FieldUris.
063   */
064  private static interface FieldUris {
065
066    /**
067     * The Item id.
068     */
069    String ItemId = "item:ItemId";
070
071    /**
072     * The Parent folder id.
073     */
074    String ParentFolderId = "item:ParentFolderId";
075
076    /**
077     * The Item class.
078     */
079    String ItemClass = "item:ItemClass";
080
081    /**
082     * The Mime content.
083     */
084    String MimeContent = "item:MimeContent";
085
086    /**
087     * The Attachments.
088     */
089    String Attachments = "item:Attachments";
090
091    /**
092     * The Subject.
093     */
094    String Subject = "item:Subject";
095
096    /**
097     * The Date time received.
098     */
099    String DateTimeReceived = "item:DateTimeReceived";
100
101    /**
102     * The Size.
103     */
104    String Size = "item:Size";
105
106    /**
107     * The Categories.
108     */
109    String Categories = "item:Categories";
110
111    /**
112     * The Has attachments.
113     */
114    String HasAttachments = "item:HasAttachments";
115
116    /**
117     * The Importance.
118     */
119    String Importance = "item:Importance";
120
121    /**
122     * The In reply to.
123     */
124    String InReplyTo = "item:InReplyTo";
125
126    /**
127     * The Internet message headers.
128     */
129    String InternetMessageHeaders = "item:InternetMessageHeaders";
130
131    /**
132     * The Is associated.
133     */
134    String IsAssociated = "item:IsAssociated";
135
136    /**
137     * The Is draft.
138     */
139    String IsDraft = "item:IsDraft";
140
141    /**
142     * The Is from me.
143     */
144    String IsFromMe = "item:IsFromMe";
145
146    /**
147     * The Is resend.
148     */
149    String IsResend = "item:IsResend";
150
151    /**
152     * The Is submitted.
153     */
154    String IsSubmitted = "item:IsSubmitted";
155
156    /**
157     * The Is unmodified.
158     */
159    String IsUnmodified = "item:IsUnmodified";
160
161    /**
162     * The Date time sent.
163     */
164    String DateTimeSent = "item:DateTimeSent";
165
166    /**
167     * The Date time created.
168     */
169    String DateTimeCreated = "item:DateTimeCreated";
170
171    /**
172     * The Body.
173     */
174    String Body = "item:Body";
175
176    /**
177     * The Response objects.
178     */
179    String ResponseObjects = "item:ResponseObjects";
180
181    /**
182     * The Sensitivity.
183     */
184    String Sensitivity = "item:Sensitivity";
185
186    /**
187     * The Reminder due by.
188     */
189    String ReminderDueBy = "item:ReminderDueBy";
190
191    /**
192     * The Reminder is set.
193     */
194    String ReminderIsSet = "item:ReminderIsSet";
195
196    /**
197     * The Reminder minutes before start.
198     */
199    String ReminderMinutesBeforeStart = "item:ReminderMinutesBeforeStart";
200
201    /**
202     * The Display to.
203     */
204    String DisplayTo = "item:DisplayTo";
205
206    /**
207     * The Display cc.
208     */
209    String DisplayCc = "item:DisplayCc";
210
211    /**
212     * The Culture.
213     */
214    String Culture = "item:Culture";
215
216    /**
217     * The Effective rights.
218     */
219    String EffectiveRights = "item:EffectiveRights";
220
221    /**
222     * The Last modified name.
223     */
224    String LastModifiedName = "item:LastModifiedName";
225
226    /**
227     * The Last modified time.
228     */
229    String LastModifiedTime = "item:LastModifiedTime";
230
231    /**
232     * The Web client read form query string.
233     */
234    String WebClientReadFormQueryString =
235        "item:WebClientReadFormQueryString";
236
237    /**
238     * The Web client edit form query string.
239     */
240    String WebClientEditFormQueryString =
241        "item:WebClientEditFormQueryString";
242
243    /**
244     * The Conversation id.
245     */
246    String ConversationId = "item:ConversationId";
247
248    /**
249     * The Unique body.
250     */
251    String UniqueBody = "item:UniqueBody";
252
253    String StoreEntryId = "item:StoreEntryId";
254  }
255
256
257  /**
258   * Defines the Id property.
259   */
260  public static final PropertyDefinition Id = new ComplexPropertyDefinition<ItemId>(
261      ItemId.class,
262      XmlElementNames.ItemId, FieldUris.ItemId, EnumSet
263      .of(PropertyDefinitionFlags.CanFind),
264      ExchangeVersion.Exchange2007_SP1,
265      new ICreateComplexPropertyDelegate<ItemId>() {
266        public ItemId createComplexProperty() {
267          return new ItemId();
268        }
269      });
270
271  /**
272   * Defines the Body property.
273   */
274  public static final PropertyDefinition Body = new
275      ComplexPropertyDefinition<MessageBody>(
276      MessageBody.class,
277      XmlElementNames.Body, FieldUris.Body, EnumSet.of(
278      PropertyDefinitionFlags.CanSet,
279      PropertyDefinitionFlags.CanUpdate,
280      PropertyDefinitionFlags.CanDelete),
281      ExchangeVersion.Exchange2007_SP1,
282      new ICreateComplexPropertyDelegate<MessageBody>() {
283        public MessageBody createComplexProperty() {
284          return new MessageBody();
285        }
286      });
287
288  /**
289   * Defines the ItemClass property.
290   */
291  public static final PropertyDefinition ItemClass = new StringPropertyDefinition(
292      XmlElementNames.ItemClass, FieldUris.ItemClass, EnumSet.of(
293      PropertyDefinitionFlags.CanSet,
294      PropertyDefinitionFlags.CanUpdate,
295      PropertyDefinitionFlags.CanFind),
296      ExchangeVersion.Exchange2007_SP1);
297
298  /**
299   * Defines the Subject property.
300   */
301  public static final PropertyDefinition Subject = new
302      StringPropertyDefinition(
303      XmlElementNames.Subject, FieldUris.Subject, EnumSet.of(
304      PropertyDefinitionFlags.CanSet,
305      PropertyDefinitionFlags.CanUpdate,
306      PropertyDefinitionFlags.CanDelete,
307      PropertyDefinitionFlags.CanFind),
308      ExchangeVersion.Exchange2007_SP1);
309
310  /**
311   * Defines the MimeContent property.
312   */
313  public static final PropertyDefinition MimeContent =
314      new ComplexPropertyDefinition<microsoft.exchange.webservices.data.property.complex.MimeContent>(
315          MimeContent.class,
316          XmlElementNames.MimeContent, FieldUris.MimeContent, EnumSet.of(
317          PropertyDefinitionFlags.CanSet,
318          PropertyDefinitionFlags.CanUpdate,
319          PropertyDefinitionFlags.MustBeExplicitlyLoaded),
320          ExchangeVersion.Exchange2007_SP1,
321          new ICreateComplexPropertyDelegate<MimeContent>() {
322            public MimeContent createComplexProperty() {
323              return new MimeContent();
324            }
325          });
326
327  /**
328   * Defines the ParentFolderId property.
329   */
330  public static final PropertyDefinition ParentFolderId =
331      new ComplexPropertyDefinition<FolderId>(
332          FolderId.class,
333          XmlElementNames.ParentFolderId, FieldUris.ParentFolderId,
334          ExchangeVersion.Exchange2007_SP1,
335          new ICreateComplexPropertyDelegate<FolderId>() {
336            public FolderId createComplexProperty() {
337              return new FolderId();
338            }
339          });
340
341  /**
342   * Defines the Sensitivity property.
343   */
344  public static final PropertyDefinition Sensitivity =
345      new GenericPropertyDefinition<microsoft.exchange.webservices.data.core.enumeration.property.Sensitivity>(
346          Sensitivity.class,
347          XmlElementNames.Sensitivity, FieldUris.Sensitivity, EnumSet.of(
348          PropertyDefinitionFlags.CanSet,
349          PropertyDefinitionFlags.CanUpdate,
350          PropertyDefinitionFlags.CanFind),
351          ExchangeVersion.Exchange2007_SP1);
352
353  /**
354   * Defines the Attachments property.
355   */
356  public static final PropertyDefinition Attachments = new AttachmentsPropertyDefinition();
357
358  /**
359   * Defines the DateTimeReceived property.
360   */
361  public static final PropertyDefinition DateTimeReceived =
362      new DateTimePropertyDefinition(
363          XmlElementNames.DateTimeReceived, FieldUris.DateTimeReceived,
364          EnumSet.of(PropertyDefinitionFlags.CanFind),
365          ExchangeVersion.Exchange2007_SP1);
366
367  /**
368   * Defines the Size property.
369   */
370  public static final PropertyDefinition Size = new IntPropertyDefinition(
371      XmlElementNames.Size, FieldUris.Size, EnumSet
372      .of(PropertyDefinitionFlags.CanFind),
373      ExchangeVersion.Exchange2007_SP1);
374
375  /**
376   * Defines the Categories property.
377   */
378  public static final PropertyDefinition Categories =
379      new ComplexPropertyDefinition<StringList>(
380          StringList.class,
381          XmlElementNames.Categories, FieldUris.Categories, EnumSet.of(
382          PropertyDefinitionFlags.AutoInstantiateOnRead,
383          PropertyDefinitionFlags.CanSet,
384          PropertyDefinitionFlags.CanUpdate,
385          PropertyDefinitionFlags.CanDelete,
386          PropertyDefinitionFlags.CanFind),
387          ExchangeVersion.Exchange2007_SP1,
388          new ICreateComplexPropertyDelegate<StringList>() {
389            public StringList createComplexProperty() {
390              return new StringList();
391            }
392          });
393
394  /**
395   * Defines the Importance property.
396   */
397  public static final PropertyDefinition Importance =
398      new GenericPropertyDefinition<microsoft.exchange.webservices.data.core.enumeration.property.Importance>(
399          Importance.class,
400          XmlElementNames.Importance, FieldUris.Importance, EnumSet.of(
401          PropertyDefinitionFlags.CanSet,
402          PropertyDefinitionFlags.CanUpdate,
403          PropertyDefinitionFlags.CanFind),
404          ExchangeVersion.Exchange2007_SP1);
405
406  /**
407   * Defines the InReplyTo property.
408   */
409  public static final PropertyDefinition InReplyTo =
410      new StringPropertyDefinition(
411          XmlElementNames.InReplyTo, FieldUris.InReplyTo, EnumSet.of(
412          PropertyDefinitionFlags.CanSet,
413          PropertyDefinitionFlags.CanUpdate,
414          PropertyDefinitionFlags.CanDelete,
415          PropertyDefinitionFlags.CanFind),
416          ExchangeVersion.Exchange2007_SP1);
417
418  /**
419   * Defines the IsSubmitted property.
420   */
421  public static final PropertyDefinition IsSubmitted =
422      new BoolPropertyDefinition(
423          XmlElementNames.IsSubmitted, FieldUris.IsSubmitted, EnumSet
424          .of(PropertyDefinitionFlags.CanFind),
425          ExchangeVersion.Exchange2007_SP1);
426
427  /**
428   * Defines the IsAssociated property.
429   */
430  public static final PropertyDefinition IsAssociated =
431      new BoolPropertyDefinition(
432          XmlElementNames.IsAssociated, FieldUris.IsAssociated, EnumSet.of(
433          PropertyDefinitionFlags.CanSet,
434          PropertyDefinitionFlags.CanFind),
435          ExchangeVersion.Exchange2010);
436
437  /**
438   * Defines the IsDraft property.
439   */
440  public static final PropertyDefinition IsDraft = new BoolPropertyDefinition(
441      XmlElementNames.IsDraft, FieldUris.IsDraft, EnumSet
442      .of(PropertyDefinitionFlags.CanFind),
443      ExchangeVersion.Exchange2007_SP1);
444
445  /**
446   * Defines the IsFromMe property.
447   */
448  public static final PropertyDefinition IsFromMe =
449      new BoolPropertyDefinition(
450          XmlElementNames.IsFromMe, FieldUris.IsFromMe, EnumSet
451          .of(PropertyDefinitionFlags.CanFind),
452          ExchangeVersion.Exchange2007_SP1);
453
454  /**
455   * Defines the IsResend property.
456   */
457  public static final PropertyDefinition IsResend =
458      new BoolPropertyDefinition(
459          XmlElementNames.IsResend, FieldUris.IsResend, EnumSet
460          .of(PropertyDefinitionFlags.CanFind),
461          ExchangeVersion.Exchange2007_SP1);
462
463  /**
464   * Defines the IsUnmodified property.
465   */
466  public static final PropertyDefinition IsUnmodified =
467      new BoolPropertyDefinition(
468          XmlElementNames.IsUnmodified, FieldUris.IsUnmodified, EnumSet
469          .of(PropertyDefinitionFlags.CanFind),
470          ExchangeVersion.Exchange2007_SP1);
471
472  /**
473   * Defines the InternetMessageHeaders property.
474   */
475  public static final PropertyDefinition InternetMessageHeaders =
476      new ComplexPropertyDefinition<InternetMessageHeaderCollection>(
477          InternetMessageHeaderCollection.class,
478          XmlElementNames.InternetMessageHeaders,
479          FieldUris.InternetMessageHeaders,
480          EnumSet.of(PropertyDefinitionFlags.CanFind),
481          ExchangeVersion.Exchange2007_SP1,
482          new ICreateComplexPropertyDelegate
483              <InternetMessageHeaderCollection>() {
484            public InternetMessageHeaderCollection createComplexProperty() {
485              return new InternetMessageHeaderCollection();
486            }
487          });
488
489  /**
490   * Defines the DateTimeSent property.
491   */
492  public static final PropertyDefinition DateTimeSent =
493      new DateTimePropertyDefinition(
494          XmlElementNames.DateTimeSent, FieldUris.DateTimeSent, EnumSet
495          .of(PropertyDefinitionFlags.CanFind),
496          ExchangeVersion.Exchange2007_SP1);
497
498  /**
499   * Defines the DateTimeCreated property.
500   */
501  public static final PropertyDefinition DateTimeCreated =
502      new DateTimePropertyDefinition(
503          XmlElementNames.DateTimeCreated, FieldUris.DateTimeCreated, EnumSet
504          .of(PropertyDefinitionFlags.CanFind),
505          ExchangeVersion.Exchange2007_SP1);
506
507  /**
508   * Defines the AllowedResponseActions property.
509   */
510  public static final PropertyDefinition AllowedResponseActions =
511      new ResponseObjectsPropertyDefinition(
512          XmlElementNames.ResponseObjects, FieldUris.ResponseObjects,
513          ExchangeVersion.Exchange2007_SP1);
514
515  /**
516   * Defines the ReminderDueBy property.
517   */
518
519  public static final PropertyDefinition ReminderDueBy =
520      new DateTimePropertyDefinition(
521          XmlElementNames.ReminderDueBy, FieldUris.ReminderDueBy, EnumSet.of(
522          PropertyDefinitionFlags.CanSet,
523          PropertyDefinitionFlags.CanUpdate,
524          PropertyDefinitionFlags.CanFind),
525          ExchangeVersion.Exchange2007_SP1);
526
527  /**
528   * Defines the IsReminderSet property.
529   */
530  public static final PropertyDefinition IsReminderSet =
531      new BoolPropertyDefinition(
532          XmlElementNames.ReminderIsSet, // Note: server-side the name is
533          // ReminderIsSet
534          FieldUris.ReminderIsSet, EnumSet.of(PropertyDefinitionFlags.CanSet,
535          PropertyDefinitionFlags.CanUpdate,
536          PropertyDefinitionFlags.CanFind),
537          ExchangeVersion.Exchange2007_SP1);
538
539  /**
540   * Defines the ReminderMinutesBeforeStart property.
541   */
542  public static final PropertyDefinition ReminderMinutesBeforeStart =
543      new IntPropertyDefinition(
544          XmlElementNames.ReminderMinutesBeforeStart,
545          FieldUris.ReminderMinutesBeforeStart, EnumSet.of(
546          PropertyDefinitionFlags.CanSet,
547          PropertyDefinitionFlags.CanUpdate,
548          PropertyDefinitionFlags.CanFind),
549          ExchangeVersion.Exchange2007_SP1);
550
551  /**
552   * Defines the DisplayCc property.
553   */
554  public static final PropertyDefinition DisplayCc =
555      new StringPropertyDefinition(
556          XmlElementNames.DisplayCc, FieldUris.DisplayCc, EnumSet
557          .of(PropertyDefinitionFlags.CanFind),
558          ExchangeVersion.Exchange2007_SP1);
559
560  /**
561   * Defines the DisplayTo property.
562   */
563  public static final PropertyDefinition DisplayTo =
564      new StringPropertyDefinition(
565          XmlElementNames.DisplayTo, FieldUris.DisplayTo, EnumSet
566          .of(PropertyDefinitionFlags.CanFind),
567          ExchangeVersion.Exchange2007_SP1);
568
569  /**
570   * Defines the HasAttachments property.
571   */
572  public static final PropertyDefinition HasAttachments =
573      new BoolPropertyDefinition(
574          XmlElementNames.HasAttachments, FieldUris.HasAttachments, EnumSet
575          .of(PropertyDefinitionFlags.CanFind),
576          ExchangeVersion.Exchange2007_SP1);
577
578  /**
579   * Defines the Culture property.
580   */
581  public static final PropertyDefinition Culture =
582      new StringPropertyDefinition(
583          XmlElementNames.Culture, FieldUris.Culture, EnumSet.of(
584          PropertyDefinitionFlags.CanSet,
585          PropertyDefinitionFlags.CanUpdate,
586          PropertyDefinitionFlags.CanDelete,
587          PropertyDefinitionFlags.CanFind),
588          ExchangeVersion.Exchange2007_SP1);
589
590  /**
591   * Defines the EffectiveRights property.
592   */
593  public static final PropertyDefinition EffectiveRights =
594      new EffectiveRightsPropertyDefinition(
595          XmlElementNames.EffectiveRights, FieldUris.EffectiveRights, EnumSet
596          .of(PropertyDefinitionFlags.CanFind),
597          ExchangeVersion.Exchange2007_SP1);
598
599  /**
600   * Defines the LastModifiedName property.
601   */
602  public static final PropertyDefinition LastModifiedName =
603      new StringPropertyDefinition(
604          XmlElementNames.LastModifiedName, FieldUris.LastModifiedName,
605          EnumSet.of(PropertyDefinitionFlags.CanFind),
606          ExchangeVersion.Exchange2007_SP1);
607
608  /**
609   * Defines the LastModifiedTime property.
610   */
611  public static final PropertyDefinition LastModifiedTime =
612      new DateTimePropertyDefinition(
613          XmlElementNames.LastModifiedTime, FieldUris.LastModifiedTime,
614          EnumSet.of(PropertyDefinitionFlags.CanFind),
615          ExchangeVersion.Exchange2007_SP1);
616
617  /**
618   * Defines the WebClientReadFormQueryString property.
619   */
620  public static final PropertyDefinition WebClientReadFormQueryString =
621      new StringPropertyDefinition(
622          XmlElementNames.WebClientReadFormQueryString,
623          FieldUris.WebClientReadFormQueryString, EnumSet
624          .of(PropertyDefinitionFlags.CanFind),
625          ExchangeVersion.Exchange2010);
626
627  /**
628   * Defines the WebClientEditFormQueryString property.
629   */
630  public static final PropertyDefinition WebClientEditFormQueryString =
631      new StringPropertyDefinition(
632          XmlElementNames.WebClientEditFormQueryString,
633          FieldUris.WebClientEditFormQueryString, EnumSet
634          .of(PropertyDefinitionFlags.CanFind),
635          ExchangeVersion.Exchange2010);
636
637  /**
638   * Defines the ConversationId property.
639   */
640  public static final PropertyDefinition ConversationId =
641      new ComplexPropertyDefinition<microsoft.exchange.webservices.data.property.complex.ConversationId>(
642          ConversationId.class,
643          XmlElementNames.ConversationId, FieldUris.ConversationId, EnumSet
644          .of(PropertyDefinitionFlags.CanFind),
645          ExchangeVersion.Exchange2010,
646          new ICreateComplexPropertyDelegate<ConversationId>() {
647            public ConversationId createComplexProperty() {
648              return new ConversationId();
649            }
650          });
651
652  /**
653   * Defines the UniqueBody property.
654   */
655  public static final PropertyDefinition UniqueBody =
656      new ComplexPropertyDefinition<microsoft.exchange.webservices.data.property.complex.UniqueBody>(
657          UniqueBody.class,
658          XmlElementNames.UniqueBody, FieldUris.UniqueBody, EnumSet
659          .of(PropertyDefinitionFlags.MustBeExplicitlyLoaded),
660          ExchangeVersion.Exchange2010,
661          new ICreateComplexPropertyDelegate<UniqueBody>() {
662            public UniqueBody createComplexProperty() {
663              return new UniqueBody();
664            }
665          });
666
667  /**
668   * Defines the StoreEntryId property.
669   */
670
671  public static final PropertyDefinition StoreEntryId =
672      new ByteArrayPropertyDefinition(
673          XmlElementNames.StoreEntryId,
674          FieldUris.StoreEntryId,
675          EnumSet
676              .of(PropertyDefinitionFlags.CanFind),
677          ExchangeVersion.Exchange2010_SP2);
678
679
680
681  /**
682   * The Constant Instance.
683   */
684  protected static final ItemSchema Instance = new ItemSchema();
685
686  /**
687   * Gets the single instance of ItemSchema.
688   *
689   * @return single instance of ItemSchema
690   */
691  public static ItemSchema getInstance() {
692    return Instance;
693  }
694
695  /**
696   * Registers property.
697   * <p>
698   * IMPORTANT NOTE: PROPERTIES MUST BE REGISTERED IN SCHEMA ORDER (i.e. the
699   * same order as they are defined in types.xsd)
700   * </p>
701   */
702  @Override
703  protected void registerProperties() {
704    super.registerProperties();
705    this.registerProperty(MimeContent);
706    this.registerProperty(Id);
707    this.registerProperty(ParentFolderId);
708    this.registerProperty(ItemClass);
709    this.registerProperty(Subject);
710    this.registerProperty(Sensitivity);
711    this.registerProperty(Body);
712    this.registerProperty(Attachments);
713    this.registerProperty(DateTimeReceived);
714    this.registerProperty(Size);
715    this.registerProperty(Categories);
716    this.registerProperty(Importance);
717    this.registerProperty(InReplyTo);
718    this.registerProperty(IsSubmitted);
719    this.registerProperty(IsDraft);
720    this.registerProperty(IsFromMe);
721    this.registerProperty(IsResend);
722    this.registerProperty(IsUnmodified);
723    this.registerProperty(InternetMessageHeaders);
724    this.registerProperty(DateTimeSent);
725    this.registerProperty(DateTimeCreated);
726    this.registerProperty(AllowedResponseActions);
727    this.registerProperty(ReminderDueBy);
728    this.registerProperty(IsReminderSet);
729    this.registerProperty(ReminderMinutesBeforeStart);
730    this.registerProperty(DisplayCc);
731    this.registerProperty(DisplayTo);
732    this.registerProperty(HasAttachments);
733    this.registerProperty(ServiceObjectSchema.extendedProperties);
734    this.registerProperty(Culture);
735    this.registerProperty(EffectiveRights);
736    this.registerProperty(LastModifiedName);
737    this.registerProperty(LastModifiedTime);
738    this.registerProperty(IsAssociated);
739    this.registerProperty(WebClientReadFormQueryString);
740    this.registerProperty(WebClientEditFormQueryString);
741    this.registerProperty(ConversationId);
742    this.registerProperty(UniqueBody);
743    this.registerProperty(StoreEntryId);
744
745  }
746
747  /**
748   * Initializes a new instance.
749   */
750  protected ItemSchema() {
751    super();
752  }
753}