示例#1
0
        public virtual void Put(int fieldPos, object fieldValue)
        {
            switch (fieldPos)
            {
            case 0: this._dataObject = (Energistics.Etp.v11.Datatypes.Object.DataObject)fieldValue; break;

            default: throw new AvroRuntimeException("Bad index " + fieldPos + " in Put()");
            }
            ;
        }
        public virtual void Put(int fieldPos, object fieldValue)
        {
            switch (fieldPos)
            {
            case 0: this._channelUri = (System.String)fieldValue; break;

            case 1: this._channelId = (System.Int64)fieldValue; break;

            case 2: this._indexes = (IList <Energistics.Etp.v11.Datatypes.ChannelData.IndexMetadataRecord>)fieldValue; break;

            case 3: this._channelName = (System.String)fieldValue; break;

            case 4: this._dataType = (System.String)fieldValue; break;

            case 5: this._uom = (System.String)fieldValue; break;

            case 6: this._startIndex = (System.Nullable <long>)fieldValue; break;

            case 7: this._endIndex = (System.Nullable <long>)fieldValue; break;

            case 8: this._description = (System.String)fieldValue; break;

            case 9: this._status = (Energistics.Etp.v11.Datatypes.ChannelData.ChannelStatuses)fieldValue; break;

            case 10: this._contentType = (System.String)fieldValue; break;

            case 11: this._source = (System.String)fieldValue; break;

            case 12: this._measureClass = (System.String)fieldValue; break;

            case 13: this._uuid = (System.String)fieldValue; break;

            case 14: this._customData = (IDictionary <string, Energistics.Etp.v11.Datatypes.DataValue>)fieldValue; break;

            case 15: this._domainObject = (Energistics.Etp.v11.Datatypes.Object.DataObject)fieldValue; break;

            default: throw new AvroRuntimeException("Bad index " + fieldPos + " in Put()");
            }
            ;
        }
        protected virtual void LogChannelData(IList <IDataItem> dataItems)
        {
            var dataObjects = new List <Tuple <ChannelMetadataViewModel, byte[]> >();

            // Check if producer is sending index/value pairs
            if (!dataItems.Take(1).SelectMany(x => x.Indexes.Cast <object>()).Any())
            {
                for (int i = 0; i < dataItems.Count; i += 2)
                {
                    var indexItem    = dataItems[i];
                    var valueItem    = dataItems[i + 1];
                    var valueChannel = Channels.FirstOrDefault(c => c.Record.ChannelId == valueItem.ChannelId);

                    if (valueChannel != null && valueItem.Value.Item is byte[])
                    {
                        dataObjects.Add(Tuple.Create(valueChannel, (byte[])valueItem.Value.Item));
                    }

                    Parent.Details.Append(string.Format(
                                              "[ \"{0}\", {1}, {2} ],{3}",
                                              valueChannel?.Record.ChannelName,
                                              indexItem.Value.Item,
                                              valueItem.Value.Item,
                                              Environment.NewLine));
                }
            }
            else // DataItems with indexes
            {
                var dataValues = string.Join(Environment.NewLine, dataItems.Select(x =>
                {
                    var channel      = Channels.FirstOrDefault(c => c.Record.ChannelId == x.ChannelId);
                    var channelIndex = channel?.Record.Indexes.Cast <IIndexMetadataRecord>().FirstOrDefault();
                    var isTimeIndex  = Parent.EtpExtender.IsTimeIndex(channelIndex);
                    var indexValue   = x.Indexes.Cast <object>().FirstOrDefault();

                    var indexFormat = isTimeIndex
                        ? DateTimeExtensions.FromUnixTimeMicroseconds(Convert.ToInt64(indexValue)).ToString("o")
                        : $"{(indexValue as long?)?.IndexFromScale(channelIndex?.Scale ?? 3) ?? indexValue}";

                    if (channel != null && x.Value.Item is byte[])
                    {
                        dataObjects.Add(Tuple.Create(channel, (byte[])x.Value.Item));
                    }

                    return(string.Format("[ \"{0}\", {1}, {2} ] // Channel ID: {3} // {4}",
                                         channel?.Record.ChannelName,
                                         indexValue,
                                         x.Value.Item,
                                         x.ChannelId,
                                         indexFormat));
                }));

                Parent.Details.Append(string.Format(
                                          "{0}{1}",
                                          dataValues,
                                          Environment.NewLine));
            }

            // Check if user wants to see decoded byte arrays
            if (!Model.DecodeByteArrays)
            {
                return;
            }

            foreach (var tuple in dataObjects)
            {
                var dataObject = new Energistics.Etp.v11.Datatypes.Object.DataObject
                {
                    Data = tuple.Item2
                };

                var xml = dataObject.GetString();
                if (string.IsNullOrWhiteSpace(xml))
                {
                    continue;
                }

                Parent.DataObject.Append(Environment.NewLine + Environment.NewLine);
                Parent.DataObject.Append(xml);
            }
        }