public void Handle(GeneralQueryResult message)
 {
     if (message.Dtos.Any())
     {
         IStorage <IndexProgress> storage = _profileReadonly.Get <IndexProgress>(typeof(IndexProgress).Name);
         storage.Clear();
         storage.Add(new IndexProgress
         {
             LastGeneralId = message.Dtos[0].ID.GetValueOrDefault(),
         });
         Send(new CommentQuery
         {
             Hql =
                 string.Format(
                     "select c from Comment c join c.General g left join g.ParentProject p where g.EntityType IN ({0}) and (p is null or p.DeleteDate is null) order by c desc skip 0 take 1",
                     _entityTypeProvider.QueryableEntityTypesIdSqlString),
             IgnoreMessageSizeOverrunFailure = true,
             Params = new object[] {}
         });
     }
     else
     {
         MarkAsComplete();
     }
 }
 public void Handle(GeneralQueryResult message)
 {
     if (message.Dtos.Any())
     {
         IStorage <IndexProgress> storage = _profile.Get <IndexProgress>(typeof(IndexProgress).Name);
         storage.Clear();
         storage.Add(new IndexProgress
         {
             LastGeneralId = message.Dtos[0].ID.GetValueOrDefault(),
         });
         Send(new CommentQuery
         {
             Hql =
                 string.Format(
                     "select c from Comment c join c.General g left join g.ParentProject p where g.EntityType IN ({0}) and (p is null or p.DeleteDate is null) order by c desc skip 0 take 1",
                     _entityTypeProvider.QueryableEntityTypesIdSqlString),
             IgnoreMessageSizeOverrunFailure = true,
             Params = new object[] { }
         });
     }
     else
     {
         _documentIndexProvider.ShutdownDocumentIndexes(_pluginContext.AccountName, new DocumentIndexShutdownSetup(forceShutdown: true, cleanStorage: true));
         _log.Info("Finished rebuilding indexes");
         MarkAsComplete();
     }
 }
        public void Handle(GeneralQueryResult message)
        {
            if (message.Dtos.Any())
            {
                if (Data.SkipGenerals % 1000 == 0)
                {
                    _entityIndexer.OptimizeGeneralIndex();
                    _entityIndexer.OptimizeAssignableIndex();
                    _entityIndexer.OptimizeTestCaseIndex();
                }

                Data.GeneralsRetrievedCount += message.Dtos.Length;

                foreach (var general in message.Dtos)
                {
                    _entityIndexer.AddGeneralIndex(general);
                }

                var assignables = message.Dtos.Where(g => _entityTypesProvider.IsAssignable(g.EntityTypeID)).Select(generalDto => generalDto.GeneralID.GetValueOrDefault()).ToArray();
                if (assignables.Any())
                {
                    Send(new AssignableQuery {
                        Hql = string.Format(AssignablesHql, string.Join(",", assignables)), IgnoreMessageSizeOverrunFailure = true, Params = _param
                    });
                }

                var testCases = message.Dtos.Where(g => _entityTypesProvider.IsTestCase(g.EntityTypeID)).Select(generalDto => generalDto.GeneralID.GetValueOrDefault()).ToArray();
                if (testCases.Any())
                {
                    Send(new TestCaseQuery {
                        Hql = string.Format(TestCaseHql, string.Join(",", testCases)), IgnoreMessageSizeOverrunFailure = true, Params = _param
                    });
                }

                if (Data.GeneralsRetrievedCount == message.QueryResultCount)
                {
                    Data.GeneralsRetrievedCount = 0;
                    Data.SkipGenerals          += PageSize;

                    Send(new GeneralQuery {
                        Hql = string.Format(GeneralsHql, Data.SkipGenerals, PageSize), IgnoreMessageSizeOverrunFailure = true, Params = _param
                    });
                }
            }
            else
            {
                _entityIndexer.OptimizeGeneralIndex();
                _entityIndexer.OptimizeAssignableIndex();
                _entityIndexer.OptimizeTestCaseIndex();
                Data.CommentsRetrievedCount = 0;
                Data.GeneralsRetrievedCount = 0;
                Data.SkipGenerals           = 0;
                Send(new CommentQuery {
                    Hql = string.Format(CommentsHql, Data.SkipComments, PageSize), IgnoreMessageSizeOverrunFailure = true, Params = _param
                });
            }
        }
示例#4
0
 public void Handle(GeneralQueryResult message)
 {
     _generalsIndexing.Handle(message);
 }