package org.jblooming.scheduler;
import org.jblooming.scheduler.ExecutableSupport;
import org.jblooming.scheduler.JobLogData;
import org.jblooming.persistence.hibernate.PersistenceContext;
import org.jblooming.persistence.hibernate.HibernateUtilities;
import org.jblooming.utilities.DateUtilities;
import org.jblooming.tracer.Tracer;
import org.jblooming.agenda.CompanyCalendar;
import java.sql.PreparedStatement;
import java.util.Date;
/**
* @author Pietro Polsinelli ppolsinelli@open-lab.com
* @author Roberto Bicchierai rbicchierai@open-lab.com
*/
public class SchedulerLogKiller extends ExecutableSupport {
// @Parameter("[how may days of log do you want to preserve]")
public String daysToSave = "2";
public JobLogData run(JobLogData jobLogData) throws Exception {
PersistenceContext pc = null;
try {
CompanyCalendar cc = new CompanyCalendar();
cc.set(CompanyCalendar.DAY_OF_YEAR, -Integer.parseInt(daysToSave));
pc = PersistenceContext.getDefaultPersistenceContext();
String jobLogTableName = HibernateUtilities.getTableName(JobLog.class);
String delSQL = "DELETE FROM " + jobLogTableName + " WHERE " + jobLogTableName + ".DATEX < ?;";
PreparedStatement s = pc.session.connection().prepareStatement(delSQL);
s.setDate(1, new java.sql.Date(cc.getTimeInMillis()));
s.execute();
s.close();
pc.commitAndClose();
jobLogData.notes = jobLogData.notes + "SchedulerLogKiller executed on " + DateUtilities.dateAndHourToString(new Date());
} catch (Throwable e) {
Tracer.platformLogger.error("SchedulerLogKiller error", e);
if (pc != null) {
pc.rollbackAndClose();
}
jobLogData.successfull = false;
}
return jobLogData;
}
}