Пример #1
0
        private static string GetMesssage(string propertyName, IDataSheetRow row)
        {
            var lookupValues = row.Cells().Select(c => c.GetValue <string>()).ToList();

            return
                ($"Property '{propertyName}' is not mapped to any of the following columns: '{string.Join(", ", lookupValues)}'! Please consider adding explicit mapping or ignore the property.");
        }
        private static string GetMesssage(string columnName, IDataSheetRow row)
        {
            var columnNames = row.Cells().Select(c => c.ColumnLetter).ToList();

            return
                ($"Cell with column name of '{columnName}' was not found within '{string.Join(", ", columnNames)}'!");
        }
Пример #3
0
        private static string GetMesssage(string valueToFind, IDataSheetRow row)
        {
            var lookupValues = row.Cells().Select(c => c.GetValue <string>()).ToList();

            return
                ($"Cell with value of '{valueToFind}' was not found within row containing '{string.Join(", ", lookupValues)}'!");
        }
Пример #4
0
        private IDataSheetCell FindMatchingCell <TModel>(PropertyInfo property, IDataSheetRow headerRow,
                                                         IReadOnlyList <MemberSpec <TModel> > specs) where TModel : class
        {
            if (specs.Any())
            {
                var propertySpec =
                    specs.SingleOrDefault(
                        s => _propertyInfoExtractor.GetPropertyInfo(s.DestinationMember).Name == property.Name);
                if (propertySpec.AnyValue())
                {
                    if (propertySpec.Is <IgnoreColumn>())
                    {
                        LogIgnoringProperty(property);
                        return(null);
                    }

                    return(propertySpec.SelectCellOrThrow(headerRow));
                }
            }

            var selector = Resolve.ByConvention(property.Name, _conventionsApplier,
                                                StringComparison.InvariantCultureIgnoreCase);
            var cell = selector.SelectCell(headerRow);

            if (cell == null)
            {
                throw new UnmapppedPropertyException(property.Name, headerRow);
            }

            return(cell);
        }
        public override IDataSheetCell SelectCellOrThrow(IDataSheetRow headerRow)
        {
            var cell = SelectCell(headerRow);

            if (cell == null)
            {
                throw new MappedColumnByValueNotFoundException(_valueToFind, headerRow);
            }

            return(cell);
        }
Пример #6
0
        public override IDataSheetCell SelectCell(IDataSheetRow headerRow)
        {
            if (headerRow == null)
            {
                throw new ArgumentNullException(nameof(headerRow));
            }

            var cell =
                headerRow.Cells()
                .SingleOrDefault(
                    c => c.ColumnLetter == _columnNameToFind);

            return(cell);
        }
        public override IDataSheetCell SelectCell(IDataSheetRow headerRow)
        {
            if (headerRow == null)
            {
                throw new ArgumentNullException(nameof(headerRow));
            }

            var matchingCells =
                headerRow.Cells()
                .Where(TryMatchCellValue).ToList();

            if (matchingCells.Count > 1)
            {
                throw new MappedColumnHasDuplicateValueException(_valueToFind, matchingCells);
            }


            return(matchingCells.SingleOrDefault());
        }
 public MappedColumnByNameNotFoundException(string columnName, IDataSheetRow headerRow)
     : base(GetMesssage(columnName, headerRow))
 {
 }
Пример #9
0
 public MappedColumnByValueNotFoundException(string valueToFind, IDataSheetRow headerRow)
     : base(GetMesssage(valueToFind, headerRow))
 {
 }
Пример #10
0
 public abstract IDataSheetCell SelectCell(IDataSheetRow headerRow);
Пример #11
0
        private TModel HydrateDestinationObject <TModel>(string fileName, string sheetName,
                                                         IDictionary <string, CellToPropertyMap> mappings, IDataSheetRow rowToMap)
            where TModel : class
        {
            var destinationObject = _modelBuilder.Build <TModel>();

            foreach (var cellToPropertyMapping in mappings)
            {
                var mapping        = cellToPropertyMapping.Value;
                var cell           = rowToMap.Cell(mapping.CellColumn);
                var convertedValue = _valueConverter.ConvertTo(cell, mapping.Property.PropertyType);
                mapping.Property.SetValue(destinationObject, convertedValue);
                destinationObject = AddPropertyMetadataIfPossible(mapping.Property, fileName, sheetName, cell,
                                                                  destinationObject);
            }

            return(destinationObject);
        }
Пример #12
0
 public IDataSheetCell SelectCell(IDataSheetRow headerRow)
 {
     return(_columnSelector.SelectCell(headerRow));
 }
Пример #13
0
 public UnmapppedPropertyException(string propertyName, IDataSheetRow headerRow)
     : base(GetMesssage(propertyName, headerRow))
 {
 }
Пример #14
0
 public override IDataSheetCell SelectCell(IDataSheetRow headerRow)
 {
     return(null);
 }
Пример #15
0
 public override IDataSheetCell SelectCellOrThrow(IDataSheetRow headerRow)
 {
     return(SelectCell(headerRow));
 }