Beispiel #1
0
        public ParseErrors AddSheets(DataSheetCollection dataSheets, ColumnInfoCache columnInfos, string filter)
        {
            _importer.AddFromFile(_configuration.Format, dataSheets.Filter(filter), columnInfos, this);
            if (NanSettings == null || !double.TryParse(NanSettings.Indicator, out var indicator))
            {
                indicator = double.NaN;
            }
            var errors = new ParseErrors();

            foreach (var dataSet in DataSets.KeyValues)
            {
                if (NanSettings != null && NanSettings.Action == NanSettings.ActionType.Throw)
                {
                    if (dataSet.Value.NanValuesExist(indicator))
                    {
                        errors.Add(dataSet.Value, new NaNParseErrorDescription());
                    }
                }
                else
                {
                    dataSet.Value.ClearNan(indicator);
                    var emptyDataSets = dataSet.Value.Data.Where(parsedDataSet => parsedDataSet.Data.All(column => column.Value.Count == 0)).ToList();
                    if (emptyDataSets.Count == 0)
                    {
                        continue;
                    }

                    var emptyDataSetsNames = emptyDataSets.Select(d => string.Join(".", d.Description.Where(metaData => metaData.Value != null).Select(metaData => metaData.Value)));
                    errors.Add(dataSet.Value, new EmptyDataSetsParseErrorDescription(emptyDataSetsNames));
                }
            }
            return(errors);
        }