public void Run()
        {
            using (var db = new DevelopmentHistoryDatabase("G:\\DATEV-269-histories.sqlite"))
            {
                var feedbackDatabase    = OpenDatabase("_import");
                var developerCollection = feedbackDatabase.GetDeveloperCollection();
                var eventsCollection    = feedbackDatabase.GetEventsCollection();
                foreach (var developer in developerCollection.FindAll())
                {
                    var workPeriod = developer.Id.ToString();
                    _numberOfSSTs = 0;
                    _numberOfOUs  = 0;
                    _errorMessages.Clear();
                    _logger.Info("Processing WorkPeriod {0}...", workPeriod);
                    foreach (
                        var completionEvent in
                        eventsCollection.GetEventStream(developer).OfType <CompletionEvent>())
                    {
                        var timestamp = completionEvent.TriggeredAt.GetValueOrDefault();
                        var ctx       = completionEvent.Context2;

                        Insert(db, workPeriod, timestamp, ctx);
                    }
                    _logger.Info(" > Inserted {0} SSTs and {1} OUs.", _numberOfSSTs, _numberOfOUs);
                    if (_errorMessages.Any())
                    {
                        _logger.Info(
                            " > {0} errors occured:\n     - {1}",
                            _errorMessages.Count,
                            string.Join("\n     - ", _errorMessages));
                    }
                }
            }
        }
        private void Insert(DevelopmentHistoryDatabase db, string workPeriod, DateTimeOffset timestamp, Context ctx)
        {
            var query  = GetQuery(ctx);
            var usages = GetObjectUsages(ctx);

            if (!usages.Any())
            {
                // No need to blow up the dataset with SST that don't contain any code. Most likely our
                // analysis failed to extract the context in these cases.
                return;
            }

            db.Insert(workPeriod, timestamp, ctx, query);
            _numberOfSSTs++;

            foreach (var usage in usages)
            {
                var isQuery = usage.Equals(query);
                db.Insert(workPeriod, timestamp, usage, isQuery);
                _numberOfOUs++;
            }
        }