KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > threads > CronThread


1 package com.dotmarketing.threads;
2
3 import java.util.Calendar JavaDoc;
4 import java.util.GregorianCalendar JavaDoc;
5
6 import com.dotmarketing.db.DotHibernate;
7 import com.dotmarketing.factories.EmailFactory;
8 import com.dotmarketing.portlets.campaigns.factories.CampaignFactory;
9 import com.dotmarketing.util.Logger;
10
11
12 public class CronThread extends Thread JavaDoc {
13     private int emailCampaign = 1; //every minute
14

15     public CronThread(String JavaDoc name) {
16         super(name);
17     }
18
19     public void run() {
20         Logger.info(this, "Starting annoying CronThread running every minute");
21         
22         GregorianCalendar JavaDoc greg = null;
23
24         /* unlock all email
25          * campaigns in case
26          * we died in the midst of sending
27          */

28         CampaignFactory.unlockAllCampaigns();
29
30         //Fire up the cron thread
31
while (true) {
32             greg = new GregorianCalendar JavaDoc();
33
34             try {
35                 try {
36                     if ((greg.get(Calendar.MINUTE) % emailCampaign) == 0) {
37                         EmailFactory.deliverCampaigns();
38                     }
39                 } catch (Exception JavaDoc e) {
40                     Logger.error(this, "CronThread: Error occurred delivering campaigns.", e);
41                 }
42             } finally {
43                 DotHibernate.closeSession();
44             }
45             Logger.debug(this, "CronThread.Minute: " + greg.get(Calendar.MINUTE));
46
47             try {
48                 Thread.sleep(1000 * 60); // sleep a minute
49
} catch (Exception JavaDoc e) {
50                 break;
51             }
52         }
53     }
54     
55   
56     /* (non-Javadoc)
57      * @see java.lang.Thread#destroy()
58      */

59     public void destroy() {
60         DotHibernate.closeSession();
61     }
62 }
63
Popular Tags