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

46
LINES

< > BotCompany Repo | #1038776 // BackupThinner

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

Libraryless. Click here for Pure Java version (11000L/62K).

1  
sclass BackupThinner {
2  
  settable File dir;
3  
  
4  
  settable TimeZone timeZone = defaultTimeZone();
5  
  settable long currentTime = now();
6  
  
7  
  settable L<File> allFiles;
8  
  
9  
  gettable L<File> deletableFiles;
10  
  
11  
  L<File> files;
12  
  Map<File, Double> ageMap;
13  
  
14  
  // age = age in days
15  
  swappable bool shouldKeep(double age, double lastAge) {
16  
    ret defaultAgeBasedBackupRetentionStrategy_shouldKeep(age, lastAge);
17  
  }
18  
  
19  
  void scan {
20  
    if (allFiles == null)
21  
      allFiles = listFilesNotDirs(dir);
22  
      
23  
    deletableFiles = new L;
24  
    files = new L;
25  
    ageMap = new Map;
26  
      
27  
    for (File f : allFiles) {
28  
      var bfa = new BackupFileAge().timeZone(timeZone).currentTime(currentTime);
29  
      if (!bfa.fileName(f.getName()).parse()) continue;
30  
      
31  
      continue unless eq(bfa.originalName, "concepts.structure.gz");
32  
      ageMap.put(f, bfa.ageInDays());
33  
      files.add(f);
34  
    }
35  
36  
    sortByMap_inPlace(files, ageMap);
37  
    double lastAge = -1;
38  
    for (File f : files) {
39  
      double age = ageMap.get(f);
40  
      if (!shouldKeep(age, lastAge))
41  
        deletableFiles.add(f);
42  
      else
43  
        lastAge = age;
44  
    }
45  
  }    
46  
}

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/6
Text MD5: 1210d0469a8acb8074bcec09b1e584be
Transpilation MD5: 188c4e3b3a89a2dd4c00857cd1f6b376
Author: stefan
Category: javax
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2025-04-20 19:25:21
Source code size: 1173 bytes / 46 lines
Pitched / IR pitched: No / No
Views / Downloads: 53 / 84
Version history: 5 change(s)
Referenced in: [show references]