Files

89 lines
3.2 KiB
C#
Raw Permalink Normal View History

2026-04-17 14:55:32 -04:00
using System;
using System.Collections.Generic;
using System.Linq;
namespace DatabaseExport
{
public class TestEngineerDetails
{
private readonly ISO.TestEngineerDetails _testEngineerDetails;
public string Name
{
get => _testEngineerDetails.Name;
set => _testEngineerDetails.Name = value;
}
public TestEngineerDetails()
{
_testEngineerDetails = new ISO.TestEngineerDetails();
_testEngineerDetails.Name = "(none)"; // Strings.StringResources.TestTemplate_EmptyListName;
}
public TestEngineerDetails(ISO.TestEngineerDetails testEngineerDetails)
{
_testEngineerDetails = new ISO.TestEngineerDetails(testEngineerDetails);
}
public ISO.TestEngineerDetails GetISOTestEngineer()
{
return _testEngineerDetails;
}
public override string ToString()
{
return Name;
}
}
public class TestEngineerDetailsList
{
private static TestEngineerDetailsList _testEngineerList = new TestEngineerDetailsList();
public static TestEngineerDetailsList TestEngineerList => _testEngineerList;
private static object _testEngineerLock = new object();
private Dictionary<string, TestEngineerDetails> _testEngineers = null;
public TestEngineerDetails[] TestEngineers
{
get
{
lock (_testEngineerLock)
{
if (null == _testEngineers)
{
PopulateEngineers();
}
}
var testEngineers = new List<TestEngineerDetails>(_testEngineers.Values);
testEngineers.Sort(CompareTestEngineers);
return testEngineers.ToArray();
}
}
private void PopulateEngineers()
{
_testEngineers = new Dictionary<string, TestEngineerDetails>();
foreach (var t in _testEngineerList.GetAllTestEngineers())
{
if (!_testEngineers.ContainsKey(t.Name)) { _testEngineers.Add(t.Name, t); }
}
}
private static int CompareTestEngineers(TestEngineerDetails a, TestEngineerDetails b)
{
if (a == b) { return 0; }
if (null == a) { return -1; }
if (null == b) { return 1; }
return a.Name.CompareTo(b.Name);
}
private TestEngineerDetails[] GetAllTestEngineers()
{
var list = new List<TestEngineerDetails>();
list.Add(new TestEngineerDetails()); //This is the "(none)" entry
foreach (var ts in ISO.TestEngineerDetails.GetAllTestEngineerDetails())
{
list.Add(new TestEngineerDetails(ts));
}
return list.ToArray();
}
public TestEngineerDetails GetTestEngineerDetail(string name)
{
var testEngineers = from t in TestEngineers.AsParallel() where t.Name == name select t;
if (null != testEngineers && testEngineers.Count() > 0) { return testEngineers.First(); }
return null;
}
}
}