private static IEnumerable <Selection> ReadSelectionFromOptions(SelectOptions options) { ITimestampStringConverter timestampConverter = TimestampStringConverterResolver.Default.Resolve(options.TimestampFormat); var selection = Selection.Parse(options.Name, options.FromTimestamp, options.ToTimestamp, timestampConverter); return(new[] { selection }); }
private static void Configure(SelectContext context, SelectOptions options) { // read from options or config file var selections = Enumerable.Empty <Selection>(); if (String.IsNullOrWhiteSpace(options.ConfigFilePath)) { selections = ReadSelectionFromOptions(options); } else { selections = ReadSelectionsFromConfigFile(context, options.ConfigFilePath); } if (selections.Any()) { var observers = CreateObserversForSelections(selections, options).ToList(); observers.ForEach(context.Observers.Add); context.Selection = Selection.Union(selections); } }
private static IEnumerable <FilterObserver> CreateObserversForSelections(IEnumerable <Selection> selections, SelectOptions options) { HashSet <string> paths = new HashSet <string>(); List <FilteringObserver> observers = new List <FilteringObserver>(); foreach (var selection in selections) { string path = options.OutputFilePath; string name = (selection.Name ?? String.Empty).Trim(); if (String.IsNullOrWhiteSpace(path) && String.IsNullOrWhiteSpace(name) == false) { path = options.InputFilePath; } if (String.IsNullOrWhiteSpace(path) == false) { if (path.Contains("{name}")) { path = path.Replace("{name}", name); } else if (String.IsNullOrWhiteSpace(name) == false) { path = Path.GetFileNameWithoutExtension(path) + $".{name}" + Path.GetExtension(path); } } // use only unique paths if (path != options.InputFilePath && paths.Add(path)) { var output = UXI.Filters.Common.FileHelper.DescribeOutput( path, options.InputFileFormat, options.DefaultInputFileFormat, typeof(TimestampedDataPayload), (String.IsNullOrWhiteSpace(path)) ? Console.Out : TextWriter.Null // use Console.Out for empty path only ); observers.Add(new FilteringObserver(selection, output)); } } return(observers); }