/// <summary>
 /// Clone
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public static PublishedDataSetVariableModel Clone(this PublishedDataSetVariableModel model)
 {
     if (model == null)
     {
         return(null);
     }
     return(new PublishedDataSetVariableModel {
         Id = model.Id,
         DiscardNew = model.DiscardNew,
         Attribute = model.Attribute,
         DataChangeFilter = model.DataChangeFilter,
         DeadbandType = model.DeadbandType,
         DeadbandValue = model.DeadbandValue,
         IndexRange = model.IndexRange,
         MetaDataProperties = model.MetaDataProperties?.ToList(),
         PublishedVariableNodeId = model.PublishedVariableNodeId,
         PublishedVariableDisplayName = model.PublishedVariableDisplayName,
         SamplingInterval = model.SamplingInterval,
         SubstituteValue = model.SubstituteValue?.Copy(),
         QueueSize = model.QueueSize,
         HeartbeatInterval = model.HeartbeatInterval,
         BrowsePath = model.BrowsePath,
         MonitoringMode = model.MonitoringMode,
         TriggerId = model.TriggerId
     });
 }
 /// <summary>
 /// Convert published dataset variable to monitored item
 /// </summary>
 /// <param name="publishedVariable"></param>
 /// <param name="displayName"></param>
 /// <returns></returns>
 public static MonitoredItemModel ToMonitoredItem(
     this PublishedDataSetVariableModel publishedVariable,
     string displayName = null)
 {
     if (string.IsNullOrEmpty(publishedVariable?.PublishedVariableNodeId))
     {
         return(null);
     }
     return(new MonitoredItemModel {
         Id = publishedVariable.Id,
         DisplayName = displayName,
         DataChangeFilter = ToDataChangeFilter(publishedVariable),
         EventFilter = null,
         AggregateFilter = null,
         DiscardNew = publishedVariable.DiscardNew,
         StartNodeId = publishedVariable.PublishedVariableNodeId,
         QueueSize = publishedVariable.QueueSize,
         RelativePath = publishedVariable.BrowsePath,
         AttributeId = publishedVariable.Attribute,
         IndexRange = publishedVariable.IndexRange,
         TriggerId = publishedVariable.TriggerId,
         MonitoringMode = publishedVariable.MonitoringMode,
         SamplingInterval = publishedVariable.SamplingInterval
     });
 }
 /// <summary>
 /// Convert to data change filter
 /// </summary>
 /// <param name="publishedVariable"></param>
 /// <returns></returns>
 private static DataChangeFilterModel ToDataChangeFilter(
     this PublishedDataSetVariableModel publishedVariable)
 {
     if (publishedVariable?.DataChangeFilter == null &&
         publishedVariable?.DeadbandType == null &&
         publishedVariable?.DeadbandValue == null)
     {
         return(null);
     }
     return(new DataChangeFilterModel {
         DataChangeTrigger = publishedVariable.DataChangeFilter,
         DeadBandType = publishedVariable.DeadbandType,
         DeadBandValue = publishedVariable.DeadbandValue,
     });
 }
Пример #4
0
 /// <summary>
 /// Clone
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public static PublishedDataSetVariableModel Clone(this PublishedDataSetVariableModel model)
 {
     if (model == null)
     {
         return(null);
     }
     return(new PublishedDataSetVariableModel {
         DiscardNew = model.DiscardNew,
         Attribute = model.Attribute,
         DataChangeFilter = model.DataChangeFilter,
         DeadbandType = model.DeadbandType,
         DeadbandValue = model.DeadbandValue,
         IndexRange = model.IndexRange,
         MetaDataProperties = model.MetaDataProperties?.ToList(),
         PublishedVariableNodeId = model.PublishedVariableNodeId,
         SamplingInterval = model.SamplingInterval,
         SubstituteValue = model.SubstituteValue?.DeepClone(),
         QueueSize = model.QueueSize
     });
 }