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    
024    package microsoft.exchange.webservices.data.core.service.schema;
025    
026    import microsoft.exchange.webservices.data.attribute.Schema;
027    import microsoft.exchange.webservices.data.core.XmlElementNames;
028    import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
029    import microsoft.exchange.webservices.data.core.enumeration.property.Importance;
030    import microsoft.exchange.webservices.data.core.enumeration.property.PropertyDefinitionFlags;
031    import microsoft.exchange.webservices.data.core.enumeration.property.Sensitivity;
032    import microsoft.exchange.webservices.data.property.complex.ConversationId;
033    import microsoft.exchange.webservices.data.property.complex.FolderId;
034    import microsoft.exchange.webservices.data.property.complex.ICreateComplexPropertyDelegate;
035    import microsoft.exchange.webservices.data.property.complex.InternetMessageHeaderCollection;
036    import microsoft.exchange.webservices.data.property.complex.ItemId;
037    import microsoft.exchange.webservices.data.property.complex.MessageBody;
038    import microsoft.exchange.webservices.data.property.complex.MimeContent;
039    import microsoft.exchange.webservices.data.property.complex.StringList;
040    import microsoft.exchange.webservices.data.property.complex.UniqueBody;
041    import microsoft.exchange.webservices.data.property.definition.AttachmentsPropertyDefinition;
042    import microsoft.exchange.webservices.data.property.definition.BoolPropertyDefinition;
043    import microsoft.exchange.webservices.data.property.definition.ByteArrayPropertyDefinition;
044    import microsoft.exchange.webservices.data.property.definition.ComplexPropertyDefinition;
045    import microsoft.exchange.webservices.data.property.definition.DateTimePropertyDefinition;
046    import microsoft.exchange.webservices.data.property.definition.EffectiveRightsPropertyDefinition;
047    import microsoft.exchange.webservices.data.property.definition.GenericPropertyDefinition;
048    import microsoft.exchange.webservices.data.property.definition.IntPropertyDefinition;
049    import microsoft.exchange.webservices.data.property.definition.PropertyDefinition;
050    import microsoft.exchange.webservices.data.property.definition.ResponseObjectsPropertyDefinition;
051    import microsoft.exchange.webservices.data.property.definition.StringPropertyDefinition;
052    
053    import java.util.EnumSet;
054    
055    /**
056     * Represents the schema for generic item.
057     */
058    @Schema
059    public 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    }