/// <summary>
        /// Builds the <see cref="ISportEvent" /> derived class based on specified id
        /// </summary>
        /// <typeparam name="T">A <see cref="ISportEvent" /> derived type</typeparam>
        /// <param name="eventId">The identifier</param>
        /// <param name="sportId">The sport identifier</param>
        /// <param name="cultures">The cultures used for returned instance</param>
        /// <param name="exceptionStrategy">A <see cref="ExceptionHandlingStrategy"/> enum member specifying how the build instance will handle potential exceptions</param>
        /// <returns>The constructed <see cref="ICompetition"/> derived instance</returns>
        public T BuildSportEvent <T>(URN eventId, URN sportId, IEnumerable <CultureInfo> cultures, ExceptionHandlingStrategy exceptionStrategy) where T : ISportEvent
        {
            ISportEvent sportEvent;

            switch (eventId.TypeGroup)
            {
            case ResourceTypeGroup.MATCH:
            {
                if (sportId != null && _soccerSportUrns.Contains(sportId))
                {
                    sportEvent = new SoccerEvent(eventId, sportId, this, _sportEventCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy);
                }
                else
                {
                    sportEvent = new Match(eventId, sportId, this, _sportEventCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy);
                }
                break;
            }

            case ResourceTypeGroup.STAGE:
            {
                sportEvent = new Stage(eventId, sportId, this, _sportEventCache, _sportDataCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.BASIC_TOURNAMENT:
            {
                sportEvent = new BasicTournament(eventId, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.TOURNAMENT:
            {
                sportEvent = new Tournament(eventId, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.SEASON:
            {
                sportEvent = new Season(eventId, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.DRAW:
            {
                sportEvent = new Draw(eventId, sportId, _sportEventCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.LOTTERY:
            {
                sportEvent = new Lottery(eventId, sportId, _sportEventCache, _sportDataCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.UNKNOWN:
            {
                ExecutionLog.Warn($"Received entity with unknown resource type group: id={eventId}, sportId={sportId}");
                sportEvent = new SportEvent(eventId, sportId, null, _sportEventCache, cultures, exceptionStrategy);
                break;
            }

            default:
                throw new ArgumentException($"ResourceTypeGroup:{eventId.TypeGroup} is not supported", nameof(eventId));
            }
            return((T)sportEvent);
        }
示例#2
0
        /// <summary>
        /// Builds the <see cref="ISportEvent" /> derived class based on specified id
        /// </summary>
        /// <typeparam name="T">A <see cref="ISportEvent" /> derived type</typeparam>
        /// <param name="id">The identifier</param>
        /// <param name="sportId">The sport identifier</param>
        /// <param name="cultures">The cultures used for returned instance</param>
        /// <param name="exceptionStrategy">A <see cref="ExceptionHandlingStrategy"/> enum member specifying how the build instance will handle potential exceptions</param>
        /// <returns>The constructed <see cref="ICompetition"/> derived instance</returns>
        public T BuildSportEvent <T>(URN id, URN sportId, IEnumerable <CultureInfo> cultures, ExceptionHandlingStrategy exceptionStrategy) where T : ISportEvent
        {
            ISportEvent sportEvent;

            switch (id.TypeGroup)
            {
            case ResourceTypeGroup.MATCH:
            {
                if (sportId != null && sportId.Equals(URN.Parse("sr:sport:1")))
                {
                    sportEvent = new SoccerEvent(id, sportId, this, _sportEventCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy);
                }
                else
                {
                    sportEvent = new Match(id, sportId, this, _sportEventCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy);
                }
                break;
            }

            case ResourceTypeGroup.STAGE:
            {
                sportEvent = new Stage(id, sportId, this, _sportEventCache, _sportDataCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.BASIC_TOURNAMENT:
            {
                sportEvent = new BasicTournament(id, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.TOURNAMENT:
            {
                sportEvent = new Tournament(id, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.SEASON:
            {
                sportEvent = new Season(id, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.DRAW:
            {
                sportEvent = new Draw(id, sportId, _sportEventCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.LOTTERY:
            {
                sportEvent = new Lottery(id, sportId, _sportEventCache, _sportDataCache, cultures, exceptionStrategy);
                break;
            }

            case ResourceTypeGroup.UNKNOWN:
            {
                sportEvent = new SportEvent(id, sportId, null, _sportEventCache, cultures, exceptionStrategy);
                break;
            }

            default:
                throw new ArgumentException($"ResourceTypeGroup:{id.TypeGroup} is not supported", nameof(id));
            }
            return((T)sportEvent);
        }