From d00d6d7e181c6f62ba68e6cbbe0d501e6f287447 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sat, 5 Jun 2021 23:39:25 +0100 Subject: [PATCH] flatten the nameToFile map as well --- .../com/muwire/core/files/FileManager.groovy | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/core/src/main/groovy/com/muwire/core/files/FileManager.groovy b/core/src/main/groovy/com/muwire/core/files/FileManager.groovy index 19af6634..168e35c7 100644 --- a/core/src/main/groovy/com/muwire/core/files/FileManager.groovy +++ b/core/src/main/groovy/com/muwire/core/files/FileManager.groovy @@ -24,7 +24,7 @@ class FileManager { final MuWireSettings settings final Map rootToFiles = Collections.synchronizedMap(new HashMap<>()) final Map fileToSharedFile = Collections.synchronizedMap(new HashMap<>()) - final Map> nameToFiles = new HashMap<>() + final Map nameToFiles = new HashMap<>() final Map> commentToFile = new HashMap<>() final SearchIndex index final FileTree negativeTree = new FileTree<>() @@ -104,12 +104,17 @@ class FileManager { saveNegativeTree() String name = sf.getFile().getName() - Set existingFiles = nameToFiles.get(name) + File[] existingFiles = nameToFiles.get(name) if (existingFiles == null) { - existingFiles = new HashSet<>() - nameToFiles.put(name, existingFiles) + existingFiles = new File[1] + existingFiles[0] = sf.getFile() + } else { + Set unique = new HashSet<>() + existingFiles.each {unique.add(it)} + unique.add(sf.getFile()) + existingFiles = unique.toArray(existingFiles) } - existingFiles.add(sf.getFile()) + nameToFiles.put(name, existingFiles) String comment = sf.getComment() if (comment != null) { @@ -150,11 +155,16 @@ class FileManager { } String name = sf.getFile().getName() - Set existingFiles = nameToFiles.get(name) + File[] existingFiles = nameToFiles.get(name) if (existingFiles != null) { - existingFiles.remove(sf.file) - if (existingFiles.isEmpty()) { + Set unique = new HashSet<>() + unique.addAll(existingFiles) + unique.remove(sf.file) + if (unique.isEmpty()) { nameToFiles.remove(name) + } else { + existingFiles = unique.toArray(new File[0]) + nameToFiles.put(name, existingFiles) } }