files in htcache are now stored in different hash/tree subdirectories

according to storage method

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@2730 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
orbiter 18 years ago
parent 661f005214
commit e17fea7015

@ -667,32 +667,42 @@ public final class plasmaHTCache {
// generate cache path according to storage method
if (cacheLayout.equals("tree")) {
File FileTree = treeFile(fileName, path);
File FileTree = treeFile(fileName, "tree", path);
if (cacheMigration) {
moveCachedObject(hashFile(fileName, extention, url), FileTree);
moveCachedObject(hashFile(fileName, "hash", extention, url), FileTree);
moveCachedObject(hashFile(fileName, null, extention, url), FileTree); // temporary migration
moveCachedObject(treeFile(fileName, null, path), FileTree); // temporary migration
}
return FileTree;
}
if (cacheLayout.equals("hash")) {
File FileFlat = hashFile(fileName, extention, url);
File FileFlat = hashFile(fileName, "hash", extention, url);
if (cacheMigration) {
moveCachedObject(treeFile(fileName, path), FileFlat);
moveCachedObject(treeFile(fileName, "tree", path), FileFlat);
moveCachedObject(treeFile(fileName, null, path), FileFlat); // temporary migration
moveCachedObject(hashFile(fileName, null, extention, url), FileFlat); // temporary migration
}
return FileFlat;
}
return null;
}
private File treeFile(StringBuffer fileName, String path) {
return new File(this.cachePath, fileName.toString() + path);
private File treeFile(StringBuffer fileName, String prefix, String path) {
StringBuffer f = new StringBuffer(fileName.length() + 30);
f.append(fileName);
if (prefix != null) f.append('/').append(prefix);
f.append(path);
return new File(this.cachePath, f.toString());
}
private File hashFile(StringBuffer fileName, String extention, URL url) {
private File hashFile(StringBuffer fileName, String prefix, String extention, URL url) {
String hexHash = yacySeed.b64Hash2hexHash(indexURL.urlHash(url));
StringBuffer f = new StringBuffer(30);
StringBuffer f = new StringBuffer(fileName.length() + 30);
f.append(fileName);
if (prefix != null) f.append('/').append(prefix);
f.append('/').append(hexHash.substring(0,2)).append('/').append(hexHash.substring(2,4)).append('/').append(hexHash);
if (extention != null) fileName.append(extention);
return new File(this.cachePath, fileName.toString() + f);
return new File(this.cachePath, f.toString());
}
@ -700,16 +710,17 @@ public final class plasmaHTCache {
* This is a helper funktion that extracts the Hash from the filename
*/
public static String getHash(final File f) {
String hexHash, hash;
if ((f.getPath().indexOf("hash")) < 0) return null;
String hexHash = f.getName().substring(0,18);
if (hexHash.indexOf('.') >= 0) return null;
try {
hexHash = f.getName().substring(0,18);
hash = kelondroBase64Order.enhancedCoder.encode(serverCodings.decodeHex(hexHash));
String hash = kelondroBase64Order.enhancedCoder.encode(serverCodings.decodeHex(hexHash));
if (hash.length() == indexURL.urlHashLength) return hash;
return null;
} catch (Exception e) {
//log.logWarning("getHash: " + e.getMessage(), e);
return null;
}
if (hash.length() == indexURL.urlHashLength) return hash;
else return null;
}
/**
@ -754,13 +765,14 @@ public final class plasmaHTCache {
if (url != null) return url;
}
// If we can't get the correct URL, it seems to be a treeed file
final String c = cachePath.toString().replace('\\', '/');
String c = cachePath.toString().replace('\\', '/');
String path = f.toString().replace('\\', '/');
int pos;
if ((pos = path.indexOf("/tree")) >= 0) path = path.substring(0, pos) + path.substring(pos + 5);
if (path.endsWith("ndx")) { path = path.substring(0, path.length() - 3); }
int pos = path.lastIndexOf(c);
if (pos == 0) {
if ((pos = path.lastIndexOf(c)) == 0) {
path = path.substring(pos + c.length());
while (path.startsWith("/")) { path = path.substring(1); }

Loading…
Cancel
Save