Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Extract progress into its own object
- Loading branch information
1 parent
b1a8863
commit ad61311
Showing
3 changed files
with
139 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
|
||
namespace ModuleManager | ||
{ | ||
public interface IPatchProgress | ||
{ | ||
int AppliedPatchCount { get; } | ||
int ErrorCount { get; } | ||
int ExceptionCount { get; } | ||
int NeedsUnsatisfiedCount { get; } | ||
int PatchedNodeCount { get; set; } | ||
float ProgressFraction { get; } | ||
int TotalPatchCount { get; } | ||
Dictionary<String, int> ErrorFiles { get; } | ||
|
||
void Error(UrlDir.UrlConfig url, string message); | ||
void Exception(string message, Exception exception); | ||
void Exception(UrlDir.UrlConfig url, string message, Exception exception); | ||
void NeedsUnsatisfiedNode(string url, string path); | ||
void NeedsUnsatisfiedValue(string url, string path, string valName); | ||
void NodeCopied(string url, string patchUrl); | ||
void NodeDeleted(string url, string patchUrl); | ||
void NodePatched(string url, string patchUrl); | ||
void PatchAdded(); | ||
void PatchApplied(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,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; | ||
} | ||
} | ||
} |