Exemple #1
0
        private void WriteTo(ProjectionVersion projectionVersion, IEnumerable <KeyValuePair <string, JToken> > extraMetaData, JsonTextWriter jsonWriter)
        {
            jsonWriter.WriteStartObject();
            if (projectionVersion.ProjectionId > 0)
            {
                jsonWriter.WritePropertyName("$v");
                WriteVersion(projectionVersion, jsonWriter);
            }
            switch (Mode_)
            {
            case Mode.Position:
            case Mode.EventTypeIndex:
                jsonWriter.WritePropertyName("$c");
                jsonWriter.WriteValue(CommitPosition.GetValueOrDefault());
                jsonWriter.WritePropertyName("$p");
                jsonWriter.WriteValue(PreparePosition.GetValueOrDefault());
                if (Mode_ == Mode.EventTypeIndex)
                {
                    goto case Mode.MultiStream;
                }
                break;

            case Mode.PreparePosition:
                jsonWriter.WritePropertyName("$p");
                jsonWriter.WriteValue(PreparePosition.GetValueOrDefault());
                break;

            case Mode.Stream:
            case Mode.MultiStream:
                jsonWriter.WritePropertyName("$s");
                jsonWriter.WriteStartObject();
                foreach (var stream in Streams)
                {
                    jsonWriter.WritePropertyName(stream.Key);
                    jsonWriter.WriteValue(stream.Value);
                }
                jsonWriter.WriteEndObject();
                break;
            }
            if (extraMetaData != null)
            {
                foreach (var pair in extraMetaData)
                {
                    jsonWriter.WritePropertyName(pair.Key);
                    pair.Value.WriteTo(jsonWriter);
                }
            }
            jsonWriter.WriteEndObject();
        }
Exemple #2
0
        private async void FilterTrigger(object sender, EventArgs e)
        {
            filterTriggerTimer.Stop();
            string filterText = settingFilterText;

            FilterText = filterText;

            Log.Debug($"Filter triggered for: {FilterText}");

            CommitPosition commitPosition = TryGetSelectedCommitPosition();

            using (progress.ShowBusy())
            {
                await viewModelService.SetFilterAsync(this, filterText);
            }

            TrySetSelectedCommitPosition(commitPosition, true);
            CommitDetailsViewModel.NotifyAll();

            VirtualItemsSource.DataChanged(width);
        }
Exemple #3
0
        private void TrySetSelectedCommitPosition(
            CommitPosition commitPosition, bool ignoreTopIndex = false)
        {
            if (commitPosition != null)
            {
                if (!ignoreTopIndex && commitPosition.Index == 0)
                {
                    // The index was 0 (top) lest ensure the index remains 0 again
                    Log.Debug("Scroll to 0 since first position was 0");
                    ScrollTo(0);
                    if (Commits.Any())
                    {
                        SelectedIndex = 0;
                        SelectedItem  = Commits.First();
                    }

                    return;
                }

                Commit selected = commitPosition.Commit;

                int indexAfter = Commits.FindIndex(c => c.Commit.Id == selected.Id);

                if (selected != null && indexAfter != -1)
                {
                    int indexBefore = commitPosition.Index;
                    ScrollRows(indexBefore - indexAfter);
                    SelectedIndex = indexAfter;
                    SelectedItem  = Commits[indexAfter];
                    return;
                }
            }

            ScrollTo(0);
            if (Commits.Any())
            {
                SelectedIndex = 0;
                SelectedItem  = Commits.First();
            }
        }
Exemple #4
0
        public void WriteTo(ProjectionVersion projectionVersion,
                            IEnumerable <KeyValuePair <string, JToken> > extraMetaData, JsonWriter jsonWriter)
        {
            jsonWriter.WriteStartObject();
            if (projectionVersion.ProjectionId > 0)
            {
                jsonWriter.WritePropertyName("$v");
                WriteVersion(projectionVersion, jsonWriter);
            }

            if (Phase != 0)
            {
                jsonWriter.WritePropertyName("$ph");
                jsonWriter.WriteValue(Phase);
            }

            switch (Mode_)
            {
            case Mode.Phase:
                jsonWriter.WritePropertyName("$cp");
                jsonWriter.WriteValue(Completed);
                break;

            case Mode.Position:
            case Mode.EventTypeIndex:
                jsonWriter.WritePropertyName("$c");
                jsonWriter.WriteValue(CommitPosition.GetValueOrDefault());
                jsonWriter.WritePropertyName("$p");
                jsonWriter.WriteValue(PreparePosition.GetValueOrDefault());
                if (Mode_ == Mode.EventTypeIndex)
                {
                    goto case Mode.MultiStream;
                }
                break;

            case Mode.PreparePosition:
                jsonWriter.WritePropertyName("$p");
                jsonWriter.WriteValue(PreparePosition.GetValueOrDefault());
                break;

            case Mode.Stream:
            case Mode.MultiStream:
                jsonWriter.WritePropertyName("$s");
                jsonWriter.WriteStartObject();
                foreach (var stream in Streams)
                {
                    jsonWriter.WritePropertyName(stream.Key);
                    jsonWriter.WriteValue(stream.Value);
                }

                jsonWriter.WriteEndObject();
                break;

            case Mode.ByStream:
                jsonWriter.WritePropertyName("$m");
                jsonWriter.WriteValue("bs");
                jsonWriter.WritePropertyName("$c");
                jsonWriter.WriteValue(CommitPosition.GetValueOrDefault());
                jsonWriter.WritePropertyName("$s");
                jsonWriter.WriteStartArray();
                jsonWriter.WriteStartObject();
                jsonWriter.WritePropertyName(CatalogStream);
                jsonWriter.WriteValue(CatalogPosition);
                jsonWriter.WriteEndObject();
                if (!string.IsNullOrEmpty(DataStream))
                {
                    jsonWriter.WriteStartObject();
                    jsonWriter.WritePropertyName(DataStream);
                    jsonWriter.WriteValue(DataPosition);
                    jsonWriter.WriteEndObject();
                }

                jsonWriter.WriteEndArray();
                break;
            }

            if (extraMetaData != null)
            {
                foreach (var pair in extraMetaData)
                {
                    jsonWriter.WritePropertyName(pair.Key);
                    pair.Value.WriteTo(jsonWriter);
                }
            }

            jsonWriter.WriteEndObject();
        }
Exemple #5
0
    public void ShouldReturnFirstBefore(CommitPositionSequence sequence, CommitPosition expected)
    {
        var first = sequence.FirstBeforeGap();

        first.Should().Be(expected);
    }