///
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
namespace TBF.BenchControl.GenericDevices
{
public class ValveBase : ComponentBase
{
public ValveBase()
{
}
///
/// Invokes ComponentBase constructor
///
public ValveBase(Generic.IComponentCfg cfg) : base(cfg)
{
}
///
/// Process the list of components and return all valves (masters and coupled)
///
public static IList AllValves(IList cmpnts)
{
IList result = new List();
foreach (var cmpnt in cmpnts) if (cmpnt is IValve) result.Add(cmpnt as IValve);
return result;
}
///
/// Process the list of components and return masters valves
///
public static IList MasterValves(IList cmpnts)
{
IList result = new List();
foreach (var cmpnt in cmpnts)
{
IValve valve = cmpnt as IValve;
if (valve != null && valve.CoupledTo == null) result.Add(valve);
}
return result;
}
///
/// Process the list of components and return coupled valves
///
public static IList CoupledValves(IList cmpnts)
{
IList result = new List();
foreach (var cmpnt in cmpnts)
{
IValve valve = cmpnt as IValve;
if (valve != null && valve.CoupledTo != null) result.Add(valve);
}
return result;
}
///
/// Process the list of components and return extended valves
///
public static IList ExtendedValves(IList cmpnts)
{
IList result = new List();
foreach (var cmpnt in cmpnts)
{
if (cmpnt is Elde.ValveEx.Valve) result.Add(cmpnt as Elde.ValveEx.Valve);
}
return result;
}
///
/// Create a list with one valved passed as an argument to this function
///
/// Valve
/// List with one valve
public static IList MakeList(IValve valve)
{
IList result = new List();
if (valve != null) result.Add(valve);
return result;
}
public static IList Merge(IList valves1, IList valves2)
{
IList result = new List();
if (valves1 != null) foreach (var valve in valves1) result.Add(valve);
if (valves2 != null) foreach (var valve in valves2) result.Add(valve);
return result;
}
public static IList Merge(IList valves1, IList valves2, IList valves3)
{
IList result = new List();
if (valves1 != null) foreach (var valve in valves1) result.Add(valve);
if (valves2 != null) foreach (var valve in valves2) result.Add(valve);
if (valves3 != null) foreach (var valve in valves3) result.Add(valve);
return result;
}
}
}