protected override IEnumerable <Event> ReadQueryResults(object[][] rows, Dictionary <Microsoft.Exchange.Data.PropertyDefinition, int> propertyIndices)
        {
            List <Event> list = new List <Event>();
            Dictionary <string, Event> dictionary = new Dictionary <string, Event>();

            foreach (object[] values in rows)
            {
                Event @event = this.Translator.ConvertToEntity(propertyIndices, values, base.Session);
                list.Add(@event);
                object obj;
                if (@event.Type == EventType.SeriesMaster && this.TryGetPropertyFromPropertyIndices(propertyIndices, values, CalendarItemBaseSchema.SeriesId, out obj) && !dictionary.ContainsKey(@event.SeriesId))
                {
                    dictionary.Add(@event.SeriesId, @event);
                }
            }
            for (int j = 0; j < list.Count; j++)
            {
                Event event2 = list[j];
                Event master2;
                if (event2.Type == EventType.Exception && dictionary.TryGetValue(event2.SeriesId, out master2))
                {
                    IList <string> overridenProperties = new List <string>();
                    object         obj2;
                    if (this.TryGetPropertyFromPropertyIndices(propertyIndices, rows[j], CalendarItemInstanceSchema.PropertyChangeMetadataRaw, out obj2))
                    {
                        PropertyChangeMetadata metadata = PropertyChangeMetadata.Parse((byte[])obj2);
                        overridenProperties = EventTranslator.Instance.GetOverridenProperties(metadata);
                    }
                    master2.CopyMasterPropertiesTo(event2, false, (Event occurrence, Event master, Microsoft.Exchange.Entities.DataModel.PropertyBags.PropertyDefinition property) => master.IsPropertySet(property) && !overridenProperties.Contains(property.Name), false);
                }
            }
            return(list);
        }
示例#2
0
 public DefaultStoragePropertyAccessor(StorePropertyDefinition property, bool forceReadonly = false) : base(forceReadonly || (property.PropertyFlags & PropertyFlags.ReadOnly) == PropertyFlags.ReadOnly, null, new StorePropertyDefinition[]
 {
     property
 })
 {
     base.PropertyChangeMetadataGroup = PropertyChangeMetadata.GetGroupForProperty(property);
     this.Property = property;
 }
示例#3
0
        public IList <string> Convert(PropertyChangeMetadata value)
        {
            if (value == null)
            {
                throw new ExArgumentNullException("value");
            }
            IEnumerable <string> source = from overriddenGroup in this.GetOverriddenGroups(value)
                                          select this.propertyMapping.Convert(overriddenGroup) into properties
                                              where properties != null
                                          from property in properties
                                          select property.Name;

            return(source.ToList <string>());
        }
示例#4
0
 internal IList <string> GetOverridenProperties(PropertyChangeMetadata metadata)
 {
     return(this.propertyChangeMetadataConverter.Convert(metadata));
 }
示例#5
0
 protected virtual IEnumerable <PropertyChangeMetadata.PropertyGroup> GetOverriddenGroups(PropertyChangeMetadata value)
 {
     return(value.GetOverriddenGroups());
 }