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)}'!"); }
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)}'!"); }
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); }
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)) { }
public MappedColumnByValueNotFoundException(string valueToFind, IDataSheetRow headerRow) : base(GetMesssage(valueToFind, headerRow)) { }
public abstract IDataSheetCell SelectCell(IDataSheetRow headerRow);
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); }
public IDataSheetCell SelectCell(IDataSheetRow headerRow) { return(_columnSelector.SelectCell(headerRow)); }
public UnmapppedPropertyException(string propertyName, IDataSheetRow headerRow) : base(GetMesssage(propertyName, headerRow)) { }
public override IDataSheetCell SelectCell(IDataSheetRow headerRow) { return(null); }
public override IDataSheetCell SelectCellOrThrow(IDataSheetRow headerRow) { return(SelectCell(headerRow)); }