private static ITrackerReportResults ToMongoAggregationResult(IReportSpecification specification, AggregateResult queryResults) { const string utcDateKey = "UtcDateTime"; const string totalKey = "_Total"; const string occurrenceKey = "_Occurrence"; const string KEY_FILTER = "KeyFilter"; const string ID_KEY = "_id"; const string TYPE_KEY = "Type"; var results = new MongoTrackerResults(specification); if (!queryResults.ResultDocuments.Any()) { return(results); } int count = queryResults.ResultDocuments.Count(); List <string> names = queryResults.ResultDocuments.First().Names.Where(x => !(x == utcDateKey || x == "_id")).ToList(); foreach (BsonDocument document in queryResults.ResultDocuments) { BsonDocument dateTime = document[utcDateKey].AsBsonDocument; long total = document[totalKey].ToInt64(); long occurrence = document[occurrenceKey].ToInt64(); string typeName = document[ID_KEY][TYPE_KEY].AsString; string keyFilter = document[ID_KEY][KEY_FILTER].ToString(); DateTime utcDateTime = ConvertDateTimeDocumentToDateTime(dateTime); IAggregationBuildableResult trackerResult = results.AddAggregationResult(utcDateTime, typeName, keyFilter, occurrence, total); var relevantNames = names.Where(x => x.GetFullyQualifiedNameFromFormattedString().StartsWith(typeName)); foreach (string key in relevantNames) { string fullyQualifiedName = key.GetFullyQualifiedNameFromFormattedString(); BsonValue measurementResult = document[key]; IMeasurement measurement = specification.Counters.FirstOrDefault(x => x.FullyQualifiedPropertyName == fullyQualifiedName); if (measurement != null) { trackerResult.AddMeasurementResult(measurement, measurementResult.ToString()); } } } return(results); }
private static ITrackerReportResults ToMongoAggregationResult(IReportSpecification specification, AggregateResult result) { const string utcDateKey = "UtcDateTime"; const string totalKey = "_Total"; const string occurrenceKey = "_Occurrence"; int count = result.ResultDocuments.Count(); List<string> names = result.ResultDocuments.First().Names.Where(x => !(x == utcDateKey || x == "_id")).ToList(); var results = new MongoTrackerResults(specification); foreach (BsonDocument document in result.ResultDocuments) { BsonDocument dateTime = document[utcDateKey].AsBsonDocument; long total = document[totalKey].ToInt64(); long occurrence = document[occurrenceKey].ToInt64(); DateTime utcDateTime = ConvertDateTimeDocumentToDateTime(dateTime); IAggregationResult trackerResult = results.AddAggregationResult(utcDateTime, occurrence, total); foreach (string key in names) { string fullyQualifiedName = key.GetFullyQualifiedNameFromFormattedString(); BsonValue measurementResult = document[key]; IMeasurement measurement = specification.Counters.FirstOrDefault(x => x.FullyQualifiedPropertyName == fullyQualifiedName); if (measurement != null) trackerResult.AddMeasurementResult(measurement, measurementResult.ToString()); } } return results; }
private static ITrackerReportResults ToMongoAggregationResult(IReportSpecification specification, AggregateResult queryResults) { const string utcDateKey = "UtcDateTime"; const string totalKey = "_Total"; const string occurrenceKey = "_Occurrence"; const string KEY_FILTER = "KeyFilter"; const string ID_KEY = "_id"; const string TYPE_KEY = "Type"; var results = new MongoTrackerResults(specification); if (! queryResults.ResultDocuments.Any()) return results; int count = queryResults.ResultDocuments.Count(); List<string> names = queryResults.ResultDocuments.First().Names.Where(x => !(x == utcDateKey || x == "_id")).ToList(); foreach (BsonDocument document in queryResults.ResultDocuments) { BsonDocument dateTime = document[utcDateKey].AsBsonDocument; long total = document[totalKey].ToInt64(); long occurrence = document[occurrenceKey].ToInt64(); string typeName = document[ID_KEY][TYPE_KEY].AsString; string keyFilter = document[ID_KEY][KEY_FILTER].ToString(); DateTime utcDateTime = ConvertDateTimeDocumentToDateTime(dateTime); IAggregationBuildableResult trackerResult = results.AddAggregationResult(utcDateTime, typeName, keyFilter, occurrence, total); var relevantNames = names.Where(x => x.GetFullyQualifiedNameFromFormattedString().StartsWith(typeName)); foreach (string key in relevantNames ) { string fullyQualifiedName = key.GetFullyQualifiedNameFromFormattedString(); BsonValue measurementResult = document[key]; IMeasurement measurement = specification.Counters.FirstOrDefault(x => x.FullyQualifiedPropertyName == fullyQualifiedName); if (measurement != null) trackerResult.AddMeasurementResult(measurement, measurementResult.ToString()); } } return results; }