Example #1
0
 private void LoadChildNodesCollection(IStorePropertyBag[] rows, int startIndex)
 {
     for (int i = startIndex; i < rows.Length; i++)
     {
         IStorePropertyBag storePropertyBag = rows[i];
         if (TaskGroup.IsTaskSection(storePropertyBag) && TaskGroup.IsFolderTreeData(storePropertyBag) && TaskGroup.IsTaskGroupEntry(storePropertyBag))
         {
             byte[] valueOrDefault = storePropertyBag.GetValueOrDefault <byte[]>(FolderTreeDataSchema.ParentGroupClassId, null);
             if (valueOrDefault == null || valueOrDefault.Length != 16)
             {
                 ExTraceGlobals.StorageTracer.TraceDebug <int>(0L, "Found TaskGroupEntry with invalid parent group id. ArrayLength: {0}", (valueOrDefault == null) ? -1 : valueOrDefault.Length);
             }
             else
             {
                 Guid g = new Guid(valueOrDefault);
                 if (this.groupClassId.Equals(g))
                 {
                     TaskGroupEntryInfo taskGroupEntryInfoFromRow = TaskGroupEntry.GetTaskGroupEntryInfoFromRow(storePropertyBag);
                     if (taskGroupEntryInfoFromRow != null)
                     {
                         this.children.Add(taskGroupEntryInfoFromRow);
                     }
                 }
             }
         }
     }
     this.hasLoadedTaskFoldersCollection = true;
 }
Example #2
0
        private static void AddTaskFolderToList(IStorePropertyBag row, Dictionary <Guid, TaskGroupInfo> guidToGroupMapping, Dictionary <StoreObjectId, TaskGroupEntryInfo> taskFolderIdToGroupEntryMapping, TaskGroupInfoList taskGroups)
        {
            TaskGroupEntryInfo taskGroupEntryInfoFromRow = TaskGroupEntry.GetTaskGroupEntryInfoFromRow(row);

            if (taskGroupEntryInfoFromRow == null)
            {
                return;
            }
            TaskGroupInfo taskGroupInfo;

            if (!guidToGroupMapping.TryGetValue(taskGroupEntryInfoFromRow.ParentGroupClassId, out taskGroupInfo))
            {
                ExTraceGlobals.StorageTracer.TraceDebug <string, Guid, VersionedId>(0L, "Found a task group entry with an invalid parent id. TaskFolderName: {0}, ParentId: {1}, ItemId: {2}", taskGroupEntryInfoFromRow.FolderName, taskGroupEntryInfoFromRow.ParentGroupClassId, taskGroupEntryInfoFromRow.Id);
                return;
            }
            TaskGroupEntryInfo taskGroupEntryInfo;

            if (taskFolderIdToGroupEntryMapping.TryGetValue(taskGroupEntryInfoFromRow.TaskFolderId, out taskGroupEntryInfo))
            {
                if (taskGroupEntryInfo.LastModifiedTime.CompareTo(taskGroupEntryInfoFromRow.LastModifiedTime) > 0)
                {
                    taskGroups.DuplicateNodes.Add(taskGroupEntryInfoFromRow);
                    return;
                }
                taskGroups.DuplicateNodes.Add(taskGroupEntryInfo);
                guidToGroupMapping[taskGroupEntryInfo.ParentGroupClassId].TaskFolders.Remove(taskGroupEntryInfo);
                taskFolderIdToGroupEntryMapping[taskGroupEntryInfoFromRow.TaskFolderId] = taskGroupEntryInfoFromRow;
            }
            else
            {
                taskFolderIdToGroupEntryMapping.Add(taskGroupEntryInfoFromRow.TaskFolderId, taskGroupEntryInfoFromRow);
            }
            taskGroupInfo.TaskFolders.Add(taskGroupEntryInfoFromRow);
        }
Example #3
0
        public static TaskGroupEntry Create(MailboxSession session, StoreObjectId taskFolderId, TaskGroup parentGroup)
        {
            Util.ThrowOnNullArgument(parentGroup, "parentGroup");
            TaskGroupEntry taskGroupEntry = TaskGroupEntry.Create(session, taskFolderId, parentGroup.GroupClassId, parentGroup.GroupName);

            taskGroupEntry.parentGroup = parentGroup;
            return(taskGroupEntry);
        }
