Libraryless. Click here for Pure Java version (11005L/62K).
1 | sclass BackupThinner { |
2 | settable File dir; |
3 | |
4 | settable TimeZone timeZone = defaultTimeZone(); |
5 | settable long currentTime = now(); |
6 | |
7 | // all files in the backup directory |
8 | settable L<File> allFiles; |
9 | |
10 | // all backup files |
11 | // sorted by date (youngest first) |
12 | L<File> files; |
13 | |
14 | // backup files that can be deleted |
15 | gettable L<File> deletableFiles; |
16 | |
17 | Map<File, Double> ageMap; |
18 | |
19 | // age = age in days |
20 | swappable bool shouldKeep(double age, double lastAge) { |
21 | ret defaultAgeBasedBackupRetentionStrategy_shouldKeep(age, lastAge); |
22 | } |
23 | |
24 | void scan { |
25 | if (allFiles == null) |
26 | allFiles = listFilesNotDirs(dir); |
27 | |
28 | deletableFiles = new L; |
29 | files = new L; |
30 | ageMap = new Map; |
31 | |
32 | for (File f : allFiles) { |
33 | var bfa = new BackupFileAge().timeZone(timeZone).currentTime(currentTime); |
34 | if (!bfa.fileName(f.getName()).parse()) continue; |
35 | |
36 | continue unless eq(bfa.originalName, "concepts.structure.gz"); |
37 | ageMap.put(f, bfa.ageInDays()); |
38 | files.add(f); |
39 | } |
40 | |
41 | sortByMap_inPlace(files, ageMap); |
42 | double lastAge = -1; |
43 | for (File f : files) { |
44 | double age = ageMap.get(f); |
45 | if (!shouldKeep(age, lastAge)) |
46 | deletableFiles.add(f); |
47 | else |
48 | lastAge = age; |
49 | } |
50 | } |
51 | } |
Began life as a copy of #1011269
download show line numbers debug dex old transpilations
Travelled to 1 computer(s): mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1038776 |
Snippet name: | BackupThinner |
Eternal ID of this version: | #1038776/7 |
Text MD5: | 6b16fd355ee79c5b649e2eaa2a01fddc |
Transpilation MD5: | 9909a6b116b81b654ce8d4ed913a0172 |
Author: | stefan |
Category: | javax |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2025-08-30 11:38:50 |
Source code size: | 1317 bytes / 51 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 2609 / 2920 |
Version history: | 6 change(s) |
Referenced in: | [show references] |