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