138 lines
3.2 KiB
C#
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);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|