Beispiel #1
0
 /// <summary>
 /// Очистить таблицу срезов
 /// </summary>
 public override void Clear()
 {
     base.Clear();
     LastStoredSrez = null;
     AddedSrezList.Clear();
     ModifiedSrezList.Clear();
 }
Beispiel #2
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);
        }
Beispiel #3
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);
        }
Beispiel #4
0
        /// <summary>
        /// Accept slice table changes
        /// </summary>
        public void AcceptChanges()
        {
            foreach (var lightSrez in SrezList.Values)
            {
                if (lightSrez is Srez srez)
                {
                    srez.State = DataRowState.Unchanged;
                }
            }

            AddedSrezList.Clear();
            ModifiedSrezList.Clear();
        }
Beispiel #5
0
        /// <summary>
        /// Принять изменения таблицы срезов
        /// </summary>
        public void AcceptChanges()
        {
            foreach (SrezTableLight.Srez lightSrez in SrezList.Values)
            {
                Srez srez = lightSrez as Srez;
                if (srez != null)
                {
                    srez.State = DataRowState.Unchanged;
                }
            }

            AddedSrezList.Clear();
            ModifiedSrezList.Clear();
        }
Beispiel #6
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);
         }
     }
 }