private void AddPlayerProfile(PlayerProfileDTO item, URN competitorId, CultureInfo culture, bool useSemaphore) { if (item == null) { return; } if (_cache.Contains(item.Id.ToString())) { try { var ci = (PlayerProfileCI)_cache.Get(item.Id.ToString()); if (useSemaphore) { _semaphoreCacheMerge.Wait(); } ci?.Merge(item, competitorId, culture); } catch (Exception ex) { ExecutionLog.LogError($"Error adding player profile for id={item.Id}, dto type={item.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.", ex); } finally { if (useSemaphore && !_isDisposed) { _semaphoreCacheMerge.Release(); } } } else { _cache.Add(item.Id.ToString(), new PlayerProfileCI(item, competitorId, culture, _dataRouterManager), GetCorrectCacheItemPolicy(item.Id)); } }
private void AddPlayerProfile(ExportablePlayerProfileCI item) { if (_cache.Contains(item.Id)) { try { var ci = (PlayerProfileCI)_cache.Get(item.Id); _semaphoreCacheMerge.Wait(); ci?.Import(item); } catch (Exception ex) { ExecutionLog.LogError($"Error importing player profile for id={item.Id}.", ex); } finally { if (!_isDisposed) { _semaphoreCacheMerge.Release(); } } } else { _cache.Add(item.Id, new PlayerProfileCI(item, _dataRouterManager), GetCorrectCacheItemPolicy(URN.Parse(item.Id))); } }
private void AddCompetitor(ExportableCompetitorCI item) { if (_cache.Contains(item.Id)) { var itemId = URN.Parse(item.Id); try { var ci = (CompetitorCI)_cache.Get(item.Id); WaitTillIdIsAvailable(_mergeUrns, itemId); ci?.Import(item); } catch (Exception ex) { ExecutionLog.LogError(ex, $"Error importing competitor for id={item.Id}."); } finally { if (!_isDisposed) { ReleaseId(_mergeUrns, itemId); } } } else { if (!string.IsNullOrEmpty(item.Id)) { _cache.Add(item.Id, new CompetitorCI(item, _dataRouterManager), GetCorrectCacheItemPolicy(URN.Parse(item.Id))); } } }
private void AddCompetitorProfile(URN id, SimpleTeamProfileDTO item, CultureInfo culture, bool useSemaphore) { if (_cache.Contains(id.ToString())) { try { var ci = (CompetitorCI)_cache.Get(id.ToString()); if (useSemaphore) { _semaphoreCacheMerge.Wait(); } ci?.Merge(item, culture); } catch (Exception ex) { ExecutionLog.LogError($"Error adding competitor for id={id}, dto type={item?.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.", ex); } finally { if (useSemaphore && !_isDisposed) { _semaphoreCacheMerge.Release(); } } } else { _cache.Add(id.ToString(), new CompetitorCI(item, culture, _dataRouterManager), GetCorrectCacheItemPolicy(id)); } }
/// <summary> /// Asynchronously gets a <see cref="ITeamCompetitor" /> representing away competitor of the match associated with the current instance /// </summary> /// <returns>A <see cref="Task{ITeamCompetitor}"/> representing the retrieval operation</returns> public async Task <ITeamCompetitor> GetAwayCompetitorAsync() { var matchCI = (IMatchCI)SportEventCache.GetEventCacheItem(Id); if (matchCI == null) { ExecutionLog.LogDebug($"Missing data. No match cache item for id={Id}."); return(null); } var items = ExceptionStrategy == ExceptionHandlingStrategy.THROW ? await matchCI.GetCompetitorsAsync(Cultures).ConfigureAwait(false) : await new Func <IEnumerable <CultureInfo>, Task <IEnumerable <URN> > >(matchCI.GetCompetitorsAsync).SafeInvokeAsync(Cultures, ExecutionLog, GetFetchErrorMessage("Competitors")).ConfigureAwait(false); if (items == null) { return(null); } var competitorUrns = items.ToList(); if (competitorUrns.Count == 2) { return(await _sportEntityFactory.BuildTeamCompetitorAsync(competitorUrns[1], Cultures, matchCI).ConfigureAwait(false)); } ExecutionLog.LogError($"Received {competitorUrns.Count} competitors for match[Id = {Id}]. Match can have only 2 competitors."); throw new InvalidOperationException($"Invalid number of competitors. Match must have exactly 2 competitors, received {competitorUrns.Count}"); }
private void AddPlayerProfile(ExportablePlayerProfileCI item) { if (_cache.Contains(item.Id)) { var itemId = URN.Parse(item.Id); try { var ci = (PlayerProfileCI)_cache.Get(item.Id); WaitTillIdIsAvailable(_mergeUrns, itemId); ci?.Import(item); } catch (Exception ex) { ExecutionLog.LogError(ex, $"Error importing player profile for id={item.Id}."); } finally { if (!_isDisposed) { ReleaseId(_mergeUrns, itemId); } } } else { _cache.Add(item.Id, new PlayerProfileCI(item, _dataRouterManager), GetCorrectCacheItemPolicy(URN.Parse(item.Id))); } }
private async Task AddPlayerProfileAsync(PlayerProfileDTO item, URN competitorId, CultureInfo culture, bool useSemaphore) { if (item == null) { return; } if (_cache.Contains(item.Id.ToString())) { try { var ci = (PlayerProfileCI)_cache.Get(item.Id.ToString()); if (useSemaphore) { await WaitTillIdIsAvailableAsync(_mergeUrns, item.Id).ConfigureAwait(false); } ci?.Merge(item, competitorId, culture); } catch (Exception ex) { ExecutionLog.LogError(ex, $"Error adding player profile for id={item.Id}, dto type={item.GetType().Name} and lang={culture.TwoLetterISOLanguageName}."); } finally { if (useSemaphore && !_isDisposed) { await ReleaseIdAsync(_mergeUrns, item.Id).ConfigureAwait(false); } } } else { _cache.Add(item.Id.ToString(), new PlayerProfileCI(item, competitorId, culture, _dataRouterManager), GetCorrectCacheItemPolicy(item.Id)); } }
private void AddPlayerCompetitor(PlayerCompetitorDTO item, URN competitorId, CultureInfo culture, bool useSemaphore) { if (item == null) { return; } if (_cache.Contains(item.Id.ToString())) { try { if (item.Id.Type.Equals(SdkInfo.PlayerProfileIdentifier, StringComparison.InvariantCultureIgnoreCase)) { var ci = (PlayerProfileCI)_cache.Get(item.Id.ToString()); if (useSemaphore) { WaitTillIdIsAvailable(_mergeUrns, item.Id); } ci?.Merge(item, competitorId, culture); } else { var ci = (CompetitorCI)_cache.Get(item.Id.ToString()); if (useSemaphore) { WaitTillIdIsAvailable(_mergeUrns, item.Id); } ci?.Merge(item, culture); } } catch (Exception ex) { ExecutionLog.LogError(ex, $"Error adding player profile for id={item.Id}, dto type={item.GetType().Name} and lang={culture.TwoLetterISOLanguageName}."); } finally { if (useSemaphore && !_isDisposed) { ReleaseId(_mergeUrns, item.Id); } } } else { if (item.Id.Type.Equals(SdkInfo.PlayerProfileIdentifier, StringComparison.InvariantCultureIgnoreCase)) { _cache.Add(item.Id.ToString(), new PlayerProfileCI(item, competitorId, culture, _dataRouterManager), GetCorrectCacheItemPolicy(item.Id)); } else { _cache.Add(item.Id.ToString(), new CompetitorCI(item, culture, _dataRouterManager), GetCorrectCacheItemPolicy(item.Id)); } } }
private void AddTeamCompetitor(URN id, TeamCompetitorDTO item, CultureInfo culture, bool useSemaphore) { if (_cache.Contains(id.ToString())) { try { var ci = (CompetitorCI)_cache.Get(id.ToString()); var teamCI = ci as TeamCompetitorCI; if (teamCI != null) { if (useSemaphore) { _semaphoreCacheMerge.Wait(); } teamCI.Merge(item, culture); } else { if (useSemaphore) { _semaphoreCacheMerge.Wait(); } teamCI = new TeamCompetitorCI(ci); teamCI.Merge(item, culture); _cache.Set(id.ToString(), teamCI, GetCorrectCacheItemPolicy(id)); } } catch (Exception ex) { ExecutionLog.LogError($"Error adding team competitor for id={id}, dto type={item?.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.", ex); } finally { if (useSemaphore) { if (!_isDisposed) { _semaphoreCacheMerge.Release(); } } } } else { _cache.Add(id.ToString(), new TeamCompetitorCI(item, culture, _dataRouterManager), GetCorrectCacheItemPolicy(id)); } if (item?.Players != null && item.Players.Any()) { foreach (var player in item.Players) { AddPlayerCompetitor(player, item.Id, culture, false); } } }
private async Task AddTeamCompetitorAsync(URN id, TeamCompetitorDTO item, CultureInfo culture, bool useSemaphore) { if (_cache.Contains(id.ToString())) { try { var ci = (CompetitorCI)_cache.Get(id.ToString()); var teamCI = ci == null ? (TeamCompetitorCI)_cache.Get(id.ToString()) : ci as TeamCompetitorCI; if (teamCI != null) { if (useSemaphore) { await WaitTillIdIsAvailableAsync(_mergeUrns, id).ConfigureAwait(false); } teamCI.Merge(item, culture); } else { if (useSemaphore) { await WaitTillIdIsAvailableAsync(_mergeUrns, id).ConfigureAwait(false); } teamCI = new TeamCompetitorCI(ci); teamCI.Merge(item, culture); _cache.Set(id.ToString(), teamCI, GetCorrectCacheItemPolicy(id)); } } catch (Exception ex) { ExecutionLog.LogError(ex, $"Error adding team competitor for id={id}, dto type={item?.GetType().Name} and lang={culture.TwoLetterISOLanguageName}."); } finally { if (useSemaphore && !_isDisposed) { await ReleaseIdAsync(_mergeUrns, id).ConfigureAwait(false); } } } else { var teamCompetitor = new TeamCompetitorCI(item, culture, _dataRouterManager); _cache.Add(id.ToString(), teamCompetitor, GetCorrectCacheItemPolicy(id)); } if (item?.Players != null && item.Players.Any()) { var tasks = item.Players.Select(s => AddPlayerCompetitorAsync(s, item.Id, culture, false)); await Task.WhenAll(tasks).ConfigureAwait(false); } }
private void AddCompetitorProfile(URN id, CompetitorProfileDTO item, CultureInfo culture, bool useSemaphore) { if (_cache.Contains(id.ToString())) { try { var ci = (CompetitorCI)_cache.Get(id.ToString()); if (useSemaphore) { WaitTillIdIsAvailable(_mergeUrns, id); } ci?.Merge(item, culture); } catch (Exception ex) { ExecutionLog.LogError(ex, $"Error adding competitor for id={id}, dto type={item?.GetType().Name} and lang={culture.TwoLetterISOLanguageName}."); } finally { if (useSemaphore && !_isDisposed) { ReleaseId(_mergeUrns, id); } } if (item?.Players != null && item.Players.Any()) { foreach (var player in item.Players) { AddPlayerProfile(player, id, culture, false); } } } else { _cache.Add(id.ToString(), new CompetitorCI(item, culture, _dataRouterManager), GetCorrectCacheItemPolicy(id)); if (item.Players != null && item.Players.Any()) { foreach (var player in item.Players) { AddPlayerProfile(player, id, culture, false); } } } }
private async Task AddTeamCompetitorAsync(ExportableTeamCompetitorCI item) { if (_cache.Contains(item.Id)) { var itemId = URN.Parse(item.Id); try { var ci = (CompetitorCI)_cache.Get(item.Id); var teamCI = ci == null ? (TeamCompetitorCI)_cache.Get(item.Id) : ci as TeamCompetitorCI; if (teamCI != null) { await WaitTillIdIsAvailableAsync(_mergeUrns, itemId).ConfigureAwait(false); teamCI.Import(item); } else { await WaitTillIdIsAvailableAsync(_mergeUrns, itemId).ConfigureAwait(false); teamCI = new TeamCompetitorCI(ci); teamCI.Import(item); _cache.Set(item.Id, teamCI, GetCorrectCacheItemPolicy(URN.Parse(item.Id))); } } catch (Exception ex) { ExecutionLog.LogError(ex, $"Error importing team competitor for id={item.Id}."); } finally { if (!_isDisposed) { await ReleaseIdAsync(_mergeUrns, itemId).ConfigureAwait(false); } } } else { _cache.Add(item.Id, new TeamCompetitorCI(item, _dataRouterManager), GetCorrectCacheItemPolicy(URN.Parse(item.Id))); } }
private void AddTeamCompetitor(ExportableTeamCompetitorCI item) { if (_cache.Contains(item.Id)) { try { var ci = (CompetitorCI)_cache.Get(item.Id); var teamCI = ci as TeamCompetitorCI; if (teamCI != null) { _semaphoreCacheMerge.Wait(); teamCI.Import(item); } else { _semaphoreCacheMerge.Wait(); teamCI = new TeamCompetitorCI(ci); teamCI.Import(item); _cache.Set(item.Id, teamCI, GetCorrectCacheItemPolicy(URN.Parse(item.Id))); } } catch (Exception ex) { ExecutionLog.LogError($"Error importing team competitor for id={item.Id}.", ex); } finally { if (!_isDisposed) { _semaphoreCacheMerge.Release(); } } } else { _cache.Add(item.Id, new TeamCompetitorCI(item, _dataRouterManager), GetCorrectCacheItemPolicy(URN.Parse(item.Id))); } }