X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=cms%2Forg.argeo.cms.integration%2Fsrc%2Forg%2Fargeo%2Fmaintenance%2Fbackup%2Fvfs%2FSimpleBackupPurge.java;fp=cms%2Forg.argeo.cms.integration%2Fsrc%2Forg%2Fargeo%2Fmaintenance%2Fbackup%2Fvfs%2FSimpleBackupPurge.java;h=0000000000000000000000000000000000000000;hb=fbe96810dae8085b3d6935d085d21008fb809fc3;hp=c8baf20c94206c64febfc4b4d563ccef251bda0f;hpb=04e7ba0710e74d9f18322dcc2c730f972b7ea10c;p=gpl%2Fargeo-slc.git diff --git a/cms/org.argeo.cms.integration/src/org/argeo/maintenance/backup/vfs/SimpleBackupPurge.java b/cms/org.argeo.cms.integration/src/org/argeo/maintenance/backup/vfs/SimpleBackupPurge.java deleted file mode 100644 index c8baf20c9..000000000 --- a/cms/org.argeo.cms.integration/src/org/argeo/maintenance/backup/vfs/SimpleBackupPurge.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.argeo.maintenance.backup.vfs; - -import java.text.DateFormat; -import java.time.Period; -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.util.Date; -import java.util.SortedMap; -import java.util.TreeMap; - -import org.apache.commons.vfs2.FileObject; -import org.apache.commons.vfs2.FileSystemManager; -import org.apache.commons.vfs2.FileSystemOptions; -import org.apache.commons.vfs2.Selectors; -import org.argeo.api.cms.CmsLog; - -/** Simple backup purge which keeps backups only for a given number of days */ -public class SimpleBackupPurge implements BackupPurge { - private final static CmsLog log = CmsLog.getLog(SimpleBackupPurge.class); - - private Integer daysKept = 30; - - @Override - public void purge(FileSystemManager fileSystemManager, String base, String name, DateFormat dateFormat, - FileSystemOptions opts) { - try { - ZonedDateTime nowDt = ZonedDateTime.now(); - FileObject baseFo = fileSystemManager.resolveFile(base + '/' + name, opts); - - SortedMap toDelete = new TreeMap(); - int backupCount = 0; - - // make sure base dir exists - baseFo.createFolder(); - - // scan backups and list those which should be deleted - for (FileObject backupFo : baseFo.getChildren()) { - String backupName = backupFo.getName().getBaseName(); - Date backupDate = dateFormat.parse(backupName); - backupCount++; - ZonedDateTime backupDt = ZonedDateTime.ofInstant(backupDate.toInstant(), ZoneId.systemDefault()); - Period sinceThen = Period.between(backupDt.toLocalDate(), nowDt.toLocalDate()); - // new Period(backupDt, nowDt); - int days = sinceThen.getDays(); - // int days = sinceThen.getMinutes(); - if (days > daysKept) { - toDelete.put(backupDt, backupFo); - } - } - - if (toDelete.size() != 0 && toDelete.size() == backupCount) { - // all backups would be deleted - // but we want to keep at least one - ZonedDateTime lastBackupDt = toDelete.firstKey(); - FileObject keptFo = toDelete.remove(lastBackupDt); - log.warn("Backup " + keptFo + " kept although it is older than " + daysKept + " days."); - } - - // delete old backups - for (FileObject backupFo : toDelete.values()) { - backupFo.delete(Selectors.SELECT_ALL); - if (log.isDebugEnabled()) - log.debug("Deleted backup " + backupFo); - } - } catch (Exception e) { - throw new MaintenanceException("Could not purge previous backups", e); - } - - } - -}