public SynchronizationService(IQueryExecutor queryExecutor, IProcessingStrategyFactory strategyFactory, IQueryBuilder queryBuilder) { InitializeComponent(); this.queryExecutor = queryExecutor; this.strategyFactory = strategyFactory; this.queryBuilder = queryBuilder; }
private void InitializePrerequisites(JobDataMap dataMap) { try { this.queryBuilder = (IQueryBuilder)dataMap[QueryBuilderArgumentName]; this.queryExecutor = (IQueryExecutor)dataMap[QueryExecutorArgumentName]; this.processingStrategyFactory = (IProcessingStrategyFactory)dataMap[ProcessingStrategyFactoryArgumentName]; this.logger.Info("Initialized prerequisites for database synchronization."); } catch (Exception ex) { this.logger.FatalFormat("Initializing prerequisites failed: {0}", ex); throw ex; } }
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); } } }