Delete older backup files, retaining the specified amount.

pull/14/head
Tim Su 15 years ago
parent d1c93e611b
commit c5598b3d2e

@ -1,16 +1,19 @@
package com.timsu.astrid.utilities; package com.timsu.astrid.utilities;
import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
import android.app.AlarmManager; import android.app.AlarmManager;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.app.Service; import android.app.Service;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.IBinder; import android.os.IBinder;
import com.timsu.astrid.R;
import java.io.File; import com.timsu.astrid.R;
import java.io.FilenameFilter;
import java.util.Date;
/** /**
* Inspired heavily by SynchronizationService * Inspired heavily by SynchronizationService
@ -98,21 +101,27 @@ public class BackupService extends Service {
} }
private void deleteOldBackups() { private void deleteOldBackups() {
FilenameFilter filter = new FilenameFilter() { FileFilter backupFileFilter = new FileFilter() {
@Override @Override
public boolean accept(File file, String s) { public boolean accept(File file) {
if (s.matches(BACKUP_FILE_NAME_REGEX)) { if (file.getName().matches(BACKUP_FILE_NAME_REGEX)) {
String dateString = s.substring(TasksXmlExporter.FILENAME_DATE_BEGIN_INDEX, return true;
TasksXmlExporter.FILENAME_DATE_END_INDEX);
return DateUtilities.wasCreatedBefore(dateString, DAYS_TO_KEEP_BACKUP);
} }
return false; return false;
} }
}; };
File astridDir = TasksXmlExporter.getExportDirectory(); File astridDir = TasksXmlExporter.getExportDirectory();
String[] files = astridDir.list(filter);
for (String file : files) { // grab all backup files, sort by modified date, delete old ones
new File(astridDir, file).delete(); File[] files = astridDir.listFiles(backupFileFilter);
Arrays.sort(files, new Comparator<File>() {
@Override
public int compare(File file1, File file2) {
return -Long.valueOf(file1.lastModified()).compareTo(Long.valueOf(file2.lastModified()));
}
});
for(int i = DAYS_TO_KEEP_BACKUP; i < files.length; i++) {
files[i].delete();
} }
} }
} }

Loading…
Cancel
Save