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