KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > jforum > summary > SummaryScheduler


1 /*
2  * Copyright (c) Rafael Steil
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms,
6  * with or without modification, are permitted provided
7  * that the following conditions are met:
8  *
9  * 1) Redistributions of source code must retain the above
10  * copyright notice, this list of conditions and the
11  * following disclaimer.
12  * 2) Redistributions in binary form must reproduce the
13  * above copyright notice, this list of conditions and
14  * the following disclaimer in the documentation and/or
15  * other materials provided with the distribution.
16  * 3) Neither the name of "Rafael Steil" nor
17  * the names of its contributors may be used to endorse
18  * or promote products derived from this software without
19  * specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
22  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
23  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
24  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
27  * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
28  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
32  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
34  * IN CONTRACT, STRICT LIABILITY, OR TORT
35  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
37  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
38  *
39  * Class created on Jul 15, 2005
40  * The JForum Project
41  * http://www.jforum.net
42  */

43 package net.jforum.summary;
44
45 import java.io.IOException JavaDoc;
46 import java.text.ParseException JavaDoc;
47
48 import net.jforum.util.preferences.ConfigKeys;
49 import net.jforum.util.preferences.SystemGlobals;
50
51 import org.apache.log4j.Logger;
52 import org.quartz.CronTrigger;
53 import org.quartz.JobDetail;
54 import org.quartz.Scheduler;
55 import org.quartz.SchedulerException;
56 import org.quartz.Trigger;
57 import org.quartz.impl.StdSchedulerFactory;
58
59 /**
60  * Schedule the summaries to be sent to the users.
61  *
62  * @see net.jforum.summary.SummaryJob
63  *
64  * @author Franklin S. Dattein (<a HREF="mailto:franklin@portaljava.com">franklin@portaljava.com</a>)
65  * @version $Id: SummaryScheduler.java,v 1.4 2005/07/31 04:07:33 rafaelsteil Exp $
66  */

67 public class SummaryScheduler
68 {
69     private static Scheduler scheduler;
70
71     private static Logger logger = Logger.getLogger(SummaryScheduler.class);
72
73     private static boolean isStarted = false;
74
75     /**
76      * Starts the summary Job. Conditions to start: Is not started yet and is enabled on the file
77      * SystemGlobasl.properties. The to enable it is "summary.enabled"
78      * (ConfigKeys.SUMMARY_IS_ENABLED).
79      *
80      * @throws SchedulerException
81      * @throws IOException
82      */

83     public static void startJob() throws SchedulerException, IOException JavaDoc
84     {
85         boolean isEnabled = new Boolean JavaDoc(SystemGlobals.getValue(ConfigKeys.SUMMARY_IS_ENABLED)).booleanValue();
86         
87         if (!isStarted && isEnabled) {
88             String JavaDoc filename = SystemGlobals.getValue(ConfigKeys.SEARCH_INDEXER_QUARTZ_CONFIG);
89
90             SystemGlobals.loadAdditionalDefaults(filename);
91
92             String JavaDoc cronExpression = SystemGlobals.getValue("org.quartz.context.summary.cron.expression");
93             scheduler = new StdSchedulerFactory(filename).getScheduler();
94             
95             Trigger trigger = null;
96             
97             try {
98                 trigger = new CronTrigger(SummaryJob.class.getName(), "summaryJob", cronExpression);
99                 logger.info("Starting quartz summary expression " + cronExpression);
100                 scheduler.scheduleJob(new JobDetail(SummaryJob.class.getName(), "summaryJob", SummaryJob.class),
101                         trigger);
102                 scheduler.start();
103             }
104             catch (ParseException JavaDoc e) {
105                 e.printStackTrace();
106             }
107         }
108         
109         isStarted = true;
110     }
111 }
112
Popular Tags