// returns string containting MeasValues from measMsgToBeFormatted as defined by the sample measTemplate public static string FormatMeasMsg(MeasMsg measMsgToBeFormatted, MeasMsg measTemplate, bool header, char dataDelimiter) { if ((measMsgToBeFormatted == null) || (measTemplate == null)) { return(string.Empty); } var sb = new StringBuilder(); // header if (header) { sb.Append(GetHeaderByMeasNames(measMsgToBeFormatted, dataDelimiter)); } // body foreach (var meas in measTemplate.MeasList) { // measTemplate.MeasList.ForEach(delegate(Meas meas) { Meas measToBeFormatted = new Meas(); if (measMsgToBeFormatted.GetMeasByName(meas.Name, ref measToBeFormatted)) { sb.Append(meas.ObsValue); } sb.Append(dataDelimiter); //}); } return(sb.ToString()); }
/// <summary> /// If this has slashes on some meas, copy value from the other one /// If this is missing some meas, copy valuee from the other one /// Return negative value if station, obstime, count are different /// Return 0 if measMsg contains same data values as this /// Return number of modified measValues /// </summary> /// <param name="measMsg"></param> /// <returns></returns> public int Merge(MeasMsg measMsg) { List <Meas> itemsToAdd = new List <Meas>(); List <Meas> itemsToChange = new List <Meas>(); int returnValue = 0; if (measMsg == null) { return(-1); } if (measMsg.obsTime != this.obsTime) { return(-2); } if (measMsg.Station != this.station) { return(-3); } for (var i = 0; i < Count; i++) { string measName = measList[i].Name; string dataValueInThisMeasMsg; bool ok = this.GetMeasObsValueByName(measName, out dataValueInThisMeasMsg); if (!ok) { return(-10 - i); } string dataValueInTheOtherMeasMsg; ok = measMsg.GetMeasObsValueByName(measName, out dataValueInTheOtherMeasMsg); if (!ok) { continue; } bool thisContainsSlashesButTheOtherOneDoesnt = dataValueInThisMeasMsg.Contains("/") && !dataValueInTheOtherMeasMsg.Contains("/"); if (thisContainsSlashesButTheOtherOneDoesnt) { Meas tmp = new Meas(); bool ok2 = measMsg.GetMeasByName(measName, ref tmp); Debug.Assert(ok2, "Merge 1"); //if (tmp.Name == "PA1") // SimpleFileWriter.WriteLineToEventFile(DirectoryName.Diag, "öåöå Merging PA1. Old value:" + dataValueInThisMeasMsg + " . New value: " + dataValueInTheOtherMeasMsg); itemsToChange.Add(tmp); returnValue++; } } foreach (var meas in itemsToChange) { this.UpdateMeas(meas); } for (var i = 0; i < measMsg.Count; i++) { Meas meas = measMsg.MeasList[i]; if (!this.ContainsMeas(meas.Name)) { this.AddMeas(meas); returnValue++; } } return(returnValue); }