Example #1
0
        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;
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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;
        }
Example #6
0
        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);
        }
Example #7
0
 public override FBAbstractElement Clone()
 {
     FBDirectory newDir = new FBDirectory(this.Name);
     foreach (FBAbstractElement abs in this.content.Values)
     {
         newDir.addContent(abs.Clone());
     }
     return newDir;
 }