package freenet.node;
import java.io.File;
/**
* Mapping of files managed by the node to their respective locations.
*/
public enum NodeFile {
Seednodes(InstallDirectory.Node, "seednodes.fref"),
InstallerWindows(InstallDirectory.Run, "freenet-latest-installer-windows.exe"),
InstallerNonWindows(InstallDirectory.Run, "freenet-latest-installer-nonwindows.jar"),
IPv4ToCountry(InstallDirectory.Run, "IpToCountry.dat");
private final InstallDirectory dir;
private final String filename;
/**
* Gets the absolute file path associated with this file for the given node instance.
*/
public File getFile(Node node) {
return dir.getDir(node).file(filename);
}
/**
* Gets the filename associated with this file.
*/
public String getFilename() {
return filename;
}
/**
* Gets the base directory with this file for the given node instance.
*/
public ProgramDirectory getProgramDirectory(Node node) {
return dir.getDir(node);
}
private NodeFile(InstallDirectory dir, String filename) {
this.dir = dir;
this.filename = filename;
}
private enum InstallDirectory {
// node.install.nodeDir
Node() {
@Override
ProgramDirectory getDir(Node node) {
return node.nodeDir();
}
},
// node.install.cfgDir
Cfg() {
@Override
ProgramDirectory getDir(Node node) {
return node.cfgDir();
}
},
// node.install.userDir
User() {
@Override
ProgramDirectory getDir(Node node) {
return node.userDir();
}
},
// node.install.runDir
Run() {
@Override
ProgramDirectory getDir(Node node) {
return node.runDir();
}
},
// node.install.storeDir
Store() {
@Override
ProgramDirectory getDir(Node node) {
return node.storeDir();
}
},
// node.install.pluginDir
Plugin() {
@Override
ProgramDirectory getDir(Node node) {
return node.pluginDir();
}
};
abstract ProgramDirectory getDir(Node node);
}
}