/// <summary> /// Process each element from <see cref="Elements"/>. /// </summary> /// <param name="context">Context for processing elements.</param> public void Process(ColumnValuesIteratorContext context) { foreach (var element in Elements) { element.Process(context); } }
protected override object InternalTryBoxValue(ColumnValue columnValue, ColumnValuesIteratorContext context) { if (bool.TryParse(columnValue.Value?.ToString(), out var boolValue)) { return(boolValue); } return(null); }
protected override object InternalTryBoxValue(ColumnValue columnValue, ColumnValuesIteratorContext context) { if (Guid.TryParse(columnValue.Value?.ToString(), out var guidValue) && !Guid.Empty.Equals(guidValue)) { return(guidValue); } return(null); }
public object TryBoxValue(ColumnValue columnValue, ColumnValuesIteratorContext context) { if (CanProcess(columnValue, context)) { return(InternalTryBoxValue(columnValue, context)); } if (Next != null) { return(Next.TryBoxValue(columnValue, context)); } return(null); }
protected override object InternalTryBoxValue(ColumnValue columnValue, ColumnValuesIteratorContext context) { if (!DateTime.TryParse(columnValue.Value?.ToString(), out var dateTimeValue) || dateTimeValue.Equals(DateTime.MinValue)) { return(null); } if (columnValue.DataValueType is DateTimeDataValueType dateTimeType) { return(GetValueForDateTimeDataValueType(dateTimeValue, dateTimeType.Kind, context.TimeZoneOffset)); } return(dateTimeValue); }
/// <summary> /// Deserializes column values from string to typed value boxing in object. /// </summary> /// <param name="context">Context for processing elements.</param> public override void Process(ColumnValuesIteratorContext context) { foreach (var columnValue in context.ColumnValues) { if (columnValue.HasMacrosValue) { continue; } var boxedResult = Deserializers.TryBoxValue(columnValue, context); var result = new ColumnValueResult(columnValue.ColumnUId) { Value = boxedResult }; context.Results.Add(columnValue.ColumnUId, result); } }
/// <summary> /// Replaces macro with value in columns. /// </summary> /// <param name="context"></param> public override void Process(ColumnValuesIteratorContext context) { if (!context.MacrosValues.Any()) { return; } var columnValues = context.ColumnValues.Where(c => c.HasMacrosValue && !c.IsTextColumn); foreach (var columnValue in columnValues) { var result = new ColumnValueResult(columnValue.ColumnUId); if (!string.IsNullOrWhiteSpace(columnValue.Value?.ToString())) { var macroValue = context.MacrosValues .FirstOrDefault(x => x.Alias == columnValue.Value.ToString()).Value; result.Value = macroValue; } context.Results.Add(columnValue.ColumnUId, result); } }
/// <summary> /// Replaces macros with values in columns. /// </summary> /// <param name="context"></param> public override void Process(ColumnValuesIteratorContext context) { if (!context.MacrosValues.Any()) { return; } var columnValues = context.ColumnValues.Where(c => c.HasMacrosValue && c.IsTextColumn); foreach (var columnValue in columnValues) { var result = new ColumnValueResult(columnValue.ColumnUId); if (!string.IsNullOrWhiteSpace(columnValue.Value?.ToString())) { var stringBuilder = new StringBuilder(columnValue.Value.ToString()); context.MacrosValues .ForEach(macro => { stringBuilder.Replace(macro.Alias, macro.StringValue); }); result.Value = stringBuilder.ToString(); } context.Results.Add(columnValue.ColumnUId, result); } }
protected override bool CanProcess(ColumnValue columnValue, ColumnValuesIteratorContext context) => columnValue.IsDateTimeColumn;
protected abstract object InternalTryBoxValue(ColumnValue columnValue, ColumnValuesIteratorContext context);
protected virtual bool CanProcess(ColumnValue columnValue, ColumnValuesIteratorContext context) => false;
protected override object InternalTryBoxValue(ColumnValue columnValue, ColumnValuesIteratorContext context) => columnValue.Value?.ToString();