/// <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); } } } }
/// <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; } } }
/// <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; } } }
public ManifestFileItem Clone() { var newItem = new ManifestFileItem(); newItem.UpdateBy(this); return(newItem); }
/// <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); }
public void AddItem(ManifestFileItem item) { if (item == null) { return; } if (_contentField == null) { _contentField = new List <ManifestFileItem>() { item }; return; } _contentField.Add(item); }