-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCsvColumn.cs
128 lines (110 loc) · 3.23 KB
/
CsvColumn.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Globalization;
namespace CsvTools
{
public interface ICsvColumn
{
string Name { get; }
string GetString();
Guid GetGuid();
DateTime GetDate(string format = "yyyyMMdd");
int GetInt();
decimal GetDecimal();
double GetDouble();
bool GetBool();
}
internal class CsvColumn : ICsvColumn
{
private readonly string _data;
public string Name { get; private set; }
public CsvColumn(string data)
{
_data = data;
}
public string GetString() => _data;
public bool GetBool()
{
if (string.IsNullOrWhiteSpace(_data)) {
return false;
}
bool result;
if (!bool.TryParse(_data, out result)) {
throw new InvalidCastException(string.Format(
"Value {0} is not a boolean",
_data
));
}
return result;
}
public DateTime GetDate(string format = "yyyyMMdd")
{
if (string.IsNullOrWhiteSpace(_data)) {
return DateTime.MinValue;
}
DateTime result;
if (!DateTime.TryParseExact(_data, format, null, DateTimeStyles.AllowWhiteSpaces, out result)) {
throw new InvalidCastException(string.Format(
"Value {0} is not a date time",
_data
));
}
return result;
}
public decimal GetDecimal()
{
if (string.IsNullOrWhiteSpace(_data)) {
return 0;
}
decimal result;
if (!decimal.TryParse(_data, out result)) {
throw new InvalidCastException(string.Format(
"Value {0} is not a decimal",
_data
));
}
return result;
}
public double GetDouble()
{
if (string.IsNullOrWhiteSpace(_data)) {
return 0;
}
double result;
if (!double.TryParse(_data, out result)) {
throw new InvalidCastException(string.Format(
"Value {0} is not a decimal",
_data
));
}
return result;
}
public Guid GetGuid()
{
if (string.IsNullOrWhiteSpace(_data)) {
return new Guid();
}
Guid result;
if (!Guid.TryParse(_data, out result)) {
throw new InvalidCastException(string.Format(
"Value {0} is not a GUID",
_data
));
}
return result;
}
public int GetInt()
{
if (string.IsNullOrWhiteSpace(_data)) {
return 0;
}
int result;
if (!int.TryParse(_data, out result)) {
throw new InvalidCastException(string.Format(
"Value {0} is not an int",
_data
));
}
return result;
}
}
}