public override FBAbstractElement Clone() { FBDirectory newDir = new FBDirectory(this.Name); foreach (FBAbstractElement abs in this.content.Values) { newDir.addContent(abs.Clone()); } return(newDir); }
public override FBAbstractElement generate() { DirectoryInfo dinfo = new DirectoryInfo(this.path); FBDirectory newDir = new FBDirectory(dinfo.Name); foreach (DirectoryInfo dir in dinfo.GetDirectories()) { FBDirectoryBuilder db = new FBDirectoryBuilder(dir.FullName); newDir.addContent(db.generate()); } foreach (FileInfo fil in dinfo.GetFiles()) { FBFileBuilder fb = new FBFileBuilder(fil.FullName); newDir.addContent(fb.generate()); } return newDir; }
static public FBDirectory operator -(FBDirectory first, FBDirectory second) { FBDirectory ret = new FBDirectory(first.Name); ret.Name = first.Name; foreach (KeyValuePair <string, FBAbstractElement> entry in first.content) { if (!second.content.ContainsKey(entry.Key)) { ret.addContent(entry.Value.Clone()); } else { if (!entry.Value.isEqualTo(second.content[entry.Key])) { if (entry.Value.GetType().Equals(first.GetType()) && second.content[entry.Key].GetType().Equals(first.GetType())) { ret.addContent((FBDirectory)entry.Value - (FBDirectory)second.content[entry.Key]); continue; } ret.addContent(entry.Value.Clone()); continue; } if (entry.Value.GetType() != first.GetType()) { if (entry.Value.Name != second.content[entry.Key].Name) { ret.addContent(entry.Value.Clone()); } } } } if (ret.content.Count == 0) { return(null); } return(ret); }
override public FBAbstractElement generate() { DirectoryInfo dinfo = new DirectoryInfo(this.path); FBDirectory newDir = new FBDirectory(dinfo.Name); foreach (DirectoryInfo dir in dinfo.GetDirectories()) { if ((dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) { FBDirectoryBuilder db = new FBDirectoryBuilder(dir.FullName); newDir.addContent(db.generate()); } } foreach (FileInfo fil in dinfo.GetFiles()) { FBFileBuilder fb = new FBFileBuilder(fil.FullName); newDir.addContent(fb.generate()); } return(newDir); }
public static FBDirectory operator -(FBDirectory first, FBDirectory second) { FBDirectory ret = new FBDirectory(first.Name); ret.Name = first.Name; foreach (KeyValuePair<string, FBAbstractElement> entry in first.content) { if (!second.content.ContainsKey(entry.Key)) { ret.addContent(entry.Value.Clone()); } else { if (!entry.Value.isEqualTo(second.content[entry.Key])) { if (entry.Value.GetType().Equals(first.GetType()) && second.content[entry.Key].GetType().Equals(first.GetType())) { ret.addContent((FBDirectory)entry.Value - (FBDirectory)second.content[entry.Key]); continue; } ret.addContent(entry.Value.Clone()); continue; } if (entry.Value.GetType() != first.GetType()) { if (entry.Value.Name != second.content[entry.Key].Name) { ret.addContent(entry.Value.Clone()); } } } } if (ret.content.Count == 0) return null; return ret; }
private void modifyDir(Dictionary<string, List<TreeViewItemFat>> revertItems, FBDirectory dir, string relPath) { // recursion inside the existing directories foreach (FBAbstractElement el in dir.content.Values) { if (el.GetType() == typeof(FBDirectory)) { modifyDir(revertItems, (FBDirectory)el, relPath+"\\"+el.Name); } } //add new directory if necessary foreach (string key in revertItems.Keys) { if (key.Contains(relPath+"\\")) { string newDirName = key.Substring((relPath + "\\").Length); newDirName = newDirName.Split('\\')[0]; if (!dir.content.ContainsKey(newDirName)) { dir.addContent(new FBDirectory(newDirName)); modifyDir(revertItems, (FBDirectory)dir.content[newDirName], relPath + "\\" + newDirName); } } } //adding or replacing files in the directory if (revertItems.ContainsKey(relPath)) { foreach (TreeViewItemFat tv in revertItems[relPath]) { if (dir.content.ContainsKey(tv.Name)) { dir.content.Remove(tv.Name); } dir.addContent(tv.item); } } //revertItems.Remove(relPath); }
public override FBAbstractElement Clone() { FBDirectory newDir = new FBDirectory(this.Name); foreach (FBAbstractElement abs in this.content.Values) { newDir.addContent(abs.Clone()); } return newDir; }