74 lines
2.4 KiB
C#
74 lines
2.4 KiB
C#
using Sarand.Net.Standard.Base.Utils;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Sarand.Net.Standard.Base.App
|
|
{
|
|
//=======================================================================
|
|
public class SacsVersion
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
public SacsVersion(String name, String version, DateTime buildAt)
|
|
{
|
|
Name = name;
|
|
Version = version;
|
|
BuildAt = buildAt;
|
|
|
|
try
|
|
{
|
|
String[] versionInts = version.Split(new char[] { ',' }, 4);
|
|
if (versionInts.Length > 0) Ver1 = (UInt16)StringUtil.ToShort(versionInts[0]);
|
|
if (versionInts.Length > 1) Ver2 = (UInt16)StringUtil.ToShort(versionInts[1]);
|
|
if (versionInts.Length > 2) Ver3 = (UInt16)StringUtil.ToShort(versionInts[2]);
|
|
if (versionInts.Length > 3) Ver4 = (UInt16)StringUtil.ToShort(versionInts[3]);
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
SaLogger.Warn($"{GetType().Name} {exc.GetType().Name} on parsing version: {ExceptionUtil.GetMessage(exc)}");
|
|
}
|
|
VersionInt = Ver1 << 48 + Ver2 << 32 + Ver3 << 16 + Ver4;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Properties.
|
|
public String Name { get; }
|
|
public String Version { get; }
|
|
public Int64 VersionInt { get; }
|
|
public UInt16 Ver1 { get; }
|
|
public UInt16 Ver2 { get; }
|
|
public UInt16 Ver3 { get; }
|
|
public UInt16 Ver4 { get; }
|
|
public DateTime BuildAt { get; }
|
|
|
|
//-------------------------------------------------------------------
|
|
// Comparison.
|
|
public override bool Equals(object obj)
|
|
{
|
|
if (obj is SacsVersion) return Equals(obj as SacsVersion);
|
|
return base.Equals(obj);
|
|
}
|
|
public override int GetHashCode()
|
|
{
|
|
var hashCode = 2121240903;
|
|
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Version);
|
|
hashCode = hashCode * -1521134295 + VersionInt.GetHashCode();
|
|
return hashCode;
|
|
}
|
|
public bool Equals(SacsVersion version)
|
|
{
|
|
if (VersionInt == version.VersionInt) return true;
|
|
return false;
|
|
}
|
|
public int CompareTo(SacsVersion version, bool includeName = false)
|
|
{
|
|
int versionCompare = VersionInt.CompareTo(version.VersionInt);
|
|
if (!includeName || versionCompare != 0) return versionCompare;
|
|
return Name.CompareTo(version.Name);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|