/// <summary> /// Converts the input <see cref="SarUsageEvent"/> instance to a <see cref="SarEvaluationUsageEvent"/> /// </summary> private static SarEvaluationUsageEvent ToEvaluationUsageEvent(SarUsageEvent usageEvent) { return(new SarEvaluationUsageEvent { UserId = usageEvent.UserId.ToString(), ItemId = usageEvent.ItemId.ToString() }); }
/// <summary> /// Parse a usage events file into usage events items. /// Expected format is userId,itemId,timestamp[,event-type[,event-weight] /// </summary> private IEnumerable <SarUsageEvent> ParseUsageEventsFile(string usageFile, FileParsingReport parsingReport, DateTime defaultEventTimestamp) { using (var reader = new TextFieldParser(usageFile) { Delimiters = new[] { "," } }) { while (!reader.EndOfData) { string[] fields; parsingReport.TotalLinesCount++; try { fields = reader.ReadFields(); } catch (MalformedLineException ex) { if (ShouldContinueAfterError(ParsingErrorReason.MalformedLine, parsingReport, usageFile, ex.LineNumber)) { continue; } yield break; } ParsingErrorReason?parsingError; ParsingErrorReason?parsingWarning; SarUsageEvent usageEvent = ParseUsageEvent(fields, defaultEventTimestamp, out parsingError, out parsingWarning); if (parsingError.HasValue) { if (ShouldContinueAfterError(parsingError.Value, parsingReport, usageFile, reader.LineNumber - 1)) { continue; } yield break; } if (parsingWarning.HasValue) { parsingReport.Warnings.Add(new ParsingError(Path.GetFileName(usageFile), reader.LineNumber - 1, parsingWarning.Value)); continue; } parsingReport.SuccessfulLinesCount++; yield return(usageEvent); } } }
private SarUsageEvent ConvertToSarUsageEvent(IUsageEvent usageEvent) { var sarUsageEvent = new SarUsageEvent(); uint itemId; if (_itemIdReverseLookup.TryGetValue(usageEvent.ItemId.ToLowerInvariant(), out itemId)) { sarUsageEvent.ItemId = itemId; } if (_properties.EnableUserAffinity) { sarUsageEvent.Timestamp = usageEvent.Timestamp ?? DateTime.UtcNow; sarUsageEvent.Weight = usageEvent.EventType?.GetEventWeight() ?? 1; // If weight is provided overwrite the value. sarUsageEvent.Weight = usageEvent.Weight ?? sarUsageEvent.Weight; } return(sarUsageEvent); }