using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Intel.Management.PSModule { class DriveContainer : DriveItem { //cached items in container protected DriveItem[] _items; protected static readonly DriveItem[] _emptyContainer = new DriveItem[0]; public DriveContainer(string name,DriveItem parent) : base(name,new Container(), parent) { _items = null; } public DriveContainer(string name, DriveItem[] items, DriveItem parent) : base(name,new Container(),parent) { _items = items; } public DriveContainer(string name, DriveItem item, DriveItem parent) : base(name, new Container(),parent) { _items = new DriveItem[1]; _items[0] = item; item.SetParent(this); } public void SetChildItems(DriveItem[] items) { _items = items; } public DriveItem[] GetChildItems() { return _items; } public override void Clear() { _items = null; } public virtual void GetChildItems(ChildWriter childWriter) { } public override void RemoveItem(DriveProvider provider) { //RemoveChildItem(this); } public override bool RemoveChildItem(DriveItem itemToRemove) { return RemoveChildItem(itemToRemove,false); } public bool RemoveChildItem(DriveItem itemToRemove,bool recurse) { List list = new List(); if (_items != null) list.AddRange(_items); bool result = list.Remove(itemToRemove); if (result) { list.Sort(_defaultComparer); _items = list.ToArray(); } else if (recurse) { foreach (DriveItem item in list) { if (item is DriveContainer) { result = ((DriveContainer)item).RemoveChildItem(itemToRemove,recurse); if (result) break; } } } return result; } protected List GetChildList() { List list = null; if (_items == null) list = new List(); else list = new List(_items); return list; } protected DriveContainer Parent { get { return _parent as DriveContainer; } } public override void AddChildItem(DriveItem itemToAdd) { List list = new List(); if (_items != null)list.AddRange(_items); list.Add(itemToAdd); list.Sort(_defaultComparer); _items = list.ToArray(); } public override object GetReturnObject() { return new NameValuePairItem(Name, Value); } } }