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: | 2756 / 3038 |
| Version history: | 6 change(s) |
| Referenced in: | [show references] |