/
PatchProgress.cs
109 lines (87 loc) · 3.02 KB
/
PatchProgress.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
using System;
using System.Collections.Generic;
using ModuleManager.Logging;
namespace ModuleManager
{
public class PatchProgress : IPatchProgress
{
public int TotalPatchCount { get; private set; } = 0;
public int AppliedPatchCount { get; private set; } = 0;
public int PatchedNodeCount { get; set; } = 0;
public int ErrorCount { get; private set; } = 0;
public int ExceptionCount { get; private set; } = 0;
public int NeedsUnsatisfiedCount { get; private set; } = 0;
public Dictionary<String, int> ErrorFiles { get; } = new Dictionary<string, int>();
private IBasicLogger logger;
public float ProgressFraction
{
get
{
if (TotalPatchCount > 0)
return (AppliedPatchCount + NeedsUnsatisfiedCount) / (float)TotalPatchCount;
return 0;
}
}
public PatchProgress(IBasicLogger logger)
{
this.logger = logger;
}
public void PatchAdded()
{
TotalPatchCount += 1;
}
public void NodePatched(string url, string patchUrl)
{
logger.Info($"Applying node {patchUrl} to {url}");
PatchedNodeCount += 1;
}
public void NodeCopied(string url, string patchUrl)
{
logger.Info($"Copying Node {url} using {patchUrl}");
}
public void NodeDeleted(string url, string patchUrl)
{
logger.Info($"Deleting Node {url} using {patchUrl}");
}
public void PatchApplied()
{
AppliedPatchCount += 1;
}
public void NeedsUnsatisfiedNode(string url, string path)
{
logger.Info($"Deleting Node in file {url} subnode: {path} as it can't satisfy its NEEDS");
NeedsUnsatisfiedCount += 1;
}
public void NeedsUnsatisfiedValue(string url, string path, string valName)
{
logger.Info($"Deleting value in file {url} subnode: {path} value: {valName} as it can't satisfy its NEEDS");
NeedsUnsatisfiedCount += 1;
}
public void Error(UrlDir.UrlConfig url, string message)
{
ErrorCount += 1;
logger.Error(message);
RecordErrorFile(url);
}
public void Exception(string message, Exception exception)
{
ExceptionCount += 1;
logger.Exception(message, exception);
}
public void Exception(UrlDir.UrlConfig url, string message, Exception exception)
{
Exception(message, exception);
RecordErrorFile(url);
}
private void RecordErrorFile(UrlDir.UrlConfig url)
{
string key = url.parent.url + "." + url.parent.fileExtension;
if (key[0] == '/')
key = key.Substring(1);
if (ErrorFiles.ContainsKey(key))
ErrorFiles[key] += 1;
else
ErrorFiles[key] = 1;
}
}
}