package org.agnitas.util.quartz;
import org.agnitas.dao.LoginTrackDao;
import org.agnitas.util.AgnUtils;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class LoginTrackTableCleanerJob extends QuartzJobBean {
/**
* Default value of retention time (in days) for old records.
*/
public static final int DEFAULT_RETENTION_TIME = 90;
/**
* Number of records deleted with one statement.
*/
public static final int DEFAULT_DELETE_BLOCK_SIZE = 1000;
/**
* Retention time for older record.
*/
protected int retentionTime = DEFAULT_RETENTION_TIME;
/**
* Number of records deleted with one statement.
*/
protected int deleteBlockSize = DEFAULT_DELETE_BLOCK_SIZE;
/**
* DAO for login_track_tbl;
*/
protected LoginTrackDao loginTrackDao;
/**
* Set new retention time for old records.
* @param retentionTime new hold-back time in days
*/
public void setRetentionTime( int retentionTime) {
this.retentionTime = retentionTime;
}
/**
* Set number of maximum records to be deleted with one statement.
*
* @param size maximum number of deleted records
*/
public void setDeleteBlockSize( int size) {
this.deleteBlockSize = size;
}
/**
* Set LoginTrackDao object for accessing login tracking records.
*
* @param loginTrackDao LoginTrackDao instance
*/
public void setLoginTrackDao( LoginTrackDao loginTrackDao) {
this.loginTrackDao = loginTrackDao;
}
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
int affectedRows;
if(this.loginTrackDao == null) {
AgnUtils.logger().error("no LoginTrackDao object defined - job stopped");
return;
}
// Delete in blocks
while((affectedRows = loginTrackDao.deleteOldRecords(this.retentionTime, this.deleteBlockSize)) > 0) {
AgnUtils.logger().info("deleted " + affectedRows + " records");
}
}
}