Ejemplo n.º 1
0
        /// <summary>
        /// Добавить копию среза в таблицу
        /// </summary>
        /// <remarks>Если в таблице уже существует срез с заданной меткой времени,
        /// то в него копируются данные из исходного среза</remarks>
        public Srez AddSrezCopy(Srez srcSrez, DateTime srezDT)
        {
            if (srcSrez == null)
            {
                throw new ArgumentNullException("srcSrez");
            }

            Srez srez;

            SrezTableLight.Srez lightSrez;

            if (SrezList.TryGetValue(srezDT, out lightSrez))
            {
                // изменение существующего в таблице среза
                srez = (Srez)lightSrez; // возможно исключение InvalidCastException
                srez.CopyDataFrom(srcSrez);

                if (srez.State == DataRowState.Unchanged)
                {
                    srez.State = DataRowState.Modified;
                    ModifiedSrezList.Add(srez);
                }
            }
            else
            {
                // создание и добавление нового среза в таблицу
                srez       = new SrezTable.Srez(srezDT, srcSrez);
                srez.State = DataRowState.Added;
                AddedSrezList.Add(srez);
                SrezList.Add(srezDT, srez);
            }

            return(srez);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Add a copy of the slice to the table
        /// </summary>
        /// <remarks>If there is already a slice in the table with the specified time stamp,
        /// then data is copied from the original slice</remarks>
        public Srez AddSrezCopy(Srez srcSrez, DateTime srezDT)
        {
            if (srcSrez == null)
            {
                throw new ArgumentNullException(nameof(srcSrez));
            }

            Srez srez;

            if (SrezList.TryGetValue(srezDT, out SrezTableLight.Srez lightSrez))
            {
                // change existing slice in the table
                srez = (Srez)lightSrez; // InvalidCastException possible
                srez.CopyDataFrom(srcSrez);

                if (srez.State == DataRowState.Unchanged)
                {
                    srez.State = DataRowState.Modified;
                    ModifiedSrezList.Add(srez);
                }
            }
            else
            {
                // creating and adding a new slice to the table
                srez = new Srez(srezDT, srcSrez)
                {
                    State = DataRowState.Added
                };
                AddedSrezList.Add(srez);
                SrezList.Add(srezDT, srez);
            }

            return(srez);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Отметить срез как добавленный
 /// </summary>
 public void MarkSrezAsAdded(Srez srez)
 {
     if (srez != null)
     {
         if (dataLoading)
         {
             srez.State = DataRowState.Unchanged;
         }
         else
         {
             srez.State    = DataRowState.Added;
             srez.Position = -1;
             AddedSrezList.Add(srez);
         }
     }
 }