/
ValidationList.cs
148 lines (126 loc) · 3.79 KB
/
ValidationList.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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
using FFP.CoreUtilities;
using System;
using System.Collections.Generic;
using System.Linq;
namespace FFP.Validations
{
public class ValidationList
{
private readonly IValidatedItem mTarget;
public ValidationList(IValidatedItem target)
{
lvBrokenValidations = new BrokenValidationRules();
mTarget = target;
}
private ValidationList()
{
}
public bool ForTarget(IValidatedItem bo)
{
if (bo == null || mTarget == null)
return false;
else
return bo.Equals(mTarget);
}
public int Count()
{
if (lvValidationsList == null)
return 0;
else
return lvValidationsList.Count;
}
[NonSerialized()]
private List<IValidationRule> lvValidationsList;
public List<IValidationRule> ValidationsList()
{
if (lvValidationsList == null)
lvValidationsList = new List<IValidationRule>();
return lvValidationsList;
}
public void AddValidation(IValidationRule Validation)
{
if (Validation == null)
return;
else
{
ValidationsList().Add(Validation);
}
}
internal void Clear()
{
this.ValidationsList().Clear();
lvBrokenValidations.Clear();
}
public void CheckValidationsByProperty(string propName)
{
foreach (IValidationRule Validation in ValidationsList())
{
//todo fix
//if (Validation.HandlesProperty(propName))
//{
// if (Validation.IsBroken)
// BrokenValidations.Add(Validation);
// else
// BrokenValidations.Remove(Validation);
//}
}
}
public void CheckValidations()
{
BrokenValidations.Clear();
foreach (IValidationRule Validation in ValidationsList())
{
if (Validation.IsBroken(mTarget))
BrokenValidations.Add(new BrokenValidationRule(Validation, null));
}
}
private BrokenValidationRules lvBrokenValidations;
public BrokenValidationRules BrokenValidations
{
get
{
return lvBrokenValidations;
}
}
public bool IsValid
{
get
{
CheckValidations();
foreach (IValidationRule item in BrokenValidations)
{
if (item.Severity <= ValidationSeverity.Critical)
return false;
}
return true;
}
}
public bool IsBroken(string ValidationName)
{
CheckValidations();
return BrokenValidations.Contains(ValidationName);
}
public BrokenValidationRules GetBrokenValidations()
{
CheckValidations();
return BrokenValidations;
}
private string BrokenValidationsString()
{
CheckValidations();
return (from item in BrokenValidations
select item.Description).ListToString(",");
}
public IEnumerable<IBrokenRule> BrokenValidationsForSeverity(ValidationSeverity severity)
{
CheckValidations();
return from itm in BrokenValidations
where itm.Severity == severity
select itm;
}
public override string ToString()
{
return BrokenValidationsString();
}
}
}