171 lines
4.1 KiB
C#
171 lines
4.1 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Xml.Serialization;
|
|
using TBF.BenchControl.Generic;
|
|
using TBF.Resources;
|
|
|
|
namespace TBF.BenchControl.WaterMeter
|
|
{
|
|
public class ProcParams : IParamsProvider, IProcedureParams
|
|
{
|
|
public string Producer; /// Hersteller
|
|
public float Qn;
|
|
public string ApprovalInfo; /// Zulassungszeichen
|
|
public string MetrologicalClass; /// Metr. Klasse
|
|
|
|
string[] paramNames = new string[]
|
|
{
|
|
Strings.Producer,
|
|
Strings.Qn,
|
|
Strings.Approval_info,
|
|
Strings.Metrological_class,
|
|
};
|
|
public string ParamName(int i) { return paramNames[i]; }
|
|
|
|
public string ToString(int i)
|
|
{
|
|
switch (i)
|
|
{
|
|
case 0: return Producer;
|
|
case 1: return Qn.ToString();
|
|
case 2: return ApprovalInfo;
|
|
case 3: return MetrologicalClass;
|
|
default: return string.Empty;
|
|
}
|
|
}
|
|
|
|
public void UpdateParam(int i, string strValue)
|
|
{
|
|
switch (i)
|
|
{
|
|
case 0: Producer = strValue; return;
|
|
case 1: Qn = Utils.ParseUFloat(strValue); return;
|
|
case 2: ApprovalInfo = strValue; return;
|
|
case 3: MetrologicalClass = strValue; return;
|
|
default: return;
|
|
}
|
|
}
|
|
|
|
public bool ValidateParam(int i, string strValue, out string message)
|
|
{
|
|
message = string.Empty;
|
|
|
|
float dummy;
|
|
switch (i)
|
|
{
|
|
case 1:
|
|
if (Utils.TryParseUFloat(strValue, out dummy)) return true;
|
|
break;
|
|
case 0:
|
|
case 2:
|
|
case 3:
|
|
return true;
|
|
default:
|
|
message = "Invalid index";
|
|
return false;
|
|
}
|
|
|
|
message = ParamName(i) + " is invalid";
|
|
return false;
|
|
}
|
|
|
|
#region Boilerplate code
|
|
|
|
public int ParamsCount() { return paramNames.Length; }
|
|
|
|
public override string ToString()
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < ParamsCount(); i++)
|
|
{
|
|
if (i != 0) sb.Append("; ");
|
|
sb.Append(ParamName(i));
|
|
sb.Append("=");
|
|
sb.Append(ToString(i));
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
|
|
[XmlIgnore]
|
|
public Entities.ComponentProcedure ProcedureParamsEntity { get { return procParamsEntity; } }
|
|
Entities.ComponentProcedure procParamsEntity;
|
|
|
|
[XmlIgnore]
|
|
public string ComponentName { get { return componentName; } }
|
|
string componentName;
|
|
|
|
[XmlIgnore]
|
|
public Entities.Procedure Test { get { return test; } }
|
|
Entities.Procedure test;
|
|
|
|
/// Parameterless constructor
|
|
public ProcParams()
|
|
{
|
|
Producer = "";
|
|
Qn = 2.5f;
|
|
ApprovalInfo = "";
|
|
MetrologicalClass = "A";
|
|
}
|
|
|
|
public ProcParams(Entities.ComponentProcedure procParamsEntity, string componentName, Entities.Procedure test)
|
|
: this()
|
|
{
|
|
this.procParamsEntity = procParamsEntity;
|
|
this.componentName = componentName;
|
|
this.test = test;
|
|
}
|
|
|
|
public TBF.Entities.ComponentProcedure ToDbEntity(IComponent component, Entities.Procedure procedure)
|
|
{
|
|
using (var writer = new StringWriter())
|
|
{
|
|
/// Serialize this class with parameters
|
|
(new XmlSerializer(GetType())).Serialize(writer, this);
|
|
|
|
/// Create and return the ComponentProcedure entity
|
|
TBF.Entities.ComponentProcedure entity = new TBF.Entities.ComponentProcedure();
|
|
entity.CmpntName = component.Cfg.Name;
|
|
entity.Parameters = writer.ToString();
|
|
entity.Procedure = procedure;
|
|
return entity;
|
|
}
|
|
}
|
|
|
|
public void UpdateDbEntity()
|
|
{
|
|
using (var writer = new StringWriter())
|
|
{
|
|
/// Serialize this class and update the entity
|
|
(new XmlSerializer(GetType())).Serialize(writer, this);
|
|
procParamsEntity.Parameters = writer.ToString();
|
|
procParamsEntity.CmpntName = componentName;
|
|
procParamsEntity.Procedure = test;
|
|
|
|
}
|
|
}
|
|
|
|
public static IParamsProvider GetProcedureParams(Entities.ComponentProcedure procParamsEntity)
|
|
{
|
|
if (procParamsEntity == null) return new ProcParams();
|
|
|
|
ProcParams procParams;
|
|
try
|
|
{
|
|
procParams = (ProcParams)(new XmlSerializer(typeof(ProcParams)))
|
|
.Deserialize(new StringReader(procParamsEntity.Parameters));
|
|
}
|
|
catch
|
|
{
|
|
procParams = new ProcParams();
|
|
}
|
|
procParams.procParamsEntity = procParamsEntity;
|
|
procParams.componentName = procParamsEntity.CmpntName;
|
|
procParams.test = procParamsEntity.Procedure;
|
|
return procParams;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|