/// /// Copyright (c) 2013-2015 Sensus Metering Systems /// using System; using System.IO; using System.Text; using System.Xml.Serialization; using Config.Entities; using TBF.Rig.Generic; using TBF.Resources; namespace TBF.Rig.RegisterReaders.StandingStartStop { public class RRProcParams : ProcedureParamsBase, IParamsProvider, IProcedureParams { public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(RRProcParams) })[0]; public override XmlSerializer GetSerializer() { return Serializer; } public double PulsesPerLtr; /// Target low limit of the flow increase or decrease public override void InitializeAll() { PulsesPerLtr = 1.0; } string[] paramNames = new string[] { Strings.PulsesPerLtr, }; public override string ParamName(int i) { return paramNames[i]; } public override int ParamsCount() { return paramNames.Length; } public override string ToString(int i) { switch (i) { case 0: return PulsesPerLtr.ToString(); default: return string.Empty; } } /// Retrieves parameters from UI controls public CfgUpdateFlags UpdateParam(int i, string strValue) { switch (i) { case 0: PulsesPerLtr = Utils.ParseUDouble(strValue); return CfgUpdateFlags.None; default: return CfgUpdateFlags.None; } } /// Verifies whether strings in UI controls represent valid parameters public bool ValidateParam(int i, string strValue, out string message) { message = string.Empty; double dummy; switch (i) { case 0: if (Utils.TryParseUDouble(strValue, out dummy)) return true; break; default: message = "Invalid index"; return false; } message = ParamName(i) + " is invalid"; return false; } void CopyContentTo(RRProcParams prms) { prms.PulsesPerLtr = this.PulsesPerLtr; } public IParamsProvider Clone() { RRProcParams pars = new RRProcParams(); CopyContentTo(pars); return pars; } public override void UpdateFromDbEntity(ComponentProcedure dbEntity) { if (dbEntity == null) return; try { RRProcParams tmp = Serializer.Deserialize(new StringReader(dbEntity.Parameters)) as RRProcParams; procedureParamsEntity = dbEntity; componentName = dbEntity.CmpntName; procedure = dbEntity.Procedure; if (tmp != null) tmp.CopyContentTo(this); } catch { } } public RRProcParams() { } public RRProcParams(bool initialize) { if (initialize) InitializeAll(); } public RRProcParams(ComponentProcedure procedureParamsEntity, string componentName, Procedure procedure) { this.procedureParamsEntity = procedureParamsEntity; this.componentName = componentName; } } }