Ejemplo n.º 1
0
        private static ReviewStatistics GetCopyOfReviewStatistics(LocaleDistributionItem localeDistributionItem)
        {
            var result = new ReviewStatistics();

            result.RatingDistribution = localeDistributionItem.ReviewStatistics.RatingDistribution.Select(
                item => new RatingDistributionItem {
                RatingValue = item.RatingValue, Count = item.Count
            })
                                        .ToList();

            result.TotalReviewCount = localeDistributionItem.ReviewStatistics.TotalReviewCount;

            return(result);
        }
Ejemplo n.º 2
0
        private static ReviewStatistics GetExternalReviewStatistics(string pid, LocaleDistributionItem nativeLocaleDistributionItem, LocaleDistributionItem combinedLocaleDistributionItem)
        {
            var result = new ReviewStatistics {
                RatingDistribution = new List <RatingDistributionItem>(5)
            };

            for (int i = 1; i <= 5; i++)
            {
                var nativeItemCount   = GetRatingDistributionItemCount(i, nativeLocaleDistributionItem);
                var combinedItemCount = GetRatingDistributionItemCount(i, combinedLocaleDistributionItem);

                if (combinedItemCount == null && nativeItemCount == null)
                {
                    continue;
                }

                if (nativeItemCount == null)
                {
                    nativeItemCount = 0;
                }

                if (combinedItemCount == null)
                {
                    combinedItemCount = 0;
                }

                if (combinedItemCount >= nativeItemCount)
                {
                    combinedItemCount = combinedItemCount - nativeItemCount;
                }
                else if (nativeItemCount > 0)
                {
                    combinedItemCount = 0;
                }

                var externalItemCount = combinedItemCount;

                result.RatingDistribution.Add(new RatingDistributionItem
                {
                    RatingValue = i,
                    Count       = externalItemCount.Value
                });
            }

            result.TotalReviewCount = result.RatingDistribution.Sum(rd => rd.Count);

            return(result);
        }
Ejemplo n.º 3
0
        //
        // Returns the statistics on the raised reviews
        //
        public static ReviewStatistics[] GetReviewStatistics(CommitReview[] reviewList, string workingDirectory, Simple credentials, Logging logger, StatisticGenerated statGenerated)
        {
            // Track our updates
            Object writeLock   = new object();
            int    reviewCount = 0;
            var    properties  = new List <ReviewStatistics>(reviewList.Length);

            // We need to spin through every review and pull out the information about each one
            logger.Log("Starting to pull out the review stats from generated reviews");
            ParallelLoopResult result = Parallel.ForEach(reviewList, new ParallelOptions {
                MaxDegreeOfParallelism = 16
            }, (thisReview, loopState) =>
            {
                // Get our properties
                ReviewStatistics reviewProperties = GetPropertiesOfReview(thisReview, workingDirectory, credentials, logger);
                if (reviewProperties == null)
                {
                    loopState.Stop();
                }

                // Continue?
                if (loopState.IsStopped == false)
                {
                    // Update
                    lock (writeLock)
                    {
                        logger.Log("Updating review properties");

                        // Update
                        properties.Add(reviewProperties);
                        statGenerated(++reviewCount);
                    }
                }
            });

            // How did we do?
            if (result.IsCompleted == false)
            {
                logger.Log("The review statistics completed unsuccessfully");
                return(null);
            }

            // Return our properties
            logger.Log("Created {0} review stats", properties.Count);
            return(properties.ToArray());
        }
Ejemplo n.º 4
0
        // Constructor for xml file end.
        public ProductRating(long pid, string generalLocaleString,
                             ReviewStatistics nativeReviewStatistics, ReviewStatistics externalReviewStatistics)
        {
            PID            = pid;
            LanguageString = generalLocaleString;

            NativeRatings = nativeReviewStatistics != null
                ? new RatingCounts(nativeReviewStatistics.RatingDistribution)
                : new RatingCounts();

            ExternalRatings = externalReviewStatistics != null
                ? new RatingCounts(externalReviewStatistics.RatingDistribution)
                : new RatingCounts();

            NativeTotalReviewCount   = nativeReviewStatistics != null ? nativeReviewStatistics.TotalReviewCount : 0;
            ExternalTotalReviewCount = externalReviewStatistics != null ? externalReviewStatistics.TotalReviewCount : 0;
        }
