166 lines
5.9 KiB
Plaintext
166 lines
5.9 KiB
Plaintext
|
|
using System.ComponentModel;
|
||
|
|
using System.Windows.Data;
|
||
|
|
using DTS.Common.Base.Classes;
|
||
|
|
using DTS.Common.Converters;
|
||
|
|
using DTS.Common.Enums.Sensors;
|
||
|
|
using DTS.Common.Interface.Sensors.SoftwareFilters;
|
||
|
|
using DTS.Common.Utils;
|
||
|
|
using Xceed.Wpf.Toolkit.PropertyGrid.Attributes;
|
||
|
|
// ReSharper disable InconsistentNaming
|
||
|
|
// ReSharper disable CheckNamespace
|
||
|
|
|
||
|
|
namespace DTS.Common
|
||
|
|
{
|
||
|
|
[TypeConverter(typeof(EnumDescriptionTypeConverter))]
|
||
|
|
public enum CFCFilter
|
||
|
|
{
|
||
|
|
[Description("None")]
|
||
|
|
None = 0,
|
||
|
|
[Description("Unfiltered")]
|
||
|
|
Unfiltered = -2,
|
||
|
|
[Description("CFC 10")]
|
||
|
|
Class10 = 17,
|
||
|
|
[Description("CFC 60")]
|
||
|
|
Class60 = 100,
|
||
|
|
[Description("CFC 180")]
|
||
|
|
Class180 = 300,
|
||
|
|
[Description("CFC 600")]
|
||
|
|
Class600 = 1000,
|
||
|
|
[Description("CFC 1000")]
|
||
|
|
Class1000 = 1650
|
||
|
|
}
|
||
|
|
public class CFCFilterItemSource : IItemsSource
|
||
|
|
{
|
||
|
|
public ItemCollection GetValues()
|
||
|
|
{
|
||
|
|
return EnumUtil.GetValuesList<CFCFilter>();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// this class could be extended to become an IValueConverter, but for now it just serves as a mechanism for
|
||
|
|
/// going from the serialized in DTS files form of CFC filter to enum and vice versa.
|
||
|
|
/// </summary>
|
||
|
|
public class CFCFilterDTSFileStringConverter
|
||
|
|
{
|
||
|
|
//returns a string representing the isocode field for software filter given a software filter
|
||
|
|
//returns ? if filter is not known
|
||
|
|
public static string GetIsoCodeFromString(string s, bool bUseZeroForUnfiltered = false)
|
||
|
|
{
|
||
|
|
var filter = GetFilterFromString(s);
|
||
|
|
return CFCFilterToCFC(filter);
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// converts from a string (like in ITestChannel) to the CFC enum
|
||
|
|
/// </summary>
|
||
|
|
/// <param name="s"></param>
|
||
|
|
/// <returns></returns>
|
||
|
|
public static CFCFilter GetFilterFromString(string s)
|
||
|
|
{
|
||
|
|
if (string.IsNullOrEmpty(s)) return CFCFilter.Unfiltered;
|
||
|
|
switch (s.ToLower())
|
||
|
|
{
|
||
|
|
case "cfc 10":
|
||
|
|
//added because "CFC " is stripped off in some exports... (FTSS.TSV)
|
||
|
|
case "10":
|
||
|
|
return CFCFilter.Class10;
|
||
|
|
case "cfc 60":
|
||
|
|
case "60":
|
||
|
|
return CFCFilter.Class60;
|
||
|
|
case "cfc 180":
|
||
|
|
case "180":
|
||
|
|
return CFCFilter.Class180;
|
||
|
|
case "cfc 600":
|
||
|
|
case "600":
|
||
|
|
return CFCFilter.Class600;
|
||
|
|
case "cfc 1000":
|
||
|
|
case "1000":
|
||
|
|
return CFCFilter.Class1000;
|
||
|
|
case "unfiltered":
|
||
|
|
return CFCFilter.Unfiltered;
|
||
|
|
case "none":
|
||
|
|
return CFCFilter.None;
|
||
|
|
default:
|
||
|
|
return CFCFilter.Unfiltered;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//FB 13120 convert filter class to cfc filter string
|
||
|
|
/// <summary>
|
||
|
|
/// converts back to a string from IFilterClass [so that the ITestChannel can be updated]
|
||
|
|
/// </summary>
|
||
|
|
/// <param name="filter"></param>
|
||
|
|
/// <returns></returns>
|
||
|
|
public static string FilterClassToString(IFilterClass filter)
|
||
|
|
{
|
||
|
|
if (filter == null)
|
||
|
|
return "Unfiltered";
|
||
|
|
|
||
|
|
switch (filter.FClass)
|
||
|
|
{
|
||
|
|
case FilterClassType.CFC10: return "CFC 10";
|
||
|
|
case FilterClassType.CFC60: return "CFC 60";
|
||
|
|
case FilterClassType.CFC180: return "CFC 180";
|
||
|
|
case FilterClassType.CFC600: return "CFC 600";
|
||
|
|
case FilterClassType.CFC1000: return "CFC 1000";
|
||
|
|
case FilterClassType.AdHoc: return filter.Frequency.ToString();
|
||
|
|
case FilterClassType.Unfiltered: return "Unfiltered";
|
||
|
|
case FilterClassType.None: return "None";
|
||
|
|
default:
|
||
|
|
return "Unfiltered";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//FB 13120 convert filter class to cfc string
|
||
|
|
/// <summary>
|
||
|
|
/// converts back to a string from IFilterClass [so that the ITestChannel can be updated]
|
||
|
|
/// </summary>
|
||
|
|
/// <param name="filter"></param>
|
||
|
|
/// <returns></returns>
|
||
|
|
|
||
|
|
public static string FilterClassToCFC(IFilterClass filter, bool bUseZeroForUnfiltered = false)
|
||
|
|
{
|
||
|
|
switch (filter.FClass)
|
||
|
|
{
|
||
|
|
case FilterClassType.Unfiltered:
|
||
|
|
return bUseZeroForUnfiltered ? "0" : "P";
|
||
|
|
case FilterClassType.None:
|
||
|
|
return "P";
|
||
|
|
case FilterClassType.CFC10:
|
||
|
|
return "Q";
|
||
|
|
case FilterClassType.CFC60:
|
||
|
|
return "D";
|
||
|
|
case FilterClassType.CFC180:
|
||
|
|
return "C";
|
||
|
|
case FilterClassType.CFC600:
|
||
|
|
return "B";
|
||
|
|
case FilterClassType.CFC1000:
|
||
|
|
return "A";
|
||
|
|
case FilterClassType.AdHoc:
|
||
|
|
return "S";
|
||
|
|
}
|
||
|
|
return "S";
|
||
|
|
}
|
||
|
|
public static string CFCFilterToCFC(CFCFilter filter, bool bUseZeroForUnfiltered = false)
|
||
|
|
{
|
||
|
|
switch (filter)
|
||
|
|
{
|
||
|
|
case CFCFilter.Unfiltered:
|
||
|
|
return bUseZeroForUnfiltered ? "0" : "P";
|
||
|
|
case CFCFilter.None:
|
||
|
|
return "P";
|
||
|
|
case CFCFilter.Class10:
|
||
|
|
return "Q";
|
||
|
|
case CFCFilter.Class60:
|
||
|
|
return "D";
|
||
|
|
case CFCFilter.Class180:
|
||
|
|
return "C";
|
||
|
|
case CFCFilter.Class600:
|
||
|
|
return "B";
|
||
|
|
case CFCFilter.Class1000:
|
||
|
|
return "A";
|
||
|
|
}
|
||
|
|
return "S";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|