Revision: 26
http://amavisadmin.svn.sourceforge.net/amavisadmin/?rev=26&view=rev
Author: streindl
Date: 2007-01-18 11:52:45 -0800 (Thu, 18 Jan 2007)
Log Message:
-----------
Fix for #1638821: Database is updated
In addition the next schedule for the job is displayed.
Modified Paths:
--------------
amavisadmin/trunk/src/java/de/sreindl/amavisadmin/jobs/BaseJob.java
Modified: amavisadmin/trunk/src/java/de/sreindl/amavisadmin/jobs/BaseJob.java
===================================================================
--- amavisadmin/trunk/src/java/de/sreindl/amavisadmin/jobs/BaseJob.java 2007-01-18 19:41:14 UTC (rev 25)
+++ amavisadmin/trunk/src/java/de/sreindl/amavisadmin/jobs/BaseJob.java 2007-01-18 19:52:45 UTC (rev 26)
@@ -26,6 +26,7 @@
import java.util.Date;
import java.util.Iterator;
import java.util.List;
+import org.apache.taglibs.standard.lang.jstl.test.beans.Factory;
import org.hibernate.HibernateException;
import org.hibernate.Transaction;
import org.quartz.CronTrigger;
@@ -131,10 +132,10 @@
currentTrans = session.beginTransaction();
}
// load data
- de.sreindl.amavisadmin.db.Job job =
+ de.sreindl.amavisadmin.db.Job job =
(de.sreindl.amavisadmin.db.Job)
- session.get(de.sreindl.amavisadmin.db.Job.class,
- context.getJobDetail().getName());
+ session.get(de.sreindl.amavisadmin.db.Job.class,
+ context.getJobDetail().getName());
setData(job);
excuteJob(context);
} catch (Exception e) {
@@ -161,7 +162,10 @@
}
}
setRunning(false);
- log.info("Finishing job for class " + this.getClass().getName());
+ updateJobRecord();
+ log.debug("Finishing job for class " + this.getClass().getName());
+ Date nextDate = context.getNextFireTime();
+ log.info("Next invocaton for job " + getJobName() + " is on " + nextDate);
if (resultException != null) {
throw new JobExecutionException("Exception during processing of job " + getJobName(), resultException);
}
@@ -231,7 +235,7 @@
}
/**
- * Return an array list of configuration entries to be used for configuring
+ * Return an array list of configuration entries to be used for configuring
* this job.
*
*@return an array list containing the configuration entries.
@@ -254,4 +258,31 @@
}
log.info("Stopping of old schedulers done");
}
+
+ /**
+ * Update the job record of the current job.
+ *
+ * <p>As the session has been closed before, open a new one
+ */
+ private void updateJobRecord() {
+ Session session = null;
+ Transaction trx = null;
+ try {
+ session = HibernateSessionFactory.getSession();
+ trx = session.beginTransaction();
+ de.sreindl.amavisadmin.db.Job dbJob =
+ (de.sreindl.amavisadmin.db.Job)session.load(de.sreindl.amavisadmin.db.Job.class, getJobName());
+
+ dbJob.setLastRun(new Date());
+ session.update(dbJob);
+ trx.commit();
+ } catch (HibernateException ex) {
+ log.error("Cannot update last run date for job " + getJobName());
+ } finally {
+ if (trx != null && trx.isActive()) {
+ trx.rollback();
+ }
+ HibernateSessionFactory.closeSession();
+ }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|