Ejemplo n.º 5
0
        private static IEnumerable <LocaleDistributionItem> GetAggregatedLocaleDistributionItems(
            ReviewStatistics reviewStatistics)
        {
            var distinctGeneralLocaleStrings = reviewStatistics.LocaleDistribution.Distinct(GeneralLocalLocaleDistributionItemComparerObject)
                                               .Select(item => GetGeneralLocaleString(item.DisplayLocale));

            var result = distinctGeneralLocaleStrings.Select(localeString =>
                                                             reviewStatistics.LocaleDistribution.Where(
                                                                 item => GetGeneralLocaleString(item.DisplayLocale).Equals(localeString, StringComparison.OrdinalIgnoreCase))
                                                             .Select(
                                                                 item =>
                                                                 new LocaleDistributionItem
            {
                DisplayLocale    = GetGeneralLocaleString(item.DisplayLocale),
                ReviewStatistics = item.ReviewStatistics
            })
                                                             .Aggregate((aggregate, next) => aggregate + next));

            return(result);
        }
Ejemplo n.º 6
0
        private ReviewStatistics ComputeExternalReviewStatistics(string pid, ReviewStatistics nativeReviewStatistics, ReviewStatistics reviewStatisticsNodeFromBazaarVoiceData)
        {
            var result = new ReviewStatistics();

            var resultLocaleDistributionList = new List <LocaleDistributionItem>();

            result.LocaleDistribution = resultLocaleDistributionList;

            foreach (var nativeLocaleDistributionItem in nativeReviewStatistics.LocaleDistribution ?? Enumerable.Empty <LocaleDistributionItem>())
            {
                var matchFound = false;

                foreach (var combinedLocaleDistributionItem in reviewStatisticsNodeFromBazaarVoiceData.LocaleDistribution ?? Enumerable.Empty <LocaleDistributionItem>())
                {
                    if (nativeLocaleDistributionItem.DisplayLocale.Equals(combinedLocaleDistributionItem.DisplayLocale, StringComparison.Ordinal))
                    {
                        matchFound = true;
                        break;
                    }
                }

                if (matchFound)
                {
                    continue;
                }

                throw new ApplicationException(
                          string.Format(
                              "There is a locale {0} in the native LocaleDistributionItem which doesn't exist in the combined LocaleDistributionItem. PID: {1}",
                              nativeLocaleDistributionItem.DisplayLocale, pid));
            }

            foreach (var combinedLocaleDistributionItem in reviewStatisticsNodeFromBazaarVoiceData.LocaleDistribution ?? Enumerable.Empty <LocaleDistributionItem>())
            {
                ReviewStatistics       resultReviewStatistics;
                LocaleDistributionItem foundNativeLocaleDistributionItem = null;

                foreach (var nativeLocaleDistributionItem in nativeReviewStatistics.LocaleDistribution ?? Enumerable.Empty <LocaleDistributionItem>())
                {
                    if (combinedLocaleDistributionItem.DisplayLocale.Equals(nativeLocaleDistributionItem.DisplayLocale, StringComparison.Ordinal))
                    {
                        foundNativeLocaleDistributionItem = nativeLocaleDistributionItem;
                        break;
                    }
                }

                if (foundNativeLocaleDistributionItem != null)
                {
                    Log.DebugFormat("GetExternalReviewStatistics. PID: {0}", pid);
                    resultReviewStatistics = GetExternalReviewStatistics(pid, foundNativeLocaleDistributionItem, combinedLocaleDistributionItem);
                }
                else
                {
                    resultReviewStatistics = GetCopyOfReviewStatistics(combinedLocaleDistributionItem);
                }

                var resultLocaleDistributionItem = new LocaleDistributionItem
                {
                    DisplayLocale    = combinedLocaleDistributionItem.DisplayLocale,
                    ReviewStatistics = resultReviewStatistics
                };

                resultLocaleDistributionList.Add(resultLocaleDistributionItem);
            }

            return(result);
        }