/// <summary> /// Creates a directory /// </summary> /// <param name="parent">Parent</param> /// <param name="name">Name</param> /// <param name="comment">Comment</param> /// <returns>Rhe directory</returns> static public IBufferDirectory Create(this IBufferDirectory parent, string name, string comment) { if (parent.GetDirectoryNames().Contains(name)) { throw new Exception(name + " already exists"); } IBufferDirectory result = new BufferDirectoryWrapper(parent as BufferDirectoryWrapper, data.Create(parent.Id, name, comment)); StaticExtensionDataPerformerInterfaces.Data.SubmitChanges(); return(result); }
/// <summary> /// Creates a tree /// </summary> /// <param name="data">Database interface</param> /// <returns>roots of trees</returns> static IBufferDirectory[] CreateTree(this IDatabaseInterface data) { Dictionary <object, IParentSet> dictionary = new Dictionary <object, IParentSet>(); IEnumerable <object> list = data.Elements; List <IBufferDirectory> directories = new List <IBufferDirectory>(); foreach (object o in list) { IBufferItem item = data[o]; IParentSet ps = null; if (item is IBufferData) { ps = new BufferItemWrapper(item as IBufferData); } else { ps = new BufferDirectoryWrapper(item); } dictionary[o] = ps; } foreach (IParentSet ps in dictionary.Values) { IBufferItem it = (ps as IBufferItem); object o = it.ParentId; if (!o.Equals(it.Id)) { if (dictionary.ContainsKey(o)) { ps.Parent = dictionary[o] as IBufferItem; } } } List <IBufferDirectory> l = new List <IBufferDirectory>(); foreach (IParentSet ps in dictionary.Values) { if (ps is IBufferDirectory) { IBufferDirectory item = (ps as IBufferDirectory); if (item.Parent == null) { l.Add(item); } } } return(l.ToArray()); }