View Javadoc

1   package org.apache.commons.jelly.tags.quartz;
2   
3   /*
4    * Copyright 2002,2004 The Apache Software Foundation.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  import java.text.ParseException;
20  
21  import org.apache.commons.jelly.JellyTagException;
22  import org.apache.commons.jelly.XMLOutput;
23  import org.apache.commons.jelly.MissingAttributeException;
24  
25  import org.quartz.CronTrigger;
26  import org.quartz.Scheduler;
27  import org.quartz.SchedulerException;
28  
29  import java.util.Date;
30  
31  /*** Define a trigger using a cron time spec.
32   *
33   *  @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
34   */
35  public class CronTriggerTag extends QuartzTagSupport
36  {
37      // ------------------------------------------------------------
38      //     Instance members
39      // ------------------------------------------------------------
40  
41      /*** Cron time spec. */
42      private String spec;
43  
44      /*** Trigger name. */
45      private String name;
46  
47      /*** Trigger group. */
48      private String group;
49  
50      /*** Job name. */
51      private String jobName;
52  
53      /*** Job group. */
54      private String jobGroup;
55  
56      // ------------------------------------------------------------
57      //     COnstructors
58      // ------------------------------------------------------------
59  
60      /*** Construct.
61       */
62      public CronTriggerTag()
63      {
64          // intentionally left blank.
65      }
66  
67      // ------------------------------------------------------------
68      // ------------------------------------------------------------
69  
70      /*** Set the name.
71       *
72       *  @param name.
73       */
74      public void setName(String name)
75      {
76          this.name = name;
77      }
78  
79      /*** Retrieve the name.
80       *
81       *  @return The name.
82       */
83      public String getName()
84      {
85          return this.name;
86      }
87  
88      /*** Set the group
89       *
90       *  @param group The group
91       */
92      public void setGroup(String group)
93      {
94          this.group = group;
95      }
96  
97      /*** Retrieve the group.
98       *
99       *  @return The group.
100      */
101     public String getGroup()
102     {
103         return this.group;
104     }
105 
106     /*** Set the cron time spec.
107      *
108      *  @param spec The cron time spec.
109      */
110     public void setSpec(String spec)
111     {
112         this.spec = spec;
113     }
114 
115     /*** Retrieve the cron time spec.
116      *
117      *  @param spec The cron time spec.
118      */
119     public String getSpec()
120     {
121         return this.spec;
122     }
123 
124     /*** Set the job name.
125      *
126      *  @param jobName The job name.
127      */
128     public void setJobName(String jobName)
129     {
130         this.jobName = jobName;
131     }
132 
133     /*** Retrieve the job name.
134      *
135      *  @return The job name.
136      */
137     public String getJobName()
138     {
139         return this.jobName;
140     }
141 
142     /*** Set the job group.
143      *
144      *  @param jobGroup The job group.
145      */
146     public void setJobGroup(String jobGroup)
147     {
148         this.jobGroup = jobGroup;
149     }
150 
151     /*** Retrieve the job group.
152      *
153      *  @return The job group.
154      */
155     public String getJobGroup()
156     {
157         return this.jobGroup;
158     }
159 
160     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
161     //     org.apache.commons.jelly.Tag
162     // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
163 
164     /*** Perform this tag.
165      *
166      *  @param output Output sink.
167      *
168      *  @throws Exception If an error occurs.
169      */
170     public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException
171     {
172         if ( getSpec() == null )
173         {
174             throw new MissingAttributeException( "spec" );
175         }
176 
177         if ( getName() == null )
178         {
179             throw new MissingAttributeException( "name" );
180         }
181 
182         if ( getGroup() == null )
183         {
184             throw new MissingAttributeException( "group" );
185         }
186 
187         if ( getJobName() == null )
188         {
189             throw new MissingAttributeException( "jobName" );
190         }
191 
192         if ( getJobGroup() == null )
193         {
194             throw new MissingAttributeException( "jobGroup" );
195         }
196 
197         CronTrigger trigger = new CronTrigger( getName(),
198                                                getGroup() );
199         try {
200             trigger.setCronExpression( getSpec() );
201         }
202         catch (ParseException e) {
203             throw new JellyTagException(e);
204         }
205         trigger.setJobName( getJobName() );
206         trigger.setJobGroup( getJobGroup() );
207         trigger.setStartTime( new Date() );
208 
209         try {
210             Scheduler sched = getScheduler();
211             sched.scheduleJob( trigger );
212         }
213         catch (SchedulerException e) {
214             throw new JellyTagException(e);
215         }
216     }
217 }