Example #1
0
 public TextWrangler(string recordConfigName,
                     IRecordReader recordReader,
                     IRecordBuilder recordBuilder           = null,
                     IFieldFormatter fieldFormatter         = null,
                     IFieldFilterService fieldFilterService = null,
                     IRecordWriter recordWriter             = null)
     : this(RecordConfigurationBuilder.Build(recordConfigName), recordReader,
            recordBuilder, fieldFormatter, fieldFilterService, recordWriter)
 {
 }
        public void Validate(RecordConfiguration recordConfiguration, IFieldFilterService againstFieldFilterService = null)
        {
            recordConfiguration.Should(s => s != null,
                                       "RecordConfigurationi is null or missing");

            recordConfiguration.Should(s => !s.Fields.IsNullOrEmpty(),
                                       "RecordConfiguration must have at least one field mapping");

            recordConfiguration.Fields
            .ShouldAll(f => !f.Name.IsNullOrEmpty(),
                       f => "RecordConfiguration.Fields must all have valid names");

            recordConfiguration.Fields
            .ShouldAll(f => !f.Format.IsNullOrEmpty(),
                       f => $"RecordConfiguration.Field [{f.Name}] does not have a valid format value");

            recordConfiguration.Fields
            .Where(f => !f.Sources.IsNullOrEmpty())
            .Each(f => f.Sources.ShouldAll(s => !s.Name.IsNullOrEmpty(),
                                           m => $"RecordConfiguration.Field [{m.Name}] has source(s) without any name"));

            recordConfiguration.Fields
            .Where(f => !f.Sources.IsNullOrEmpty())
            .Each(f => f.Sources.ShouldAll(s => !s.Name.IsNullOrEmpty(),
                                           m => $"RecordConfiguration.Field [{m.Name}] has source(s) without a name"));

            // Get all the filters used in the config, they must all be mapped in the given filter service
            var filters = new HashSet <string>(recordConfiguration.Fields
                                               .Where(f => !f.Filters.IsNullOrEmpty())
                                               .SelectMany(f => f.Filters)
                                               .Union(recordConfiguration.Fields
                                                      .Where(f => !f.Sources.IsNullOrEmpty())
                                                      .SelectMany(s => s.Sources
                                                                  .SelectMany(fs => fs.Filters ?? Enumerable.Empty <string>()))),
                                               StringComparer.OrdinalIgnoreCase);

            var filterService = againstFieldFilterService ?? TextWranglerConfig.DefaultFieldFilterService;

            filters.ShouldAll(f => filterService.FilterExists(f), fn => $"Filter named [{fn}] does not exist or is not mapped correctly");

            // Get all the types used in the config, they must all be mappable to a system type
            var types = new HashSet <string>(recordConfiguration.Fields
                                             .Where(f => !f.Type.IsNullOrEmpty())
                                             .Select(f => f.Type)
                                             .Union(recordConfiguration.Fields
                                                    .Where(f => !f.Sources.IsNullOrEmpty())
                                                    .SelectMany(s => s.Sources
                                                                .Where(fs => !fs.Type.IsNullOrEmpty())
                                                                .Select(fs => fs.Type))),
                                             StringComparer.OrdinalIgnoreCase);

            types.ShouldAll(t => t.TryGetSystemType(out _), tn => $"Type named [{tn}] is not a valid system type");
        }
Example #3
0
        public TextWrangler(RecordConfiguration recordConfiguration,
                            IRecordReader recordReader,
                            IRecordBuilder recordBuilder           = null,
                            IFieldFormatter fieldFormatter         = null,
                            IFieldFilterService fieldFilterService = null,
                            IRecordWriter recordWriter             = null)
        {
            _recordConfiguration = recordConfiguration ?? throw new ArgumentNullException(nameof(recordReader));
            _recordReader        = recordReader ?? throw new ArgumentNullException(nameof(recordReader));

            // Validate the configuration
            RecordConfigurationValidator.Instance.Validate(_recordConfiguration, _fieldFilterService);

            _recordBuilder      = recordBuilder ?? TextWranglerConfig.DefaultRecordBuilder;
            _fieldFormatter     = fieldFormatter ?? TextWranglerConfig.DefaultFieldFormatter;
            _fieldFilterService = fieldFilterService ?? TextWranglerConfig.DefaultFieldFilterService;
            _recordWriter       = recordWriter ?? TextWranglerConfig.DefaultRecordWriter;

            _logger = LogManager.GetLogger(GetType().Name);
        }
 public FieldFilterController(IFieldFilterService fieldFilterService)
 {
     _fieldFilterService = fieldFilterService;
 }
Example #5
0
 public SerialRecordBuilder(IFieldFilterService fieldFilterService = null)
 {
     _fieldFilterService = fieldFilterService ?? TextWranglerConfig.DefaultFieldFilterService;
 }
 public TypeFieldFilterServiceAdapter(IFieldFilterService innerFieldFilterService)
 {
     _innerFieldFilterService = innerFieldFilterService ?? throw new ArgumentNullException(nameof(innerFieldFilterService));
 }