private MessageTrace GetSplitMessage(MessageTrace sourceMessage, List <MessageRecipient> recipientList, Dictionary <Guid, Dictionary <Guid, MessageRecipientStatus> > eventRecipientStatusMap) { MessageTrace splitMessage = new MessageTrace(); splitMessage.ExMessageId = sourceMessage.ExMessageId; splitMessage.ClientMessageId = sourceMessage.ClientMessageId; splitMessage.OrganizationalUnitRoot = sourceMessage.OrganizationalUnitRoot; splitMessage.Direction = sourceMessage.Direction; splitMessage.FromEmailPrefix = sourceMessage.FromEmailPrefix; splitMessage.FromEmailDomain = sourceMessage.FromEmailDomain; splitMessage.IPAddress = sourceMessage.IPAddress; sourceMessage.GetExtendedPropertiesEnumerable().ToList <MessageProperty>().ForEach(delegate(MessageProperty r) { splitMessage.AddExtendedProperty(r); }); sourceMessage.Events.ForEach(delegate(MessageEvent r) { splitMessage.Add(this.GetSplitMessageEvent(r, recipientList, eventRecipientStatusMap[r.EventId])); }); sourceMessage.Classifications.ForEach(delegate(MessageClassification r) { splitMessage.Add(r); }); sourceMessage.ClientInformation.ForEach(delegate(MessageClientInformation r) { splitMessage.Add(r); }); recipientList.ForEach(delegate(MessageRecipient r) { splitMessage.Add(r); }); return(splitMessage); }
public MessageTrace[] FindPagedTrace(Guid organizationalUnitRoot, DateTime start, DateTime end, string fromEmailPrefix = null, string fromEmailDomain = null, string toEmailPrefix = null, string toEmailDomain = null, string clientMessageId = null, int rowIndex = 0, int rowCount = -1) { QueryFilter filter = MessageTraceSession.BuildQueryFilter(organizationalUnitRoot, start, end, fromEmailDomain, fromEmailPrefix, toEmailDomain, toEmailPrefix, clientMessageId); IConfigurable[] array = this.DataProvider.Find <MessageTrace>(filter, null, false, null); MessageTrace[] array2 = new MessageTrace[array.Length]; for (int i = 0; i < array.Length; i++) { array2[i] = (MessageTrace)array[i]; } return(array2); }
public int CompareTo(MessageTrace other) { if (other == null) { return(1); } int num = 0; byte[] array = this.ExMessageId.ToByteArray(); byte[] array2 = other.ExMessageId.ToByteArray(); int num2 = 10; while (num == 0 && num2 < 16) { num = array[num2].CompareTo(array2[num2]); num2++; } return(num); }
private IEnumerable <MessageTrace> SplitMessageForOptimizedSave(MessageTrace sourceMessage, int recipientSplitThreshold) { Dictionary <Guid, Dictionary <Guid, MessageRecipientStatus> > eventRecipientStatusMap = this.GetMessageEventRecipientStatusMap(sourceMessage); List <MessageRecipient> recipientList = new List <MessageRecipient>(); foreach (MessageRecipient recipient in sourceMessage.Recipients) { recipientList.Add(recipient); if (recipientList.Count == recipientSplitThreshold) { yield return(this.GetSplitMessage(sourceMessage, recipientList, eventRecipientStatusMap)); recipientList.Clear(); } } if (recipientList.Count > 0) { yield return(this.GetSplitMessage(sourceMessage, recipientList, eventRecipientStatusMap)); } yield break; }
public MessageTrace ConvertToMessageTraceObject() { Dictionary <Guid, MessageAction> dictionary = new Dictionary <Guid, MessageAction>(); Dictionary <Guid, MessageClassification> dict = new Dictionary <Guid, MessageClassification>(); Dictionary <Guid, MessageClientInformation> dict2 = new Dictionary <Guid, MessageClientInformation>(); Dictionary <Guid, MessageEvent> dictionary2 = new Dictionary <Guid, MessageEvent>(); Dictionary <Guid, MessageEventRule> dictionary3 = new Dictionary <Guid, MessageEventRule>(); Dictionary <Guid, MessageEventRuleClassification> dictionary4 = new Dictionary <Guid, MessageEventRuleClassification>(); Dictionary <Guid, MessageEventSourceItem> dictionary5 = new Dictionary <Guid, MessageEventSourceItem>(); Dictionary <Guid, MessageRecipient> dict3 = new Dictionary <Guid, MessageRecipient>(); Dictionary <Guid, MessageRecipientStatus> dictionary6 = new Dictionary <Guid, MessageRecipientStatus>(); MessageTraceEntityBase[] array = this.LoadConfigurables <MessageTrace>(MessageTraceDataSetSchema.MessagesTableProperty); MessageTrace messageTrace = null; if (array != null && array.Length > 0) { messageTrace = (array.FirstOrDefault <MessageTraceEntityBase>() as MessageTrace); } if (messageTrace == null) { return(null); } MessageTraceEntityBase[] messageProperties = this.LoadConfigurables <MessageProperty>(MessageTraceDataSetSchema.MessagePropertiesTableProperty); MessageTraceEntityBase[] msgActions = this.LoadConfigurables <MessageAction>(MessageTraceDataSetSchema.MessageActionTableProperty); MessageTraceEntityBase[] msgActionProperties = this.LoadConfigurables <MessageActionProperty>(MessageTraceDataSetSchema.MessageActionPropertiesTableProperty); MessageTraceEntityBase[] msgClassifications = this.LoadConfigurables <MessageClassification>(MessageTraceDataSetSchema.MessageClassificationsTableProperty); MessageTraceEntityBase[] msgClassificationProperties = this.LoadConfigurables <MessageClassificationProperty>(MessageTraceDataSetSchema.MessageClassificationPropertiesTableProperty); MessageTraceEntityBase[] msgClientInformation = this.LoadConfigurables <MessageClientInformation>(MessageTraceDataSetSchema.MessageClientInformationTableProperty); MessageTraceEntityBase[] msgClientInformationProperties = this.LoadConfigurables <MessageClientInformationProperty>(MessageTraceDataSetSchema.MessageClientInformationPropertiesTableProperty); MessageTraceEntityBase[] msgEvents = this.LoadConfigurables <MessageEvent>(MessageTraceDataSetSchema.MessageEventsTableProperty); MessageTraceEntityBase[] eventProperties = this.LoadConfigurables <MessageEventProperty>(MessageTraceDataSetSchema.MessageEventPropertiesTableProperty); MessageTraceEntityBase[] eventRules = this.LoadConfigurables <MessageEventRule>(MessageTraceDataSetSchema.MessageEventRulesTableProperty); MessageTraceEntityBase[] msgEventRuleProperties = this.LoadConfigurables <MessageEventRuleProperty>(MessageTraceDataSetSchema.MessageEventRulePropertiesTableProperty); MessageTraceEntityBase[] msgEventRuleClassifications = this.LoadConfigurables <MessageEventRuleClassification>(MessageTraceDataSetSchema.MessageEventRuleClassificationsTableProperty); MessageTraceEntityBase[] msgEventRuleClassificationProperties = this.LoadConfigurables <MessageEventRuleClassificationProperty>(MessageTraceDataSetSchema.MessageEventRuleClassificationPropertiesTableProperty); MessageTraceEntityBase[] eventSourceItems = this.LoadConfigurables <MessageEventSourceItem>(MessageTraceDataSetSchema.MessageEventSourceItemsTableProperty); MessageTraceEntityBase[] msgEventSourceItemProperties = this.LoadConfigurables <MessageEventSourceItemProperty>(MessageTraceDataSetSchema.MessageEventSourceItemPropertiesTableProperty); MessageTraceEntityBase[] msgRecipients = this.LoadConfigurables <MessageRecipient>(MessageTraceDataSetSchema.MessageRecipientsTableProperty); MessageTraceEntityBase[] recipientProperties = this.LoadConfigurables <MessageRecipientProperty>(MessageTraceDataSetSchema.MessageRecipientPropertiesTableProperty); MessageTraceEntityBase[] msgRecipientStatuses = this.LoadConfigurables <MessageRecipientStatus>(MessageTraceDataSetSchema.MessageRecipientStatusTableProperty); MessageTraceEntityBase[] msgRecipientStatusProperties = this.LoadConfigurables <MessageRecipientStatusProperty>(MessageTraceDataSetSchema.MessageRecipientStatusPropertiesTableProperty); MessageTraceDataSet.AddMessageProperties(messageProperties, messageTrace); MessageTraceDataSet.AddClassifications(msgClassifications, messageTrace, dict); MessageTraceDataSet.AddClassificationProperties(msgClassificationProperties, dict); MessageTraceDataSet.AddClientInformation(msgClientInformation, messageTrace, dict2); MessageTraceDataSet.AddClientInformationProperties(msgClientInformationProperties, dict2); MessageTraceDataSet.AddEvents(msgEvents, messageTrace, dictionary2); MessageTraceDataSet.AddEventPropertiesToEvents(eventProperties, dictionary2); MessageTraceDataSet.AddEventRules(eventRules, dictionary2, dictionary3); MessageTraceDataSet.AddEventRuleProperties(msgEventRuleProperties, dictionary3); MessageTraceDataSet.AddEventRuleClassifications(msgEventRuleClassifications, dictionary3, dictionary4); MessageTraceDataSet.AddEventRuleClassificationProperties(msgEventRuleClassificationProperties, dictionary4); MessageTraceDataSet.AddActions(msgActions, dictionary3, dictionary); MessageTraceDataSet.AddActionProperties(msgActionProperties, dictionary); MessageTraceDataSet.AddEventSourceItems(eventSourceItems, dictionary2, dictionary5); MessageTraceDataSet.AddEventSourceItemProperties(msgEventSourceItemProperties, dictionary5); MessageTraceDataSet.AddRecipients(msgRecipients, messageTrace, dict3); MessageTraceDataSet.AddRecipientPropertiesToRecipients(recipientProperties, dict3); MessageTraceDataSet.AddRecipientStatuses(msgRecipientStatuses, dictionary6, dictionary2); MessageTraceDataSet.AddRecipientStatusProperties(msgRecipientStatusProperties, dictionary6); return(messageTrace); }
public virtual void Visit(MessageTrace messageTrace) { }
private Dictionary <Guid, Dictionary <Guid, MessageRecipientStatus> > GetMessageEventRecipientStatusMap(MessageTrace message) { Dictionary <Guid, Dictionary <Guid, MessageRecipientStatus> > dictionary = new Dictionary <Guid, Dictionary <Guid, MessageRecipientStatus> >(); foreach (MessageEvent messageEvent in message.Events) { Dictionary <Guid, MessageRecipientStatus> statusDict = new Dictionary <Guid, MessageRecipientStatus>(); messageEvent.Statuses.ForEach(delegate(MessageRecipientStatus r) { statusDict[r.RecipientId] = r; }); dictionary[messageEvent.EventId] = statusDict; } return(dictionary); }