/// <summary> /// Updates an existing log record using data from the specified <see cref="ActivityDataLog" />. /// </summary> /// <param name="dataLog">The <see cref="ActivityDataLog" />.</param> /// <returns><c>true</c> if update was successful, <c>false</c> otherwise.</returns> /// <exception cref="ArgumentNullException"><paramref name="dataLog" /> is null.</exception> public bool Update(ActivityDataLog dataLog) { if (dataLog == null) { throw new ArgumentNullException(nameof(dataLog)); } LogTableDefinition table = DataLogTranslator.BuildTableDefinition(dataLog); LogTableRecord record = DataLogTranslator.BuildUpdateRecord(dataLog); return(Update(table, record)); }
/// <summary> /// Asynchronously updates an existing log record using data from the specified <see cref="ActivityDataLog" />. /// </summary> /// <param name="dataLog">The <see cref="ActivityDataLog" />.</param> /// <exception cref="ArgumentNullException"><paramref name="dataLog" /> is null.</exception> public void UpdateAsync(ActivityDataLog dataLog) { if (dataLog == null) { throw new ArgumentNullException(nameof(dataLog)); } LogTableDefinition table = DataLogTranslator.BuildTableDefinition(dataLog); LogTableRecord record = DataLogTranslator.BuildUpdateRecord(dataLog); Task.Factory.StartNew(() => Update(table, record)); }
/// <summary> /// Asynchronously submits the specified <see cref="FrameworkDataLog" /> as a new log record. /// </summary> /// <param name="dataLog">The <see cref="FrameworkDataLog" />.</param> /// <exception cref="ArgumentNullException"><paramref name="dataLog" /> is null.</exception> public void SubmitAsync(FrameworkDataLog dataLog) { if (dataLog == null) { throw new ArgumentNullException(nameof(dataLog)); } LogTableDefinition table = DataLogTranslator.BuildTableDefinition(dataLog); LogTableRecord record = DataLogTranslator.BuildInsertRecord(dataLog); Task.Factory.StartNew(() => Submit(table, record)); }
/// <summary> /// Submits the specified <see cref="FrameworkDataLog" /> as a new log record. /// </summary> /// <param name="dataLog">The <see cref="FrameworkDataLog" />.</param> /// <returns><c>true</c> if submission was successful, <c>false</c> otherwise.</returns> /// <exception cref="ArgumentNullException"><paramref name="dataLog" /> is null.</exception> public bool Submit(FrameworkDataLog dataLog) { if (dataLog == null) { throw new ArgumentNullException(nameof(dataLog)); } LogTableDefinition table = DataLogTranslator.BuildTableDefinition(dataLog); LogTableRecord record = DataLogTranslator.BuildInsertRecord(dataLog); return(Submit(table, record)); }
private static LogTableRecord BuildRecord(FrameworkDataLog dataLog, bool insert) { if (dataLog == null) { throw new ArgumentNullException(nameof(dataLog)); } LogTableRecord record = new LogTableRecord(); foreach (DataLogPropertyInfo dataLogProperty in GetDataLogProperties(dataLog)) { bool isPrimaryKey = dataLogProperty.Name.Equals(dataLog.PrimaryKeyColumn); if (insert || dataLogProperty.IncludeInUpdates || isPrimaryKey) { record.Add(dataLogProperty.Name, GetPropertyValue(dataLogProperty, dataLog)); } } return(record); }
private bool Update(LogTableDefinition table, LogTableRecord record) { LogTrace($"Submitting UPDATE to table {table.Name} (primary key = {record[table.PrimaryKey]})"); bool success = false; using (DataLogServiceClient client = new DataLogServiceClient(_dataLogServiceAddress)) { void update() => success = client.Update(table, record); Retry.WhileThrowing <CommunicationException>(update, 10, TimeSpan.FromSeconds(1)); } if (!success) { LogWarn($"Data Log update for {table.Name} failed."); } return(success); }
private static LogTableRecord BuildRecord(ActivityDataLog dataLog, bool insert) { if (dataLog == null) { throw new ArgumentNullException(nameof(dataLog)); } // Build the table definition so that we can use the primary key LogTableDefinition tableDefinition = new LogTableDefinition(dataLog.TableName); LogTableRecord record = new LogTableRecord(); foreach (DataLogPropertyInfo dataLogProperty in GetDataLogProperties(dataLog)) { bool isPrimaryKey = dataLogProperty.Name.Equals(nameof(ActivityDataLog.RecordId)); if (insert || dataLogProperty.IncludeInUpdates || isPrimaryKey) { // Special case: change "RecordId" to the primary key name string columnName = isPrimaryKey ? tableDefinition.PrimaryKey : dataLogProperty.Name; record.Add(columnName, GetPropertyValue(dataLogProperty, dataLog)); } } return(record); }