Example #4
0
        public static TaskGroupEntry Bind(MailboxSession session, StoreId storeId, ICollection <PropertyDefinition> propsToReturn)
        {
            Util.ThrowOnNullArgument(session, "session");
            Util.ThrowOnNullArgument(storeId, "storeId");
            TaskGroupEntry taskGroupEntry = ItemBuilder.ItemBind <TaskGroupEntry>(session, storeId, TaskGroupEntrySchema.Instance, propsToReturn);

            taskGroupEntry.MailboxSession = session;
            return(taskGroupEntry);
        }
Example #5
0
        internal static TaskGroupEntry Create(MailboxSession session, Guid parentGroupClassId, string parentGroupName)
        {
            Util.ThrowOnNullArgument(session, "session");
            TaskGroupEntry taskGroupEntry = ItemBuilder.CreateNewItem <TaskGroupEntry>(session, session.GetDefaultFolderId(DefaultFolderType.CommonViews), ItemCreateInfo.TaskGroupEntryInfo, CreateMessageType.Associated);

            taskGroupEntry.MailboxSession     = session;
            taskGroupEntry.ParentGroupClassId = parentGroupClassId;
            taskGroupEntry.ParentGroupName    = parentGroupName;
            return(taskGroupEntry);
        }
Example #6
0
        internal static TaskGroupEntry Create(MailboxSession session, StoreObjectId taskFolderId, Guid parentGroupClassId, string parentGroupName)
        {
            Util.ThrowOnNullArgument(taskFolderId, "taskFolderId");
            if (taskFolderId.ObjectType != StoreObjectType.TasksFolder && taskFolderId.ObjectType != StoreObjectType.SearchFolder)
            {
                throw new NotSupportedException("A task group entry can only be associated with a storeobject of type task folder.");
            }
            TaskGroupEntry taskGroupEntry = TaskGroupEntry.Create(session, parentGroupClassId, parentGroupName);

            taskGroupEntry.TaskFolderId = taskFolderId;
            taskGroupEntry.StoreEntryId = Microsoft.Exchange.Data.Storage.StoreEntryId.ToProviderStoreEntryId(session.MailboxOwner);
            return(taskGroupEntry);
        }
Example #7
0
        private static bool AddDefaultTaskFolder(MailboxSession session, TaskGroup taskGroup, DefaultFolderType folderType, string folderName)
        {
            bool result = true;

            using (TaskGroupEntry taskGroupEntry = TaskGroupEntry.Create(session, session.GetDefaultFolderId(folderType), FolderTreeData.MyFoldersClassId, taskGroup.GroupName))
            {
                taskGroupEntry.FolderName = folderName;
                ConflictResolutionResult conflictResolutionResult = taskGroupEntry.Save(SaveMode.NoConflictResolution);
                if (conflictResolutionResult.SaveStatus != SaveResult.Success)
                {
                    ExTraceGlobals.StorageTracer.TraceWarning <DefaultFolderType, SmtpAddress>(0L, "Unable to associate default task folder type: {0} with the MyTasks group for user: {1}. Attempting to delete default tasks group.", folderType, session.MailboxOwner.MailboxInfo.PrimarySmtpAddress);
                    result = false;
                }
            }
            return(result);
        }
Example #8
0
 public static TaskGroupEntry Create(MailboxSession session, Folder taskFolder, TaskGroup parentGroup)
 {
     Util.ThrowOnNullArgument(parentGroup, "parentGroup");
     Util.ThrowOnNullArgument(taskFolder, "TaskFolder");
     return(TaskGroupEntry.Create(session, taskFolder.Id.ObjectId, parentGroup.GroupClassId, parentGroup.GroupName));
 }
Example #9
0
 public TaskGroupEntryInfo GetTaskGroupEntryInfo()
 {
     return(TaskGroupEntry.GetTaskGroupEntryInfoFromRow(this));
 }
Example #10
0
 public static TaskGroupEntry Bind(MailboxSession session, StoreId storeId)
 {
     return(TaskGroupEntry.Bind(session, storeId, null));
 }