Files
DP44/DataPRO/Modules/TestSetups/TestSetupsList/Model/TestSetupComparer.cs

61 lines
2.2 KiB
C#
Raw Normal View History

2026-04-17 14:55:32 -04:00
using DTS.Common.Enums.TestSetups.TestSetupList;
using DTS.Common.Interface.TestSetups.TestSetupsList;
using System;
using System.Collections.Generic;
namespace TestSetupsList.Model
{
public class TestSetupComparer : IComparer<ITestSetup>
{
public TestSetupFields SortField { get; set; } = TestSetupFields.Name;
public bool SortAscending { get; set; } = true;
public int Compare(ITestSetup left, ITestSetup right)
{
if (left == right)
{
return 0;
}
var a = left;
var b = right;
if (!SortAscending)
{
a = right;
b = left;
}
if (a == b)
{
return 0;
}
if (null == a)
{
return -1;
}
if (null == b)
{
return 1;
}
switch (SortField)
{
case TestSetupFields.Name:
return string.Compare(a.Name, b.Name, StringComparison.OrdinalIgnoreCase);
case TestSetupFields.Description:
return string.Compare(a.Description, b.Description, StringComparison.OrdinalIgnoreCase);
case TestSetupFields.RecordingMode:
return a.RecordingMode.CompareTo(b.RecordingMode);
case TestSetupFields.PreTriggerSeconds:
return a.PreTriggerSeconds.CompareTo(b.PreTriggerSeconds);
case TestSetupFields.PostTriggerSeconds:
return a.PostTriggerSeconds.CompareTo(b.PostTriggerSeconds);
case TestSetupFields.LastModified:
return a.LastModified.CompareTo(b.LastModified);
case TestSetupFields.LastModifiedBy:
return string.Compare(a.LastModifiedBy, b.LastModifiedBy, StringComparison.OrdinalIgnoreCase);
case TestSetupFields.IsComplete:
return a.IsComplete.CompareTo(b.IsComplete);
}
return a.GetHashCode().CompareTo(b.GetHashCode());
}
}
}