private static int ParseHskLevel(ICsvReaderRow csv) { int hskLevel; if (!csv.TryGetField("HSK Level", out hskLevel)) { hskLevel = int.Parse(csv.GetField <string>("HSK Level-Order").Split('-')[0]); } return(hskLevel); }
/// <summary> /// Converts the string to an object. /// </summary> /// <param name="text">The string to convert to an object.</param> /// <param name="row">The <see cref="ICsvReaderRow"/> for the current record.</param> /// <param name="propertyMapData">The <see cref="CsvPropertyMapData"/> for the property/field being created.</param> /// <returns>The object created from the string.</returns> public override object ConvertFromString( string text, ICsvReaderRow row, CsvPropertyMapData propertyMapData ) { var list = new ArrayList(); if( propertyMapData.IsNameSet || row.Configuration.HasHeaderRecord && !propertyMapData.IsIndexSet ) { // Use the name. var nameIndex = 0; while( true ) { string field; if( !row.TryGetField( propertyMapData.Names.FirstOrDefault(), nameIndex, out field ) ) { break; } list.Add( field ); nameIndex++; } } else { // Use the index. var indexEnd = propertyMapData.IndexEnd < propertyMapData.Index ? row.CurrentRecord.Length - 1 : propertyMapData.IndexEnd; for( var i = propertyMapData.Index; i <= indexEnd; i++ ) { string field; if( row.TryGetField( i, out field ) ) { list.Add( field ); } } } return list; }
/// <summary> /// Converts the string to an object. /// </summary> /// <param name="text">The string to convert to an object.</param> /// <param name="row">The <see cref="ICsvReaderRow"/> for the current record.</param> /// <param name="propertyMapData">The <see cref="CsvPropertyMapData"/> for the property/field being created.</param> /// <returns>The object created from the string.</returns> public override object ConvertFromString(string text, ICsvReaderRow row, CsvPropertyMapData propertyMapData) { var list = new List <string>(); if (propertyMapData.IsNameSet || row.Configuration.HasHeaderRecord && !propertyMapData.IsIndexSet) { // Use the name. var nameIndex = 0; while (true) { string field; if (!row.TryGetField(propertyMapData.Names.FirstOrDefault(), nameIndex, out field)) { break; } list.Add(field); nameIndex++; } } else { // Use the index. var indexEnd = propertyMapData.IndexEnd < propertyMapData.Index ? row.CurrentRecord.Length - 1 : propertyMapData.IndexEnd; for (var i = propertyMapData.Index; i <= indexEnd; i++) { string field; if (row.TryGetField(i, out field)) { list.Add(field); } } } return(list); }
/// <summary> /// Converts the string to an object. /// </summary> /// <param name="text">The string to convert to an object.</param> /// <param name="row">The <see cref="ICsvReaderRow"/> for the current record.</param> /// <param name="propertyMapData">The <see cref="CsvPropertyMapData"/> for the property/field being created.</param> /// <returns>The object created from the string.</returns> public override object ConvertFromString(string text, ICsvReaderRow row, CsvPropertyMapData propertyMapData) { Array array; var type = propertyMapData.Member.MemberType().GetElementType(); if (propertyMapData.IsNameSet || row.Configuration.HasHeaderRecord && !propertyMapData.IsIndexSet) { // Use the name. var list = new List <object>(); var nameIndex = 0; while (true) { object field; if (!row.TryGetField(type, propertyMapData.Names.FirstOrDefault(), nameIndex, out field)) { break; } list.Add(field); nameIndex++; } array = (Array)ReflectionHelper.CreateInstance(propertyMapData.Member.MemberType(), list.Count); for (var i = 0; i < list.Count; i++) { array.SetValue(list[i], i); } } else { // Use the index. var indexEnd = propertyMapData.IndexEnd < propertyMapData.Index ? row.CurrentRecord.Length - 1 : propertyMapData.IndexEnd; var arraySize = indexEnd - propertyMapData.Index + 1; array = (Array)ReflectionHelper.CreateInstance(propertyMapData.Member.MemberType(), arraySize); var arrayIndex = 0; for (var i = propertyMapData.Index; i <= indexEnd; i++) { array.SetValue(row.GetField(type, i), arrayIndex); arrayIndex++; } } return(array); }
/// <summary> /// Converts the string to an object. /// </summary> /// <param name="text">The string to convert to an object.</param> /// <param name="row">The <see cref="ICsvReaderRow"/> for the current record.</param> /// <param name="propertyMapData">The <see cref="CsvPropertyMapData"/> for the property/field being created.</param> /// <returns>The object created from the string.</returns> public override object ConvertFromString( string text, ICsvReaderRow row, CsvPropertyMapData propertyMapData ) { Array array; var type = propertyMapData.Member.MemberType().GetElementType(); if( propertyMapData.IsNameSet || row.Configuration.HasHeaderRecord && !propertyMapData.IsIndexSet ) { // Use the name. var list = new List<object>(); var nameIndex = 0; while( true ) { object field; if( !row.TryGetField( type, propertyMapData.Names.FirstOrDefault(), nameIndex, out field ) ) { break; } list.Add( field ); nameIndex++; } array = (Array)ReflectionHelper.CreateInstance( propertyMapData.Member.MemberType(), list.Count ); for( var i = 0; i < list.Count; i++ ) { array.SetValue( list[i], i ); } } else { // Use the index. var indexEnd = propertyMapData.IndexEnd < propertyMapData.Index ? row.CurrentRecord.Length - 1 : propertyMapData.IndexEnd; var arraySize = indexEnd - propertyMapData.Index + 1; array = (Array)ReflectionHelper.CreateInstance( propertyMapData.Member.MemberType(), arraySize ); var arrayIndex = 0; for( var i = propertyMapData.Index; i <= indexEnd; i++ ) { array.SetValue( row.GetField( type, i ), arrayIndex ); arrayIndex++; } } return array; }
/// <summary> /// Converts the string to an object. /// </summary> /// <param name="text">The string to convert to an object.</param> /// <param name="row">The <see cref="ICsvReaderRow"/> for the current record.</param> /// <param name="propertyMapData">The <see cref="CsvPropertyMapData"/> for the property/field being created.</param> /// <returns>The object created from the string.</returns> public override object ConvertFromString(string text, ICsvReaderRow row, CsvPropertyMapData propertyMapData) { var dictionary = new Dictionary <string, string>(); var indexEnd = propertyMapData.IndexEnd < propertyMapData.Index ? row.CurrentRecord.Length - 1 : propertyMapData.IndexEnd; for (var i = propertyMapData.Index; i <= indexEnd; i++) { string field; if (row.TryGetField(i, out field)) { dictionary.Add(row.FieldHeaders[i], field); } } return(dictionary); }
/// <summary> /// Converts the string to an object. /// </summary> /// <param name="text">The string to convert to an object.</param> /// <param name="row">The <see cref="ICsvReaderRow"/> for the current record.</param> /// <param name="propertyMapData">The <see cref="CsvPropertyMapData"/> for the property/field being created.</param> /// <returns>The object created from the string.</returns> public override object ConvertFromString( string text, ICsvReaderRow row, CsvPropertyMapData propertyMapData ) { var dictionary = new Dictionary<string, string>(); var indexEnd = propertyMapData.IndexEnd < propertyMapData.Index ? row.CurrentRecord.Length - 1 : propertyMapData.IndexEnd; for( var i = propertyMapData.Index; i <= indexEnd; i++ ) { string field; if( row.TryGetField( i, out field ) ) { dictionary.Add( row.FieldHeaders[i], field ); } } return dictionary; }
/// <summary> /// Converts the string to an object. /// </summary> /// <param name="text">The string to convert to an object.</param> /// <param name="row">The <see cref="ICsvReaderRow"/> for the current record.</param> /// <param name="propertyMapData">The <see cref="CsvPropertyMapData"/> for the property/field being created.</param> /// <returns>The object created from the string.</returns> public override object ConvertFromString(string text, ICsvReaderRow row, CsvPropertyMapData propertyMapData) { var type = propertyMapData.Member.MemberType().GetGenericArguments()[0]; var listType = typeof(List <>); listType = listType.MakeGenericType(type); var list = (IList)ReflectionHelper.CreateInstance(listType); if (propertyMapData.IsNameSet || row.Configuration.HasHeaderRecord && !propertyMapData.IsIndexSet) { // Use the name. var nameIndex = 0; while (true) { object field; if (!row.TryGetField(type, propertyMapData.Names.FirstOrDefault(), nameIndex, out field)) { break; } list.Add(field); nameIndex++; } } else { // Use the index. var indexEnd = propertyMapData.IndexEnd < propertyMapData.Index ? row.CurrentRecord.Length - 1 : propertyMapData.IndexEnd; for (var i = propertyMapData.Index; i <= indexEnd; i++) { var field = row.GetField(type, i); list.Add(field); } } return(list); }
/// <summary> /// Converts the string to an object. /// </summary> /// <param name="text">The string to convert to an object.</param> /// <param name="row">The <see cref="ICsvReaderRow"/> for the current record.</param> /// <param name="propertyMapData">The <see cref="CsvPropertyMapData"/> for the property/field being created.</param> /// <returns>The object created from the string.</returns> public override object ConvertFromString(string text, ICsvReaderRow row, CsvPropertyMapData propertyMapData) { // Since we're using the PropertyType here, this converter can be used for multiple types // as long as they implement IList. var list = (IList)ReflectionHelper.CreateInstance(propertyMapData.Member.MemberType()); var type = propertyMapData.Member.MemberType().GetGenericArguments()[0]; if (propertyMapData.IsNameSet || row.Configuration.HasHeaderRecord && !propertyMapData.IsIndexSet) { // Use the name. var nameIndex = 0; while (true) { object field; if (!row.TryGetField(type, propertyMapData.Names.FirstOrDefault(), nameIndex, out field)) { break; } list.Add(field); nameIndex++; } } else { // Use the index. var indexEnd = propertyMapData.IndexEnd < propertyMapData.Index ? row.CurrentRecord.Length - 1 : propertyMapData.IndexEnd; for (var i = propertyMapData.Index; i <= indexEnd; i++) { var field = row.GetField(type, i); list.Add(field); } } return(list); }
/// <summary> /// Converts the string to an object. /// </summary> /// <param name="text">The string to convert to an object.</param> /// <param name="row">The <see cref="ICsvReaderRow"/> for the current record.</param> /// <param name="propertyMapData">The <see cref="CsvPropertyMapData"/> for the property/field being created.</param> /// <returns>The object created from the string.</returns> public override object ConvertFromString( string text, ICsvReaderRow row, CsvPropertyMapData propertyMapData ) { // Since we're using the PropertyType here, this converter can be used for multiple types // as long as they implement IList. var list = (IList)ReflectionHelper.CreateInstance( propertyMapData.Member.MemberType() ); var type = propertyMapData.Member.MemberType().GetGenericArguments()[0]; if( propertyMapData.IsNameSet || row.Configuration.HasHeaderRecord && !propertyMapData.IsIndexSet ) { // Use the name. var nameIndex = 0; while( true ) { object field; if( !row.TryGetField( type, propertyMapData.Names.FirstOrDefault(), nameIndex, out field ) ) { break; } list.Add( field ); nameIndex++; } } else { // Use the index. var indexEnd = propertyMapData.IndexEnd < propertyMapData.Index ? row.CurrentRecord.Length - 1 : propertyMapData.IndexEnd; for( var i = propertyMapData.Index; i <= indexEnd; i++ ) { var field = row.GetField( type, i ); list.Add( field ); } } return list; }
/// <summary> /// Converts the string to an object. /// </summary> /// <param name="text">The string to convert to an object.</param> /// <param name="row">The <see cref="ICsvReaderRow"/> for the current record.</param> /// <param name="propertyMapData">The <see cref="CsvPropertyMapData"/> for the property/field being created.</param> /// <returns>The object created from the string.</returns> public override object ConvertFromString( string text, ICsvReaderRow row, CsvPropertyMapData propertyMapData ) { var type = propertyMapData.Member.MemberType().GetGenericArguments()[0]; var listType = typeof( List<> ); listType = listType.MakeGenericType( type ); var list = (IList)ReflectionHelper.CreateInstance( listType ); if( propertyMapData.IsNameSet || row.Configuration.HasHeaderRecord && !propertyMapData.IsIndexSet ) { // Use the name. var nameIndex = 0; while( true ) { object field; if( !row.TryGetField( type, propertyMapData.Names.FirstOrDefault(), nameIndex, out field ) ) { break; } list.Add( field ); nameIndex++; } } else { // Use the index. var indexEnd = propertyMapData.IndexEnd < propertyMapData.Index ? row.CurrentRecord.Length - 1 : propertyMapData.IndexEnd; for( var i = propertyMapData.Index; i <= indexEnd; i++ ) { var field = row.GetField( type, i ); list.Add( field ); } } return list; }
/// <summary> /// Converts the string to an object. /// </summary> /// <param name="text">The string to convert to an object.</param> /// <param name="row">The <see cref="ICsvReaderRow"/> for the current record.</param> /// <param name="propertyMapData">The <see cref="CsvPropertyMapData"/> for the property being created.</param> /// <returns>The object created from the string.</returns> public override object ConvertFromString(string text, ICsvReaderRow row, CsvPropertyMapData propertyMapData) { var dictionary = new Dictionary <string, string>(); if (propertyMapData.IsNameSet || row.Configuration.HasHeaderRecord && !propertyMapData.IsIndexSet) { // Use the name. var nameIndex = 0; while (true) { string field; var name = propertyMapData.Names.FirstOrDefault() ?? string.Empty; row.TryGetField(name, nameIndex, out field); if (field == null) { break; } dictionary.Add(name, field); nameIndex++; } } else { // Use the index. var indexEnd = propertyMapData.IndexEnd < propertyMapData.Index ? row.CurrentRecord.Length - 1 : propertyMapData.IndexEnd; for (var i = propertyMapData.Index; i <= indexEnd; i++) { dictionary.Add(row.FieldHeaders[i], row.GetField(i)); } } return(dictionary); }