Exemple #1
0
        // 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());
        }
Exemple #2
0
        /// <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);
        }