/* Copyright 2017 Diversified Technical Systems
*/
using System;
using System.Collections.Generic;
using System.Linq;
namespace DatabaseExport
{
///
/// this class will probably become an abstract base class in the future but for now since we only have
/// summed realtime channels, we can be a little less formal
///
public class CalculatedValueClass
{
public CalculatedValueClass(System.Data.DataRow dr)
{
var fields = Enum.GetValues(typeof(DbOperations.CalculatedChannels.Fields))
.Cast().ToArray();
foreach (var field in fields)
{
var o = dr[field.ToString()];
if (DBNull.Value.Equals(o)) { continue; }
switch (field)
{
case DbOperations.CalculatedChannels.Fields.TestSetupName:
TestSetupName = Convert.ToString(o);
break;
case DbOperations.CalculatedChannels.Fields.Operation:
Operation = (Operations)Convert.ToInt32(o);
break;
case DbOperations.CalculatedChannels.Fields.InputChannelIds:
InputChannelIdsBlob = (byte[])o;
break;
case DbOperations.CalculatedChannels.Fields.Id:
Id = Convert.ToInt32(o);
break;
case DbOperations.CalculatedChannels.Fields.CFCForOutput:
ChannelFilterClassForOutput = Convert.ToString(o);
break;
case DbOperations.CalculatedChannels.Fields.CFCForInputChannels:
CFCForInputChannels = Convert.ToString(o);
break;
case DbOperations.CalculatedChannels.Fields.CCName:
Name = Convert.ToString(o);
break;
case DbOperations.CalculatedChannels.Fields.CalculatedChannelValueCode:
CalculatedValueCode = Convert.ToString(o);
break;
}
}
}
public int Id { get; set; } = -1;
public enum Operations
{
SUM = 1,
AVERAGE = 2,
IRTRACC3D = 3,
IRTRACC3D_ABDOMEN = 4,
IRTRACC3D_LOWERTHORAX = 5
}
public Operations Operation { get; set; } = Operations.SUM;
public string CalculatedValueCode { get; set; } = "???????????????X";
private List _inputChannelIds = new List();
public string[] InputChannelIds
{
get => _inputChannelIds.ToArray();
set => _inputChannelIds = new List(value);
}
public byte[] InputChannelIdsBlob
{
get
{
var text = string.Join(System.Globalization.CultureInfo.InvariantCulture.TextInfo.ListSeparator, InputChannelIds);
return System.Text.Encoding.UTF8.GetBytes(text);
}
set
{
_inputChannelIds.Clear();
var text = System.Text.Encoding.UTF8.GetString(value);
InputChannelIds = text.Split(new[] { System.Globalization.CultureInfo.InvariantCulture.TextInfo.ListSeparator }, StringSplitOptions.None);
}
}
public string CFCForInputChannels { get; set; } = "";
public string ChannelFilterClassForOutput { get; set; } = "";
public string TestSetupName { get; set; }
public string Name { get; set; }
}
}