public static int SaveValueWhenConditionsAreMet(MeasuredValue currentValue, CompressionCondition condition) { if (currentValue == null) { throw new ArgumentNullException("currentValue"); } if (condition == null) { throw new ArgumentNullException("condition"); } // if the current value has the OPCQuality of "NoValue" // return without writting the value if (currentValue.Quality == OPCQuality.NoValue) { _logger.DebugFormat("current value {0} has the OPCQuality of \"NoValue\"", currentValue.Name); return(0); } TypeCode typeCode = currentValue.GetTypeCode(); MeasuredValue previousValue = ReadLastMeasuredValueFromLocalDB(currentValue.Name, typeCode); if (false == condition.ShouldCurrentValueBeWritten(currentValue, previousValue)) { return(0); } int rowAffected = InsertIntoDatabase(currentValue, typeCode); return(rowAffected); }
public void GetConnectionCheck() { var now = DateTime.Now; var mv = new MeasuredValue() { Name = "", Description = "meine beschreibung", TimeStamp = now, Value = "test", Quality = OPCQuality.NoValue }; int affectedRows = ValueTableWriter.SaveValueWhenConditionsAreMet(mv, CompressionCondition.GetDefaultCondition()); Assert.AreEqual(0, affectedRows); //ValueTableWriter valueTable = new ValueTableWriter(); //MeasuredValue mv = valueTable.ReadLastMeasuredValueFromLocalDB("test", TypeCode.Double); //Assert.AreEqual(OPCQuality.NoValue, mv.Quality); }
public void InsertIntoIntTable() { DateTime now = DateTime.Now; string tagName = "MyMeasuredValue"; int tagValue = 12345678; string remark = "Bla Bla"; int count = ValueTableWriter.SaveValueWhenConditionsAreMet( new MeasuredValue() { Name = tagName, TimeStamp = now, Quality = OPCQuality.Good, Value = tagValue, Description = remark }, CompressionCondition.GetNoCompressionCondition()); Assert.AreEqual(1, count); count = ValueTableWriter.SaveValueWhenConditionsAreMet( new MeasuredValue() { Name = tagName, TimeStamp = now + new TimeSpan(0, 0, 0, 1, 1), Quality = OPCQuality.Good, Value = tagValue, Description = remark }, CompressionCondition.GetDefaultCondition()); Assert.AreEqual(0, count); MeasuredValue mv = ValueTableWriter.ReadLastMeasuredValueFromLocalDB("MyMeasuredValue", TypeCode.Int32); Assert.AreEqual(tagName, mv.Name); TimeSpan sp = now - mv.TimeStamp; // Datenbankgenauigkeit ist bei Datum nicht hoch genug Assert.Greater(0.1, sp.TotalSeconds); Assert.AreEqual(tagValue, mv.Value); Assert.AreEqual(OPCQuality.Good, mv.Quality); Assert.AreEqual(remark, mv.Description); }