using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Xml.Serialization; namespace TBF.BenchControl { public class TestParamsBase : Generic.ITestParams { protected Entities.ComponentTest testParamsEntity; public string ComponentName { get { return componentName; } } protected string componentName; public Entities.Test Test { get { return test; } } protected Entities.Test test; /// /// Parameterless constructor required for serialization /// public TestParamsBase() { InitializeAll(); } /// To be overridden public virtual void InitializeAll() { } /// To be overridden public virtual void UpdateTestParams(Entities.ComponentTest dbEntity) { } public void UpdateTestParams(string cmpntName, Entities.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(); Entities.ComponentTest componentTest = ToDbEntity(cmpntName, test); test.MoreParams.Add(componentTest); } public TBF.Entities.ComponentTest ToDbEntity(string componentName, Entities.Test test) { using (var writer = new StringWriter()) { /// Serialize this class with parameters (new XmlSerializer(GetType())).Serialize(writer, this); /// Create and return the ComponentTest entity TBF.Entities.ComponentTest entity = new TBF.Entities.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(); } } }