Example #1
0
        public void GenerateReport()
        {
            _searchResults = new List <AnalyzerSearchResult>();
            foreach (AnalyzerUserLog userLog in _logFileCache.UserLogCache)
            {
                AnalyzerSearchResult result = userLog.SearchVoiceCommandOccurences(_searchVoiceCommandText, false, _originatingVoiceCommandTextWords, _secondOriginatingVoiceCommandTextWords);
                _searchResults.Add(result);
            }
            //searchResults.OrderBy(p => p.OccurencesPerHour).ToList().ForEach(p => Console.WriteLine(p.Description));
            _totalOccurences = _searchResults.Sum(p => p.TotalOccurences);

            _totalDuration = new TimeSpan();
            _searchResults.ForEach(p => _totalDuration = _totalDuration.Add(p.Duration));

            _totalTimeWasted = new TimeSpan();
            _searchResults.ForEach(p => _totalTimeWasted = _totalTimeWasted.Add(p.TimeWasted));

            _totalTimeWastedPercentage = Math.Round(((_totalTimeWasted.TotalSeconds / _totalDuration.TotalSeconds) * 100), 2);
        }
Example #2
0
        public AnalyzerSearchResult SearchVoiceCommandOccurences(List <string> searchVoiceCommandText, bool caseSensitive)
        {
            List <AnalyzerLogLine> occurences = new List <AnalyzerLogLine>();
            List <string>          searchVoiceCommandTextLower = new List <string>();

            searchVoiceCommandText.ForEach(p => searchVoiceCommandTextLower.Add(p.ToLower()));
            foreach (AnalyzerLogLine line in this)
            {
                string        valueToSearch    = caseSensitive ? line.VoiceCommand : line.VoiceCommand.ToLower();
                List <string> valueToSearchFor = caseSensitive ? searchVoiceCommandText : searchVoiceCommandTextLower;
                bool          match            = false;
                foreach (string value in valueToSearchFor)
                {
                    if (valueToSearch.Contains(value))
                    {
                        match = true;
                        break;
                    }
                }
                if (!match)
                {
                    continue;
                }
                occurences.Add(line);
            }


            AnalyzerSearchResult result = new AnalyzerSearchResult(_filePath, searchVoiceCommandText, null, occurences, _duration, new TimeSpan());

            result.Description = string.Format(
                "{0} '{1}' for {2} in {2}:{4}:{5}:{6}:{7} at {8}/hour",
                result.TotalOccurences.ToString().PadRight(10),
                searchVoiceCommandText,
                _fileName,
                (_duration.Days.ToString() + "D").PadRight(5),
                (_duration.Hours.ToString() + "H").PadRight(5),
                (_duration.Minutes.ToString() + "M").PadRight(5),
                (_duration.Seconds.ToString() + "S").PadRight(5),
                (_duration.Milliseconds.ToString() + "MS").PadRight(5),
                result.OccurencesPerHour.ToString().PadRight(5));
            result.Description = string.Format("'{0}' for {1}", searchVoiceCommandText, _fileName);
            return(result);
        }
Example #3
0
        public AnalyzerSearchResult SearchVoiceCommandOccurences(
            List <string> searchVoiceCommandText,
            bool caseSensitive,
            List <string> originatingVoiceCommandTextWords,
            List <string> secondOriginatingVoiceCommandTextWords)
        {
            List <AnalyzerLogLine> occurences = new List <AnalyzerLogLine>();
            List <string>          searchVoiceCommandTextLower = new List <string>();

            searchVoiceCommandText.ForEach(p => searchVoiceCommandTextLower.Add(p.ToLower()));
            TimeSpan totalTimeWasted = new TimeSpan();
            List <AnalyzerLogLine> originatingVoiceCommands       = new List <AnalyzerLogLine>();
            List <AnalyzerLogLine> secondOriginatingVoiceCommands = new List <AnalyzerLogLine>();

            for (int i = 0; i < this.Count; i++)
            {
                AnalyzerLogLine line             = this[i];
                string          valueToSearch    = caseSensitive ? line.VoiceCommand : line.VoiceCommand.ToLower();
                List <string>   valueToSearchFor = caseSensitive ? searchVoiceCommandText : searchVoiceCommandTextLower;
                bool            match            = false;
                foreach (string value in valueToSearchFor)
                {
                    if (valueToSearch.Contains(value))
                    {
                        match = true;
                        break;
                    }
                }
                if (!match)
                {
                    continue;
                }
                occurences.Add(line);
                if (originatingVoiceCommandTextWords == null)
                {
                    continue;
                }
                int             previousLineIndex      = i;
                AnalyzerLogLine originatingLine        = GetOriginatingLine(caseSensitive, i, originatingVoiceCommandTextWords);
                AnalyzerLogLine nextOriginatingLogLine = GetNextOriginatingLine(caseSensitive, i, originatingVoiceCommandTextWords);
                if (originatingLine != null && nextOriginatingLogLine != null)
                {
                    TimeSpan commandTimeWasted = nextOriginatingLogLine.TimeStamp.Subtract(originatingLine.TimeStamp);
                    totalTimeWasted = totalTimeWasted.Add(commandTimeWasted);
                    originatingVoiceCommands.Add(originatingLine);
                }
                AnalyzerLogLine secondOriginatingLine = GetOriginatingLine(caseSensitive, i, secondOriginatingVoiceCommandTextWords);
                if (secondOriginatingLine != null)
                {
                    secondOriginatingVoiceCommands.Add(secondOriginatingLine);
                }
            }

            AnalyzerSearchResult result = new AnalyzerSearchResult(_userId.ToString(), searchVoiceCommandText, null, occurences, _totalDuration, totalTimeWasted);
            User   user       = UserDictionary.Instance[_userId];
            string userString = user == null?_userId.ToString() : string.Format("{0}({1})", user.UserName, _userId);

            result.Description = string.Format(
                "{0} '{1}' for user {2} in {3}:{4}:{5}:{6}:{7} at {8}/hour. Time wasted: {9}/{10} {11}%",
                result.TotalOccurences.ToString().PadRight(10),
                searchVoiceCommandText,
                userString.PadRight(25),
                (_totalDuration.Days.ToString() + "D").PadRight(5),
                (_totalDuration.Hours.ToString() + "H").PadRight(5),
                (_totalDuration.Minutes.ToString() + "M").PadRight(5),
                (_totalDuration.Seconds.ToString() + "S").PadRight(5),
                (_totalDuration.Milliseconds.ToString() + "MS").PadRight(5),
                result.OccurencesPerHour.ToString().PadRight(5),
                result.TimeWasted,
                result.Duration,
                result.PercentageTimeWasted);

            result.OriginatingVoiceCommands.Clear();
            originatingVoiceCommands.ForEach(p => result.OriginatingVoiceCommands.Add(p));
            result.SecondOriginatingVoiceCommands.Clear();
            secondOriginatingVoiceCommands.ForEach(p => result.SecondOriginatingVoiceCommands.Add(p));

            return(result);
        }