/// /// Copyright (c) 2013-2015 Sensus Metering Systems /// using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Xml.Serialization; using Config.Entities; namespace TBF.BenchControl { public class TestParamsBase : Generic.ITestParams { protected ComponentTest testParamsEntity; public string ComponentName { get { return componentName; } } protected string componentName; public Test Test { get { return test; } } protected Test test; /// /// Parameterless constructor required for serialization /// public TestParamsBase() { InitializeAll(); } /// To be overridden public virtual void InitializeAll() { } /// To be overridden public virtual void UpdateTestParams(ComponentTest dbEntity) { } public void UpdateTestParams(string cmpntName, Test test) { /// Search for an existing matching entity foreach (var tstPrms in test.MoreParams) { if (tstPrms.CmpntName.Equals(cmpntName)) { UpdateTestParams(tstPrms); return; } } /// Create a new entity and add it to the list test.MoreParams InitializeAll(); this.testParamsEntity = this.ToDbEntity(cmpntName, test); this.test = test; this.componentName = cmpntName; test.MoreParams.Add(testParamsEntity); } public ComponentTest ToDbEntity(string componentName, Test test) { using (var writer = new StringWriter()) { /// Serialize this class with parameters (new XmlSerializer(GetType())).Serialize(writer, this); /// Create and return the ComponentTest entity ComponentTest entity = new ComponentTest(); entity.CmpntName = componentName; entity.Parameters = writer.ToString(); entity.Test = test; return entity; } } public void UpdateDbEntity() { using (var writer = new StringWriter()) { /// Serialize this class and update the entity (new XmlSerializer(GetType())).Serialize(writer, this); testParamsEntity.Parameters = writer.ToString(); testParamsEntity.CmpntName = componentName; testParamsEntity.Test = test; } } public virtual string ParamName(int i) { return string.Empty; } public virtual int ParamsCount() { return 0; } public virtual string ToString(int i) { return string.Empty; } 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(); } } }