private void GenerateItemListForSourceMailbox(SourceInformation sourceMailbox) { Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: Generating item list for mailbox '{0}'", new object[] { sourceMailbox.Configuration.Id }); ErrorRecord errorRecord = null; bool flag = sourceMailbox.Configuration.Id.StartsWith("\\"); ScenarioData.Current["PM"] = sourceMailbox.Configuration.LegacyExchangeDN.GetHashCode().ToString(); if (sourceMailbox.Status.ItemCount < 0) { sourceMailbox.Status.ItemCount = 0; } if (sourceMailbox.Status.UnsearchableItemCount < 0) { sourceMailbox.Status.UnsearchableItemCount = 0; } try { Dictionary<string, string> dictionary = null; if (!flag) { dictionary = ItemListGenerator.PrepareAllFolders(sourceMailbox.ServiceClient, sourceMailbox.Configuration.Id); } bool flag2 = false; bool flag3 = false; bool isUnsearchable = false; if (this.target.ExportContext.ExportMetadata.IncludeSearchableItems) { Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: call GetAllItemIdsFromServer for primary for mailbox: '{0}'", new object[] { sourceMailbox.Configuration.Id }); this.GetAllItemIdsFromServer<ItemId>(sourceMailbox, new ItemListGenerator.GetItemIdPageFromServerDelegate<ItemId>(this.GetItemIdPageFromServer), dictionary, isUnsearchable, false, ref flag2, out flag3); } if (this.target.ExportContext.ExportMetadata.IncludeSearchableItems && dictionary != null && dictionary.Values.Contains("\\archive")) { Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: call GetAllItemIdsFromServer for archive for mailbox: '{0}'", new object[] { sourceMailbox.Configuration.Id }); this.GetAllItemIdsFromServer<ItemId>(sourceMailbox, new ItemListGenerator.GetItemIdPageFromServerDelegate<ItemId>(this.GetItemIdPageFromServer), dictionary, isUnsearchable, true, ref flag2, out flag3); } isUnsearchable = true; if (this.target.ExportContext.ExportMetadata.IncludeUnsearchableItems) { flag2 = false; Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: call GetAllItemIdsFromServer isunsearchable for primary for mailbox: '{0}'", new object[] { sourceMailbox.Configuration.Id }); this.GetAllItemIdsFromServer<ItemId>(sourceMailbox, new ItemListGenerator.GetItemIdPageFromServerDelegate<ItemId>(this.GetItemIdPageFromServer), dictionary, isUnsearchable, false, ref flag2, out flag3); if (!flag3) { Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: call GetAllItemIdsFromServer isunsearchable for newschemafailed for mailbox: '{0}'", new object[] { sourceMailbox.Configuration.Id }); this.GetAllItemIdsFromServer<UnsearchableItemId>(sourceMailbox, new ItemListGenerator.GetItemIdPageFromServerDelegate<UnsearchableItemId>(this.GetUnsearchableItemIdPageFromServer), dictionary, isUnsearchable, false, ref flag2, out flag3); } else if (dictionary != null && dictionary.Values.Contains("\\archive")) { Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: call GetAllItemIdsFromServer isunsearchable for archive for mailbox: '{0}'", new object[] { sourceMailbox.Configuration.Id }); this.GetAllItemIdsFromServer<ItemId>(sourceMailbox, new ItemListGenerator.GetItemIdPageFromServerDelegate<ItemId>(this.GetItemIdPageFromServer), dictionary, isUnsearchable, true, ref flag2, out flag3); } } } catch (ExportException ex) { Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: Error for mailbox '{0}'. Exception: {1}", new object[] { sourceMailbox.Configuration.Id, ex }); errorRecord = new ErrorRecord { SourceId = sourceMailbox.Configuration.Id, Item = null, ErrorType = ex.ErrorType, DiagnosticMessage = ex.Message, Time = DateTime.UtcNow }; } if (ScenarioData.Current.ContainsKey("PM")) { ScenarioData.Current.Remove("PM"); } if (errorRecord != null) { this.AbortForSourceMailbox(errorRecord); } }
public void DoExportForSourceMailbox(SourceInformation sourceMailbox) { Tracer.TraceInformation("ItemListGenerator.DoExportForSourceMailbox: Generating item list for mailbox '{0}'", new object[] { sourceMailbox.Configuration.Id }); ErrorRecord errorRecord = null; sourceMailbox.Configuration.Id.StartsWith("\\"); ScenarioData.Current["PM"] = sourceMailbox.Configuration.LegacyExchangeDN.GetHashCode().ToString(); if (sourceMailbox.Status.ItemCount < 0) { sourceMailbox.Status.ItemCount = 0; } if (sourceMailbox.Status.UnsearchableItemCount < 0) { sourceMailbox.Status.UnsearchableItemCount = 0; } try { bool flag = this.target.ExportContext.ExportMetadata.IncludeSearchableItems && !this.DoUnSearchable; bool flag2 = this.target.ExportContext.ExportMetadata.IncludeUnsearchableItems && this.DoUnSearchable; bool flag3 = false; Dictionary<string, string> dictionary = null; dictionary = ItemListGenerator.PrepareAllFolders(sourceMailbox.ServiceClient, sourceMailbox.Configuration.Id); if (flag) { bool errorHappened = false; try { bool flag4 = false; Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: call GetAllItemIdsFromServer for primary for mailbox: '{0}'", new object[] { sourceMailbox.Configuration.Id }); this.GetAllItemIdsFromServer<ItemId>(sourceMailbox, new ItemListGenerator.GetItemIdPageFromServerDelegate<ItemId>(this.GetItemIdPageFromServer), dictionary, !flag, false, ref flag4, out flag3); if (dictionary != null && dictionary.Values.Contains("\\archive")) { Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: call GetAllItemIdsFromServer for archive for mailbox: '{0}'", new object[] { sourceMailbox.Configuration.Id }); this.GetAllItemIdsFromServer<ItemId>(sourceMailbox, new ItemListGenerator.GetItemIdPageFromServerDelegate<ItemId>(this.GetItemIdPageFromServer), dictionary, !flag, true, ref flag4, out flag3); } ExportException ex = AsynchronousTaskHandler.WaitForAsynchronousTask(this.writingTask); if (ex != null) { errorHappened = true; throw ex; } } finally { this.DataRetriever.DataWriter.ExitDataContext(errorHappened); } } bool isUnsearchable = true; if (flag2) { bool errorHappened2 = false; try { bool flag5 = false; Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: call GetAllItemIdsFromServer isunsearchable for primary for mailbox: '{0}'", new object[] { sourceMailbox.Configuration.Id }); this.GetAllItemIdsFromServer<ItemId>(sourceMailbox, new ItemListGenerator.GetItemIdPageFromServerDelegate<ItemId>(this.GetItemIdPageFromServer), dictionary, isUnsearchable, false, ref flag5, out flag3); if (!flag3) { Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: call GetAllItemIdsFromServer isunsearchable for newschemafailed for mailbox: '{0}'", new object[] { sourceMailbox.Configuration.Id }); this.GetAllItemIdsFromServer<UnsearchableItemId>(sourceMailbox, new ItemListGenerator.GetItemIdPageFromServerDelegate<UnsearchableItemId>(this.GetUnsearchableItemIdPageFromServer), dictionary, isUnsearchable, false, ref flag5, out flag3); } else if (dictionary != null && dictionary.Values.Contains("\\archive")) { Tracer.TraceInformation("ItemListGenerator.GenerateItemListForSourceMailbox: call GetAllItemIdsFromServer isunsearchable for archive for mailbox: '{0}'", new object[] { sourceMailbox.Configuration.Id }); this.GetAllItemIdsFromServer<ItemId>(sourceMailbox, new ItemListGenerator.GetItemIdPageFromServerDelegate<ItemId>(this.GetItemIdPageFromServer), dictionary, isUnsearchable, true, ref flag5, out flag3); } ExportException ex2 = AsynchronousTaskHandler.WaitForAsynchronousTask(this.writingTask); if (ex2 != null) { errorHappened2 = true; throw ex2; } } finally { this.DataRetriever.DataWriter.ExitDataContext(errorHappened2); } } } catch (ExportException ex3) { Tracer.TraceInformation("ItemListGenerator.DoExportForSourceMailbox: Error for mailbox '{0}'. Exception: {1}", new object[] { sourceMailbox.Configuration.Id, ex3 }); errorRecord = new ErrorRecord { SourceId = sourceMailbox.Configuration.Id, Item = null, ErrorType = ex3.ErrorType, DiagnosticMessage = ex3.Message, Time = DateTime.UtcNow }; } if (ScenarioData.Current.ContainsKey("PM")) { ScenarioData.Current.Remove("PM"); } if (errorRecord != null) { this.AbortForSourceMailbox(errorRecord); } }