1 package org.apache.commons.jelly.tags.quartz;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
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
58
59
60 /*** Construct.
61 */
62 public CronTriggerTag()
63 {
64
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
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 }