public ServerHistoryProvider Create(CharacterName characterName)
        {
            if (characterName == null)
            {
                throw new ArgumentNullException(nameof(characterName));
            }
            var persistent            = persistentCollection.GetObject <PersistentModel.ServerHistory>(characterName.Normalized);
            var wurmCharacterLogFiles = wurmLogFiles.GetForCharacter(characterName);

            return(new ServerHistoryProvider(
                       characterName,
                       persistent,
                       wurmLogsMonitor,
                       wurmLogsHistory,
                       wurmServerList,
                       logger,
                       wurmCharacterLogFiles,
                       internalEventAggregator));
        }
        public virtual CharacterMonthlyLogHeuristics GetForCharacter(CharacterName characterName)
        {
            if (characterName == null)
            {
                throw new ArgumentNullException(nameof(characterName));
            }

            CharacterMonthlyLogHeuristics heuristics;

            if (!cache.TryGetValue(characterName, out heuristics))
            {
                IPersistent <WurmCharacterLogsEntity> persistentData =
                    heuristicsPersistentCollection.GetObject <WurmCharacterLogsEntity>(characterName.Normalized);
                heuristics = new CharacterMonthlyLogHeuristics(
                    persistentData,
                    monthlyHeuristicsExtractorFactory,
                    wurmLogFiles.GetForCharacter(characterName));
                cache.Add(characterName, heuristics);
            }
            return(heuristics);
        }