Libraryless. Click here for Pure Java version (4136L/24K).
sclass FileBasedStringMap extends AbstractMap<S> { File dir; bool compress; // use .gz *() {} *(File *dir) {} public S get(O a) { File f = fileForKey(a); ret dropFirstLine(compress ? loadGZTextFile(f) : loadTextFile(f)); } public synchronized Set<Map.Entry<S,S>> entrySet() { Set<Map.Entry<S,S>> set = new HashSet; for (File f : listFiles(dir)) { S md5 = md5FromUniqueFile(f); if (md5 == null) continue; fS key = unquote(compress ? firstLineFromGZTextFile(f) : firstLineFromFile(f)); set.add(new Map.Entry<S,S>() { public S getKey() { ret key; } public S getValue() { ret get(key); } public S setValue(S s) { S old = get(key); put(key, s); ret old; } public bool equals(O o) { if (!(o instanceof Map.Entry)) false; Map.Entry e = (Map.Entry) o; ret eq(getKey(), e.getKey()) && eq(getValue(), e.getValue()); } public int hashCode() { S s = getValue(); ret (getKey()==null ? 0 : getKey().hashCode()) ^ (s == null ? 0 : s.hashCode()); } }); } ret set; } public S put(S a, S b) { S old = get(a); S text = b == null ? null : quote(a) + "\n" + b; if (compress) saveGZTextFile(fileForKey(a), text); else saveTextFile(fileForKey(a), text); ret old; } public S remove(O a) { if (!isString(a)) null; ret put((S) a, null); } File fileForKey(O key) { if (!isString(key)) null; ret new File(assertNotNull(dir), uniqueFileNameUsingMD5_80((S) key) + (compress ? ".gz" : ".txt")); } }
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1015851 |
| Snippet name: | FileBasedStringMap (OK) |
| Eternal ID of this version: | #1015851/19 |
| Text MD5: | 3de2c02edade5345fd8c2591a2858d02 |
| Transpilation MD5: | 7ab041e089a5b3d75cbdaa326b1e8563 |
| Author: | stefan |
| Category: | javax / gui |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2021-08-27 03:46:18 |
| Source code size: | 1687 bytes / 57 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 649 / 1311 |
| Version history: | 18 change(s) |
| Referenced in: | [show references] |