89 lines
3.2 KiB
C#
89 lines
3.2 KiB
C#
|
|
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;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|