Files
Common-VS2019/SacsStandardBase/Base/App/SacsVersion.cs
T
2021-05-05 15:36:28 +01:00

76 lines
2.4 KiB
C#

using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
using System.Text;
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: " + exc.Message);
}
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);
}
//-------------------------------------------------------------------
}
//=======================================================================
}