예제 #1
0
        private IEnumerator <TEntry> GetEntryEnumerator(IQueryExecutor queryExecutor, EntryCollectionPropertyAttribute propertyAttribute, string filter)
        {
            if (propertyAttribute.MatchingRule == MatchingRuleType.Children)
            {
                return(queryExecutor.ExecuteQuery <TEntry>(_entryObject.Entry, propertyAttribute.Scope, filter));
            }

            return(queryExecutor.ExecuteQuery <TEntry>(filter));
        }
        private bool RunValidationQueries(NightWatchmanSettings settings, CommonExtractionContext context)
        {
            foreach (var query in settings.Queries)
            {
                if (!string.IsNullOrEmpty(query.ValidationQuery))
                {
                    var validationParameters = new[]
                    {
                        new SqlParameter("@startdate", SqlDbType.DateTime)
                        {
                            Value = context.StartDate
                        },
                        new SqlParameter("@enddate", SqlDbType.DateTime)
                        {
                            Value = context.EndtDate
                        }
                    };

                    var validationData = queryExecutor.ExecuteQuery(
                        query.ValidationQuery, "Validate_" + query.Name, validationParameters);
                    if (!ValidateQueryResult(query, validationData))
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
        public async static Task ExecuteSynchronization(IQueryExecutor queryExecutor, IQueryBuilder queryBuilder,
            IProcessingStrategyFactory processingStrategyFactory)
        {
            var allQueries = GetQueriesForGameObjects(queryBuilder);

            foreach (var query in allQueries)
            {
                try
                {
                    var queryResponse = await queryExecutor.ExecuteQuery(query);
                    var currentQueryProcessingStrategy = processingStrategyFactory.GetProcessingStrategy(queryResponse.QueryObjectType);
                    await currentQueryProcessingStrategy.ProcessQueryResponse(queryResponse);
                }
                catch (Exception ex)
                {
                    string fatalFormat = string.Format("Exception caught while trying to synchronize {0}s to the database: {1}",
                            query.ObjectType, ex);
                    logger.FatalFormat(fatalFormat);
                    EmailNotifier.SendExceptionEmail(ExceptionEmailSubject, fatalFormat);
                }
            }
        }
        public async static Task ExecuteSynchronization(IQueryExecutor queryExecutor, IQueryBuilder queryBuilder,
                                                        IProcessingStrategyFactory processingStrategyFactory)
        {
            var allQueries = GetQueriesForGameObjects(queryBuilder);

            foreach (var query in allQueries)
            {
                try
                {
                    var queryResponse = await queryExecutor.ExecuteQuery(query);

                    var currentQueryProcessingStrategy = processingStrategyFactory.GetProcessingStrategy(queryResponse.QueryObjectType);
                    await currentQueryProcessingStrategy.ProcessQueryResponse(queryResponse);
                }
                catch (Exception ex)
                {
                    string fatalFormat = string.Format("Exception caught while trying to synchronize {0}s to the database: {1}",
                                                       query.ObjectType, ex);
                    logger.FatalFormat(fatalFormat);
                    EmailNotifier.SendExceptionEmail(ExceptionEmailSubject, fatalFormat);
                }
            }
        }