mirror of https://github.com/zlatinb/muwire
genericize file tree
parent
ecfd4180c0
commit
23b2c912e2
|
@ -2,12 +2,12 @@ package com.muwire.core.files
|
|||
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
class FileTree {
|
||||
class FileTree<T> {
|
||||
|
||||
private final TreeNode root = new TreeNode()
|
||||
private final Map<File, TreeNode> fileToNode = new ConcurrentHashMap<>()
|
||||
|
||||
synchronized void add(File file) {
|
||||
synchronized void add(File file, T value) {
|
||||
List<File> path = new ArrayList<>()
|
||||
path.add(file)
|
||||
while (file.getParentFile() != null) {
|
||||
|
@ -29,6 +29,7 @@ class FileTree {
|
|||
}
|
||||
current = existing
|
||||
}
|
||||
current.value = value;
|
||||
}
|
||||
|
||||
synchronized boolean remove(File file) {
|
||||
|
@ -45,9 +46,10 @@ class FileTree {
|
|||
true
|
||||
}
|
||||
|
||||
public static class TreeNode {
|
||||
public static class TreeNode<T> {
|
||||
TreeNode parent
|
||||
File file
|
||||
T value;
|
||||
final Set<TreeNode> children = new HashSet<>()
|
||||
|
||||
public int hashCode() {
|
||||
|
|
|
@ -10,8 +10,8 @@ class FileTreeTest {
|
|||
File b = new File(a, "b")
|
||||
File c = new File(b, "c")
|
||||
|
||||
FileTree tree = new FileTree()
|
||||
tree.add(c)
|
||||
FileTree<Void> tree = new FileTree<>()
|
||||
tree.add(c,null)
|
||||
|
||||
assert tree.root.children.size() == 1
|
||||
assert tree.fileToNode.size() == 3
|
||||
|
@ -28,12 +28,12 @@ class FileTreeTest {
|
|||
File c = new File(b, "c")
|
||||
File d = new File(b, "d")
|
||||
|
||||
FileTree tree = new FileTree()
|
||||
tree.add(c)
|
||||
FileTree<Void> tree = new FileTree<>()
|
||||
tree.add(c,null)
|
||||
|
||||
assert tree.fileToNode.size() == 3
|
||||
|
||||
tree.add(d)
|
||||
tree.add(d, null)
|
||||
assert tree.fileToNode.size() == 4
|
||||
|
||||
tree.remove(d)
|
||||
|
|
Loading…
Reference in New Issue