示例#1
0
        public void addDuplicate(HashInfo data, BinaryTreeNode current)
        {
            duplicate aDuplicate = new duplicate();

            if (Regex.IsMatch(current.Value.GetFileName(), @".(\(\d\))|(Copy)."))
            {
                aDuplicate.duplicateA = data;
                aDuplicate.duplicateB = current.Value;
                aDuplicate.message    = data.GetFileName() + " has a copy: " + current.Value.GetFileName();
                aDuplicate.type       = duplicateType.copy;

                //swap node value so the orig file is the one in the bst not the copy "filename (#).ext"
                current.swapNodeValue(data);
            }
            else if ((Regex.IsMatch(data.GetFileName(), @".(\(\d\))|(Copy).")))
            {
                aDuplicate.duplicateA = current.Value;
                aDuplicate.duplicateB = data;
                aDuplicate.message    = current.Value.GetFileName() + " has a copy: " + data.GetFileName();
                aDuplicate.type       = duplicateType.copy;
            }
            else
            {
                aDuplicate.duplicateA = current.Value;
                aDuplicate.duplicateB = data;
                aDuplicate.message    = current.Value.GetFileName() + " has a duplicate: " + data.GetFileName();
                aDuplicate.type       = duplicateType.duplicate;
            }

            aDuplicate.hashCode = data.GetHashString();
            duplicates.Add(aDuplicate);
            duplicateCount++;
            totalDuplicateSize += new FileInfo(data.GetFileName()).Length / 1024.0;
        }
示例#2
0
        public virtual void Add(HashInfo data)
        {
            BinaryTreeNode n = new BinaryTreeNode(data);
            int            result;
            BinaryTreeNode current = root, parent = null;

            while (current != null)
            {
                result = String.Compare(current.Value.GetHashString(), data.GetHashString());
                if (result == 0)
                {
                    duplicates.addDuplicate(data, current);
                    return;
                }
                else if (result > 0)
                {
                    parent  = current;
                    current = current.Left;
                }
                else if (result < 0)
                {
                    parent  = current;
                    current = current.Right;
                }
            }

            if (parent == null)
            {
                root = n;
            }
            else
            {
                result = String.Compare(parent.Value.GetHashString(), data.GetHashString());
                if (result > 0)
                {
                    parent.Left = n;
                }
                else
                {
                    parent.Right = n;
                }
            }
        }