using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Xml.Serialization; namespace TBF.BenchControl { public class ProcedureParamsBase : Generic.IProcedureParams { protected Entities.ComponentProcedure procedureParamsEntity; public string ComponentName { get { return componentName; } } protected string componentName; public Entities.Procedure Procedure { get { return procedure; } } protected Entities.Procedure procedure; /// /// Parameterless constructor required for serialization /// public ProcedureParamsBase() { InitializeAll(); } /// To be overridden public virtual void InitializeAll() { } /// To be overridden public virtual void UpdateProcedureParams(Entities.ComponentProcedure dbEntity) { } public void UpdateProcedureParams(string cmpntName, Entities.Procedure procedure) { /// Search for an existing matching entity foreach (var procPrms in procedure.MoreParams) { if (procPrms.CmpntName.Equals(cmpntName)) { UpdateProcedureParams(procPrms); return; } } /// Create a new entity and add it to the list test.MoreParams InitializeAll(); Entities.ComponentProcedure componentTest = ToDbEntity(cmpntName, procedure); procedure.MoreParams.Add(componentTest); } public TBF.Entities.ComponentProcedure ToDbEntity(string componentName, 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 = componentName; 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); procedureParamsEntity.Parameters = writer.ToString(); procedureParamsEntity.CmpntName = componentName; procedureParamsEntity.Procedure = procedure; } } 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(); } } }