1
22
23 package com.liferay.portal.kernel.scheduler;
24
25 import com.liferay.portal.kernel.util.StringPool;
26
27 import java.util.Calendar;
28
29
34 public class TriggerExpression {
35
36 public final static int DAILY_FREQUENCY = 3;
37
38 public final static int MINUTELY_FREQUENCY = 2;
39
40 public final static int MONTHLY_FREQUENCY = 4;
41
42 public final static int NO_FREQUENCY = 1;
43
44 public final static int WEEKLY_FREQUENCY = 5;
45
46 public final static int YEARLY_FREQUENCY = 6;
47
48 public TriggerExpression(Calendar startDate) {
49 this(startDate, TriggerExpression.NO_FREQUENCY, 0);
50 }
51
52 public TriggerExpression(Calendar startDate, int frequency, int interval) {
53 _startDate = startDate;
54 setFrequency(frequency);
55 _interval = interval;
56 }
57
58 public int getFrequency() {
59 return _frequency;
60 }
61
62 public int getInterval() {
63 return _interval;
64 }
65
66 public Calendar getStartDate() {
67 return _startDate;
68 }
69
70 public void setFrequency(int frequency) {
71 if ((frequency != TriggerExpression.DAILY_FREQUENCY) &&
72 (frequency != TriggerExpression.MINUTELY_FREQUENCY) &&
73 (frequency != TriggerExpression.MONTHLY_FREQUENCY) &&
74 (frequency != TriggerExpression.NO_FREQUENCY) &&
75 (frequency != TriggerExpression.WEEKLY_FREQUENCY) &&
76 (frequency != TriggerExpression.YEARLY_FREQUENCY)) {
77
78 throw new IllegalArgumentException(String.valueOf(frequency));
79 }
80
81 _frequency = frequency;
82 }
83
84 public void setInterval(int interval) {
85 _interval = interval;
86 }
87
88 public void setStartDate(Calendar startDate) {
89 _startDate = startDate;
90 }
91
92 public String toCronText() {
93 String second = String.valueOf(_startDate.get(Calendar.SECOND));
94 String minute = String.valueOf(_startDate.get(Calendar.MINUTE));
95 String hour = String.valueOf(_startDate.get(Calendar.HOUR_OF_DAY));
96 String dayOfMonth =
97 String.valueOf(_startDate.get(Calendar.DAY_OF_MONTH));
98 String month = String.valueOf(_startDate.get(Calendar.MONTH) + 1);
99 String dayOfWeek = String.valueOf(_startDate.get(Calendar.DAY_OF_WEEK));
100 String year = String.valueOf(_startDate.get(Calendar.YEAR));
101
102 if (_frequency == TriggerExpression.NO_FREQUENCY) {
103 dayOfWeek = StringPool.QUESTION;
104 }
105 else if (_frequency == TriggerExpression.MINUTELY_FREQUENCY) {
106 minute += StringPool.FORWARD_SLASH + _interval;
107 hour = StringPool.STAR;
108 dayOfMonth = StringPool.STAR;
109 month = StringPool.STAR;
110 dayOfWeek = StringPool.QUESTION;
111 year = StringPool.STAR;
112 }
113 else if (_frequency == TriggerExpression.DAILY_FREQUENCY) {
114 dayOfMonth += StringPool.FORWARD_SLASH + _interval;
115 month = StringPool.STAR;
116 dayOfWeek = StringPool.QUESTION;
117 year = StringPool.STAR;
118 }
119 else if (_frequency == TriggerExpression.WEEKLY_FREQUENCY) {
120 dayOfMonth += StringPool.FORWARD_SLASH + (_interval * 7);
121 month = StringPool.STAR;
122 dayOfWeek = StringPool.QUESTION;
123 year = StringPool.STAR;
124 }
125 else if (_frequency == TriggerExpression.MONTHLY_FREQUENCY) {
126 month += StringPool.FORWARD_SLASH + _interval;
127 dayOfWeek = StringPool.QUESTION;
128 year = StringPool.STAR;
129 }
130 else if (_frequency == TriggerExpression.YEARLY_FREQUENCY) {
131 dayOfWeek = StringPool.QUESTION;
132 year += StringPool.FORWARD_SLASH + _interval;
133 }
134
135 StringBuilder sb = new StringBuilder();
136
137 sb.append(second);
138 sb.append(StringPool.SPACE);
139 sb.append(minute);
140 sb.append(StringPool.SPACE);
141 sb.append(hour);
142 sb.append(StringPool.SPACE);
143 sb.append(dayOfMonth);
144 sb.append(StringPool.SPACE);
145 sb.append(month);
146 sb.append(StringPool.SPACE);
147 sb.append(dayOfWeek);
148 sb.append(StringPool.SPACE);
149 sb.append(year);
150
151 return sb.toString();
152 }
153
154 private Calendar _startDate;
155 private int _frequency;
156 private int _interval;
157
158 }