Beispiel #1
0
        string IInspectedObject.GetCurrentPrimaryPropertyValue(FocusedMessageEventsRange focusedMessage)
        {
            if (primaryPropertyName == null)
            {
                return(null);
            }
            var query =
                from change in history
                let pc = change.OriginalEvent as PropertyChange
                         where pc != null
                         where pc.PropertyName == primaryPropertyName
                         select new { idx = change.Index, pc = pc };
            var lastPC = query
                         .TakeWhile(pc => isTimeless || pc.idx < focusedMessage.EqualRange.Item2)
                         .Select(pc => pc.pc)
                         .LastOrDefault();

            if (lastPC == null)
            {
                return(null);
            }
            if (lastPC.ValueType == ValueType.UserHash)
            {
                return(shortNames.GetShortNameForUserHash(lastPC.Value));
            }
            return(lastPC.Value);
        }
Beispiel #2
0
 private InspectedObjectLiveStatus GetLiveStatusInternal(FocusedMessageEventsRange focusedMessage)
 {
     if (isTimeless)
     {
         return(InspectedObjectLiveStatus.NotCreatedYet);
     }
     if (creation == null || focusedMessage.EqualRange == null)
     {
         return(InspectedObjectLiveStatus.NotCreatedYet);
     }
     if (focusedMessage.EqualRange.Item2 <= creation.Index)
     {
         return(InspectedObjectLiveStatus.NotCreatedYet);
     }
     if (deletion == null)
     {
         return(InspectedObjectLiveStatus.Alive);
     }
     if (focusedMessage.EqualRange.Item1 > deletion.Index)
     {
         return(InspectedObjectLiveStatus.Deleted);
     }
     return(InspectedObjectLiveStatus.Alive);
 }
Beispiel #3
0
 InspectedObjectLiveStatus IInspectedObject.GetLiveStatus(FocusedMessageEventsRange focusedMessage)
 {
     return(GetLiveStatusInternal(focusedMessage));
 }
Beispiel #4
0
        IEnumerable <KeyValuePair <string, PropertyViewBase> > IInspectedObject.GetCurrentProperties(FocusedMessageEventsRange focusedMessageEqualRange)
        {
            yield return(new KeyValuePair <string, PropertyViewBase>("id", new IdPropertyView(this, id)));

            if (parent == null)
            {
                yield return(new KeyValuePair <string, PropertyViewBase>("(log source)",
                                                                         new SourceReferencePropertyView(this)));
            }
            if (creation != null && !isTimeless)
            {
                yield return(new KeyValuePair <string, PropertyViewBase>("created at",
                                                                         new PropertyChangeView(this, creation, PropertyChangeView.DisplayMode.Date, shortNames)));
            }
            if (deletion != null && !isTimeless)
            {
                yield return(new KeyValuePair <string, PropertyViewBase>("deleted at",
                                                                         new PropertyChangeView(this, deletion, PropertyChangeView.DisplayMode.Date, shortNames)));
            }
            if (focusedMessageEqualRange.EqualRange == null)
            {
                yield break;
            }
            var dynamicProps = new Dictionary <string, PropertyViewBase>();

            foreach (var change in history
                     .TakeWhile(e => isTimeless || e.Index < focusedMessageEqualRange.EqualRange.Item2)
                     .Select(e => new { ChangeEvt = e.OriginalEvent as PropertyChange, StateInspectorEvt = e })
                     .Where(e => e.ChangeEvt != null))
            {
                dynamicProps[change.ChangeEvt.PropertyName] =
                    new PropertyChangeView(this, change.StateInspectorEvt, ToPropDisplayMode(change.ChangeEvt.ValueType), shortNames);
            }
            foreach (var v in dynamicProps)
            {
                yield return(v);
            }
        }