Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

51
LINES

< > BotCompany Repo | #1038776 // BackupThinner

JavaX fragment (include) [tags: use-pretranspiled]

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  
}

Author comment

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]