Libraryless. Click here for Pure Java version (11005L/62K).
sclass BackupThinner {
settable File dir;
settable TimeZone timeZone = defaultTimeZone();
settable long currentTime = now();
// all files in the backup directory
settable L<File> allFiles;
// all backup files
// sorted by date (youngest first)
L<File> files;
// backup files that can be deleted
gettable L<File> deletableFiles;
Map<File, Double> ageMap;
// age = age in days
swappable bool shouldKeep(double age, double lastAge) {
ret defaultAgeBasedBackupRetentionStrategy_shouldKeep(age, lastAge);
}
void scan {
if (allFiles == null)
allFiles = listFilesNotDirs(dir);
deletableFiles = new L;
files = new L;
ageMap = new Map;
for (File f : allFiles) {
var bfa = new BackupFileAge().timeZone(timeZone).currentTime(currentTime);
if (!bfa.fileName(f.getName()).parse()) continue;
continue unless eq(bfa.originalName, "concepts.structure.gz");
ageMap.put(f, bfa.ageInDays());
files.add(f);
}
sortByMap_inPlace(files, ageMap);
double lastAge = -1;
for (File f : files) {
double age = ageMap.get(f);
if (!shouldKeep(age, lastAge))
deletableFiles.add(f);
else
lastAge = age;
}
}
}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: | 3103 / 3404 |
| Version history: | 6 change(s) |
| Referenced in: | #1003674 - Standard Classes + Interfaces (LIVE continued in #1034167) #1038777 - test_BackupThinner |