private bool ShouldEnumerateFolder(IStorePropertyBag folder, ContactFoldersEnumerator.DeletedItemsFolderEnumerationState deletedItemsFolderEnumerationState) { object obj = folder.TryGetProperty(FolderSchema.Id); object obj2 = folder.TryGetProperty(StoreObjectSchema.ContainerClass); string valueOrDefault = folder.GetValueOrDefault <string>(FolderSchema.DisplayName, string.Empty); if (obj is PropertyError || obj2 is PropertyError) { ContactFoldersEnumerator.Tracer.TraceDebug <string, object, object>((long)this.GetHashCode(), "Skiping bogus folder (DisplayName:{0}) without ID ({1}) or container class ({2})", valueOrDefault, obj, obj2); return(false); } if (this.ShouldSkipDeletedFolders && this.IsDeletedFolder(folder, deletedItemsFolderEnumerationState)) { ContactFoldersEnumerator.Tracer.TraceDebug <object, string>((long)this.GetHashCode(), "Skiping deleted folder - ID:{0}, DisplayName:{1}.", obj, valueOrDefault); return(false); } if (!ObjectClass.IsContactsFolder((string)obj2)) { ContactFoldersEnumerator.Tracer.TraceDebug <object, object, string>((long)this.GetHashCode(), "Skiping non-contact folder - ID:{0}, ContainerClass:{1}, DisplayName:{2}.", obj, obj2, valueOrDefault); return(false); } if (this.ShouldSkipHiddenFolders && folder.TryGetProperty(FolderSchema.IsHidden) is bool && (bool)folder.TryGetProperty(FolderSchema.IsHidden)) { ContactFoldersEnumerator.Tracer.TraceDebug <object, string>((long)this.GetHashCode(), "Skiping hidden folder - ID:{0}, DisplayName:{1}.", obj, valueOrDefault); return(false); } ContactFoldersEnumerator.Tracer.TraceDebug <object, string>((long)this.GetHashCode(), "Enumerating folder - ID:{0}, DisplayName:{1}.", obj, valueOrDefault); return(true); }
private static OutlookModule GetModuleForObjectClass(string objectClass) { if (objectClass == null) { return(OutlookModule.None); } if (ObjectClass.IsCalendarFolder(objectClass) || ObjectClass.IsCalendarItem(objectClass)) { return(OutlookModule.Calendar); } if (ObjectClass.IsContactsFolder(objectClass) || ObjectClass.IsContact(objectClass) || ObjectClass.IsDistributionList(objectClass)) { return(OutlookModule.Contacts); } if (ObjectClass.IsJournalFolder(objectClass) || ObjectClass.IsJournalItem(objectClass)) { return(OutlookModule.Journal); } if (ObjectClass.IsNotesFolder(objectClass) || ObjectClass.IsNotesItem(objectClass)) { return(OutlookModule.Notes); } if (ObjectClass.IsTaskFolder(objectClass) || ObjectClass.IsTask(objectClass)) { return(OutlookModule.Tasks); } if (ObjectClass.IsMessageFolder(objectClass) || ObjectClass.IsMessage(objectClass, false) || ObjectClass.IsMeetingMessage(objectClass) || ObjectClass.IsTaskRequest(objectClass) || ObjectClass.IsReport(objectClass)) { return(OutlookModule.Mail); } return(OutlookModule.None); }
private IEnumerable <IStorePropertyBag> EnumerateCandidatesThatMatchDefaultNamingConvention() { string defaultFolderDisplayName; if (!OscProviderRegistry.TryGetDefaultFolderDisplayName(this.provider, out defaultFolderDisplayName)) { OscProviderCandidateFolderEnumerator.Tracer.TraceDebug <Guid>((long)this.GetHashCode(), "Candidate folder enumerator: provider {0} is unknown. Cannot enumerate candidates that match naming convention", this.provider); } else { TextFilter displayNameStartsWithProviderName = new TextFilter(FolderSchema.DisplayName, defaultFolderDisplayName, MatchOptions.Prefix, MatchFlags.IgnoreCase); OscProviderCandidateFolderEnumerator.Tracer.TraceDebug <Guid, string>((long)this.GetHashCode(), "Candidate folder enumerator: the default folder display name for provider {0} is {1}", this.provider, defaultFolderDisplayName); using (IFolder rootFolder = this.xsoFactory.BindToFolder(this.session, this.session.GetDefaultFolderId(DefaultFolderType.Root))) { using (IQueryResult subFoldersQuery = rootFolder.IFolderQuery(FolderQueryFlags.None, null, OscProviderCandidateFolderEnumerator.SortByDisplayNameAscending, OscProviderCandidateFolderEnumerator.FolderPropertiesToLoad)) { if (!subFoldersQuery.SeekToCondition(SeekReference.OriginBeginning, displayNameStartsWithProviderName, SeekToConditionFlags.AllowExtendedFilters)) { OscProviderCandidateFolderEnumerator.Tracer.TraceDebug <string>((long)this.GetHashCode(), "Candidate folder enumerator: SeekToCondition = false. No folder has display name matching {0}", defaultFolderDisplayName); yield break; } IStorePropertyBag[] folders = subFoldersQuery.GetPropertyBags(10); while (folders.Length > 0) { foreach (IStorePropertyBag folder in folders) { string displayName = folder.GetValueOrDefault <string>(FolderSchema.DisplayName, string.Empty); VersionedId folderId = folder.GetValueOrDefault <VersionedId>(FolderSchema.Id, null); if (folderId == null) { OscProviderCandidateFolderEnumerator.Tracer.TraceError <string>((long)this.GetHashCode(), "Candidate folder enumerator: skipping bogus folder '{0}' because it has a blank id.", displayName); } else { string containerClass = folder.GetValueOrDefault <string>(StoreObjectSchema.ContainerClass, string.Empty); if (string.IsNullOrEmpty(containerClass) || !ObjectClass.IsContactsFolder(containerClass)) { OscProviderCandidateFolderEnumerator.Tracer.TraceDebug <string, VersionedId>((long)this.GetHashCode(), "Candidate folder enumerator: skipping folder '{0}' (ID={1}) because it's not a contacts folder.", displayName, folderId); } else { if (string.IsNullOrEmpty(displayName) || !displayName.StartsWith(defaultFolderDisplayName, StringComparison.OrdinalIgnoreCase)) { OscProviderCandidateFolderEnumerator.Tracer.TraceDebug <string>((long)this.GetHashCode(), "Candidate folder enumerator: we've iterated past candidates that follow the naming convention. Current folder is '{0}'", displayName); yield break; } OscProviderCandidateFolderEnumerator.Tracer.TraceDebug <string, VersionedId>((long)this.GetHashCode(), "Candidate folder enumerator: folder: {0}; id: {1}; is a good candidate.", displayName, folderId); yield return(folder); } } } folders = subFoldersQuery.GetPropertyBags(10); } } } } yield break; }
public bool SkipItemOperation(COWSettings settings, IDumpsterItemOperations dumpster, COWTriggerAction operation, COWTriggerActionState state, StoreSession session, StoreObjectId itemId, CoreItem item, bool onBeforeNotification, bool onDumpster, bool success, CallbackContext callbackContext) { if (!COWContactLogging.COWContactLoggingConfiguration.Instance.IsLoggingEnabled()) { return(true); } Util.ThrowOnNullArgument(session, "session"); EnumValidator.ThrowIfInvalid <COWTriggerAction>(operation, "operation"); EnumValidator.ThrowIfInvalid <COWTriggerActionState>(state, "state"); if (item == null) { COWContactLogging.Tracer.TraceDebug((long)this.GetHashCode(), "COWContactLogging.SkipItemOperation: Item is null"); return(true); } if (!onBeforeNotification) { COWContactLogging.Tracer.TraceDebug((long)this.GetHashCode(), "COWContactLogging.SkipItemOperation: Not onBeforeNotification"); return(true); } string valueOrDefault = item.PropertyBag.GetValueOrDefault <string>(StoreObjectSchema.ItemClass, string.Empty); COWContactLogging.Tracer.TraceDebug <string>((long)this.GetHashCode(), "COWContactLogging.SkipItemOperation: ItemClass: {0}", valueOrDefault); if (ObjectClass.IsPlace(valueOrDefault)) { return(true); } if (!ObjectClass.IsContact(valueOrDefault) && !ObjectClass.IsDistributionList(valueOrDefault) && !ObjectClass.IsContactsFolder(valueOrDefault)) { return(true); } foreach (IContactChangeTracker contactChangeTracker in COWContactLogging.ChangeTrackers) { if (contactChangeTracker.ShouldLoadPropertiesForFurtherCheck(operation, valueOrDefault, itemId, item)) { COWContactLogging.Tracer.TraceDebug((long)this.GetHashCode(), "COWContactLogging.SkipItemOperation: A tracker interested."); return(false); } } return(true); }
public static StoreObjectType GetObjectType(string itemClass) { if (ObjectClass.IsOfClass(itemClass, "IPM.Note.Rules.OofTemplate.Microsoft", false)) { return(StoreObjectType.OofMessage); } if (ObjectClass.IsOfClass(itemClass, "IPM.Note.Rules.ExternalOofTemplate.Microsoft", false)) { return(StoreObjectType.ExternalOofMessage); } if (ObjectClass.IsOfClass(itemClass, "IPM.Note.Reminder")) { return(StoreObjectType.ReminderMessage); } if (ObjectClass.IsOfClass(itemClass, "IPM.Note")) { return(StoreObjectType.Message); } if (ObjectClass.IsOfClass(itemClass, "IPM.Post")) { return(StoreObjectType.Post); } if (ObjectClass.IsReport(itemClass)) { return(StoreObjectType.Report); } if (ObjectClass.IsCalendarItem(itemClass)) { return(StoreObjectType.CalendarItem); } if (ObjectClass.IsCalendarItemSeries(itemClass)) { return(StoreObjectType.CalendarItemSeries); } if (ObjectClass.IsMeetingRequestSeries(itemClass)) { return(StoreObjectType.MeetingRequestSeries); } if (ObjectClass.IsMeetingRequest(itemClass)) { return(StoreObjectType.MeetingRequest); } if (ObjectClass.IsOfClass(itemClass, "IPM.MeetingMessageSeries.Resp")) { return(StoreObjectType.MeetingResponseSeries); } if (ObjectClass.IsOfClass(itemClass, "IPM.Schedule.Meeting.Resp")) { return(StoreObjectType.MeetingResponse); } if (ObjectClass.IsMeetingCancellationSeries(itemClass)) { return(StoreObjectType.MeetingCancellationSeries); } if (ObjectClass.IsMeetingCancellation(itemClass)) { return(StoreObjectType.MeetingCancellation); } if (ObjectClass.IsOfClass(itemClass, "IPM.Schedule.Meeting.Notification.Forward")) { return(StoreObjectType.MeetingForwardNotification); } if (ObjectClass.IsOfClass(itemClass, "IPM.MeetingMessageSeries.Notification.Forward")) { return(StoreObjectType.MeetingForwardNotificationSeries); } if (ObjectClass.IsOfClass(itemClass, "IPM.Notification.Meeting")) { return(StoreObjectType.MeetingForwardNotification); } if (ObjectClass.IsOfClass(itemClass, "IPM.Schedule.Inquiry")) { return(StoreObjectType.MeetingInquiryMessage); } if (ObjectClass.IsOfClass(itemClass, "IPM.Contact.Place")) { return(StoreObjectType.Place); } if (ObjectClass.IsOfClass(itemClass, "IPM.Contact")) { return(StoreObjectType.Contact); } if (ObjectClass.IsOfClass(itemClass, "IPM.UserPhoto.Preview")) { return(StoreObjectType.UserPhotoPreview); } if (ObjectClass.IsOfClass(itemClass, "IPM.UserPhoto")) { return(StoreObjectType.UserPhoto); } if (ObjectClass.IsOfClass(itemClass, "IPM.DistList")) { return(StoreObjectType.DistributionList); } if (ObjectClass.IsOfClass(itemClass, "IPM.Task")) { return(StoreObjectType.Task); } if (ObjectClass.IsOfClass(itemClass, "IPM.TaskRequest")) { return(StoreObjectType.TaskRequest); } if (ObjectClass.IsOfClass(itemClass, "IPM.ConversationAction")) { return(StoreObjectType.ConversationActionItem); } if (ObjectClass.IsOfClass(itemClass, "IPM.Note.rpmsg.Microsoft.Voicemail.UM.CA")) { return(StoreObjectType.Message); } if (ObjectClass.IsOfClass(itemClass, "IPM.Note.rpmsg.Microsoft.Voicemail.UM")) { return(StoreObjectType.Message); } if (ObjectClass.IsOfClass(itemClass, "IPM.Sharing", false)) { return(StoreObjectType.SharingMessage); } if (ObjectClass.IsOfClass(itemClass, "IPM.GroupMailbox.JoinRequest")) { return(StoreObjectType.GroupMailboxRequestMessage); } if (ObjectClass.IsOfClass(itemClass, "IPM.MailboxAssociation.Group")) { return(StoreObjectType.MailboxAssociationGroup); } if (ObjectClass.IsOfClass(itemClass, "IPM.MailboxAssociation.User")) { return(StoreObjectType.MailboxAssociationUser); } if (ObjectClass.IsOfClass(itemClass, "IPM.HierarchySync.Metadata")) { return(StoreObjectType.HierarchySyncMetadata); } if (ObjectClass.IsSubscriptionDataItem(itemClass)) { return(StoreObjectType.PushNotificationSubscription); } if (ObjectClass.IsOutlookServiceSubscriptionDataItem(itemClass)) { return(StoreObjectType.OutlookServiceSubscription); } if (ObjectClass.IsConfigurationItem(itemClass)) { return(StoreObjectType.Configuration); } if (ObjectClass.IsParkedMeetingMessage(itemClass)) { return(StoreObjectType.ParkedMeetingMessage); } if (ObjectClass.IsGenericMessage(itemClass)) { return(StoreObjectType.Message); } if (ObjectClass.IsCalendarFolder(itemClass)) { return(StoreObjectType.CalendarFolder); } if (ObjectClass.IsContactsFolder(itemClass)) { return(StoreObjectType.ContactsFolder); } if (ObjectClass.IsTaskFolder(itemClass)) { return(StoreObjectType.TasksFolder); } if (ObjectClass.IsNotesFolder(itemClass)) { return(StoreObjectType.NotesFolder); } if (ObjectClass.IsJournalFolder(itemClass)) { return(StoreObjectType.JournalFolder); } if (ObjectClass.IsShortcutFolder(itemClass)) { return(StoreObjectType.ShortcutFolder); } if (ObjectClass.IsGenericFolder(itemClass)) { return(StoreObjectType.Folder); } return(StoreObjectType.Unknown); }