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; }
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; } } }