JD2022-TU1/main/tools/apps/DataFileAnalyzer/FileLibrary/DataFileError.cs

134 lines
3.8 KiB
C#

using System;
using System.Xml.Linq;
namespace DataFileAnalyzer
{
/// <summary>
/// An error or a warning associated to a DataFile
/// </summary>
public class DataFileError
{
/// <summary>
/// The error/warning codes
/// </summary>
public enum Codes
{
Generic = 0,
BasicUpdate,
NeedDependencies,
ErrorComputingDependencies,
WarningComputingDependencies,
UnresolvedDependencies,
MissingFile,
NotInPerforce,
Orphan,
}
/// <summary>
/// The error code
/// </summary>
public Codes Code { get; set; }
/// <summary>
/// The error message
/// </summary>
public string Message { get; set; }
/// <summary>
/// Constructor
/// </summary>
public DataFileError(string _message)
{
Code = Codes.Generic;
Message = _message;
}
/// <summary>
/// Constructor
/// </summary>
public DataFileError(Codes _code)
{
Code = _code;
Message = null;
}
/// <summary>
/// Constructor
/// </summary>
public DataFileError(Codes _code, string _message)
{
Code = _code;
Message = _message;
}
/// <summary>
/// String conversion
/// </summary>
public override string ToString()
{
if (string.IsNullOrEmpty(Message))
return GetGenericMessage(Code);
return Message;
}
/// <summary>
/// Save the DataFileError to _element
/// </summary>
/// <returns>true if no error</returns>
public bool Save(XElement _element)
{
_element.SetAttributeValue("Code", (int)Code);
_element.SetAttributeValue("Message", Message);
return true;
}
/// <summary>
/// Load the DataFileError from _element
/// </summary>
/// <returns>true if no error</returns>
public bool Load(XElement _element)
{
int codeInt;
XAttribute attribute = _element.Attribute("Code");
if (attribute != null && int.TryParse(attribute.Value, out codeInt))
Code = (Codes)codeInt;
else
return false;
attribute = _element.Attribute("Message");
if (attribute != null)
Message = attribute.Value;
return true;
}
/// <summary>
/// Convert code to a string
/// </summary>
public static string GetGenericMessage(Codes _code)
{
switch (_code)
{
case Codes.Generic:
return "Error.";
case Codes.BasicUpdate:
return "An error occurred while checking the file.";
case Codes.NeedDependencies:
return "Dependencies need to be recomputed.";
case Codes.ErrorComputingDependencies:
return "An error occurred when computing dependencies.";
case Codes.WarningComputingDependencies:
return "A warning was raised when computing dependencies.";
case Codes.UnresolvedDependencies:
return "File has unresolved dependencies.";
case Codes.MissingFile:
return "File is missing.";
case Codes.NotInPerforce:
return "File is not on Perforce";
case Codes.Orphan:
return "File is orphan";
}
return "Error.";
}
}
}