Beispiel #1
0
        /// <summary>
        /// Обновление манифеста набором файлов. Новые будут добавлены, старые обновлены.
        /// </summary>
        /// <param name="newItems">Новые данные для обновления</param>
        public void UpdateBy(IEnumerable <IManifestFileItem> newItems)
        {
            if (newItems == null)
            {
                return;
            }

            ManifestFileItem curentItem = null;

            if (FilesCount() == 0)
            {
                AddItems(newItems);
            }
            else
            {
                foreach (var newItem in newItems)
                {
                    curentItem = GetItemByFileName(newItem.FileName);
                    if (curentItem != null)
                    {
                        curentItem.UpdateBy(newItem);
                    }
                    else
                    {
                        this.AddItem(newItem);
                    }
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Замена элемента по точному соответствию. Если соответствия не найдено, вставка НЕ производится
        /// </summary>
        /// <param name="oldItem">Старый элемент</param>
        /// <param name="newItem">Новый элемент</param>
        public void ReplaceItem(ManifestFileItem oldItem, ManifestFileItem newItem)
        {
            if (oldItem == null || newItem == null)
            {
                return;
            }

            if (_contentField.Count == 0)
            {
                return;
            }

            ManifestFileItem curent = null;

            for (int i = 0; i < _contentField.Count; i++)
            {
                curent = _contentField[i];

                if (curent != null && curent.Equals(oldItem))
                {
                    _contentField[i] = newItem;
                    break;
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Удаление элемента из манифесте по точному соответствию
        /// </summary>
        /// <param name="item">Удаляемый элемент</param>
        public void RemoveItem(IManifestFileItem item)
        {
            if (item == null)
            {
                return;
            }

            if (_contentField.Count == 0)
            {
                return;
            }

            ManifestFileItem curent = null;

            for (int i = 0; i < _contentField.Count; i++)
            {
                curent = _contentField[i];

                if (curent != null && curent.Equals(item))
                {
                    _contentField.Remove(curent);
                    break;
                }
            }
        }
Beispiel #4
0
        public ManifestFileItem Clone()
        {
            var newItem = new ManifestFileItem();

            newItem.UpdateBy(this);

            return(newItem);
        }
Beispiel #5
0
        /// <summary>
        /// Добавление нового файла в манифест
        /// </summary>
        /// <param name="item">Данные о файле</param>
        /// <exception cref="NullReferenceException">При передаче пустой ссылки</exception>
        public void AddItem(IManifestFileItem item)
        {
            if (item == null)
            {
                throw new NullReferenceException("Попытка добавления информации о файле в манифест по пустой ссылке");
            }

            ManifestFileItem newItem = new ManifestFileItem();

            newItem.UpdateBy(item);

            AddItem(newItem);
        }
Beispiel #6
0
        public void AddItem(ManifestFileItem item)
        {
            if (item == null)
            {
                return;
            }

            if (_contentField == null)
            {
                _contentField = new List <ManifestFileItem>()
                {
                    item
                };
                return;
            }

            _contentField.Add(item);
        }