package org.ovirt.engine.core.bll;
import org.ovirt.engine.core.compat.*;
import org.ovirt.engine.core.common.config.Config;
import org.ovirt.engine.core.common.config.ConfigValues;
import org.ovirt.engine.core.utils.timer.OnTimerMethodAnnotation;
import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl;
import org.ovirt.engine.core.dal.dbbroker.*;
import java.util.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class AuditLogCleanupManager {
private static LogCompat log = LogFactoryCompat.getLog(AuditLogCleanupManager.class);
private static final AuditLogCleanupManager _instance = new AuditLogCleanupManager();
public static AuditLogCleanupManager getInstance() {
return _instance;
}
private AuditLogCleanupManager() {
Calendar calendar = new GregorianCalendar();
Date mAuditLogCleanupTime = Config.<DateTime> GetValue(ConfigValues.AuditLogCleanupTime);
calendar.setTimeInMillis(mAuditLogCleanupTime.getTime());
String cronExpression = String.format("%d %d %d * * ?", calendar.get(Calendar.SECOND),
calendar.get(Calendar.MINUTE), calendar.get(Calendar.HOUR_OF_DAY));
log.info("Setting audit clean up manager to run at: " + cronExpression);
SchedulerUtilQuartzImpl.getInstance().scheduleACronJob(this, "OnTimer", new Class[] {}, new Object[] {},
cronExpression);
}
@OnTimerMethodAnnotation("OnTimer")
public void OnTimer() {
try {
log.info("AuditLogCleanupManager::deleteAgedOutAuditLogs - entered");
DateTime latestTimeToKeep = DateTime.getNow().AddDays(
Config.<Integer> GetValue(ConfigValues.AuditLogAgingThreashold) * -1);
DbFacade.getInstance().getAuditLogDAO().removeAllBeforeDate(latestTimeToKeep);
} catch (RuntimeException e) {
log.error("AuditLogCleanupManager::deleteAgedOutAuditLogs() - failed with exception", e);
}
}
}