ability to certify directories

This commit is contained in:
Zlatin Balevsky
2019-12-09 17:04:11 +00:00
parent f69d4027db
commit 1adb130fba
5 changed files with 33 additions and 14 deletions

View File

@ -51,10 +51,14 @@ class FileTree<T> {
}
synchronized void traverse(File from, FileTreeCallback<T> callback) {
TreeNode node = fileToNode.get(from);
if (node == null)
return
doTraverse(node, callback);
if (from == null) {
doTraverse(root, callback);
} else {
TreeNode node = fileToNode.get(from);
if (node == null)
return
doTraverse(node, callback);
}
}
private void doTraverse(TreeNode<T> node, FileTreeCallback<T> callback) {

View File

@ -19,12 +19,13 @@ import com.muwire.core.filecert.UIImportCertificateEvent;
public class CertificateManager {
private final Core core;
private final FileManager fileManager;
private final Map<Persona, Map<InfoHash,CertificateRequest>> requests = new ConcurrentHashMap<>();
public CertificateManager(Core core) {
public CertificateManager(Core core, FileManager fileManager) {
this.core = core;
this.fileManager = fileManager;
}
public void onCertificateFetchEvent(CertificateFetchEvent e) {
@ -78,12 +79,20 @@ public class CertificateManager {
}
void certify(File file) {
SharedFile sf = core.getFileManager().getFileToSharedFile().get(file);
if (sf == null)
return;
UICreateCertificateEvent event = new UICreateCertificateEvent();
event.setSharedFile(sf);
core.getEventBus().publish(event);
if (file.isFile()) {
SharedFile sf = core.getFileManager().getFileToSharedFile().get(file);
if (sf == null)
return;
UICreateCertificateEvent event = new UICreateCertificateEvent();
event.setSharedFile(sf);
core.getEventBus().publish(event);
} else {
for (SharedFile sf : fileManager.getAllFiles(file)) {
UICreateCertificateEvent event = new UICreateCertificateEvent();
event.setSharedFile(sf);
core.getEventBus().publish(event);
}
}
}
static class CertificateRequest {

View File

@ -64,8 +64,12 @@ public class FileManager {
}
List<SharedFile> getAllFiles() {
return getAllFiles(null);
}
List<SharedFile> getAllFiles(File parent) {
TraverseCallback cb = new TraverseCallback();
fileTree.traverse(cb);
fileTree.traverse(parent, cb);
return cb.found;
}

View File

@ -150,7 +150,7 @@ public class MuWireClient {
TrustManager trustManager = new TrustManager();
core.getEventBus().register(TrustEvent.class, trustManager);
CertificateManager certificateManager = new CertificateManager(core);
CertificateManager certificateManager = new CertificateManager(core, fileManager);
core.getEventBus().register(CertificateFetchedEvent.class, certificateManager);
core.getEventBus().register(CertificateFetchEvent.class, certificateManager);

View File

@ -23,6 +23,8 @@ public class Util {
// a file, but it's not worth it for just a handful.
private static final String[] jsStrings = {
_x("View Certificates"),
_x("Certify"),
_x("Certified"),
_x("Import"),
_x("Imported"),
_x("Unsubscribe"),