76 lines
2.4 KiB
C#
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);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|