138 lines
3.2 KiB
C#

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<DriveItem> list = new List<DriveItem>();
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<DriveItem> GetChildList()
{
List<DriveItem> list = null;
if (_items == null)
list = new List<DriveItem>();
else
list = new List<DriveItem>(_items);
return list;
}
protected DriveContainer Parent
{
get
{
return _parent as DriveContainer;
}
}
public override void AddChildItem(DriveItem itemToAdd)
{
List<DriveItem> list = new List<DriveItem>();
if (_items != null)list.AddRange(_items);
list.Add(itemToAdd);
list.Sort(_defaultComparer);
_items = list.ToArray();
}
public override object GetReturnObject()
{
return new NameValuePairItem(Name, Value);
}
}
}