001
014
015 package com.liferay.portal.kernel.scheduler;
016
017 import com.liferay.portal.kernel.util.StringBundler;
018 import com.liferay.portal.kernel.util.StringPool;
019
020 import java.util.Calendar;
021
022
025 public class CronText {
026
027 public static final int DAILY_FREQUENCY = 4;
028
029 public static final int HOURLY_FREQUENCY = 3;
030
031 public static final int MINUTELY_FREQUENCY = 2;
032
033 public static final int MONTHLY_FREQUENCY = 6;
034
035 public static final int NO_FREQUENCY = 0;
036
037 public static final int SECONDLY_FREQUENCY = 1;
038
039 public static final int WEEKLY_FREQUENCY = 5;
040
041 public static final int YEARLY_FREQUENCY = 7;
042
043 public CronText(Calendar startDate) {
044 this(startDate, CronText.NO_FREQUENCY, 0);
045 }
046
047 public CronText(Calendar startDate, int frequency, int interval) {
048 _startDate = startDate;
049 setFrequency(frequency);
050 _interval = interval;
051 }
052
053 public int getFrequency() {
054 return _frequency;
055 }
056
057 public int getInterval() {
058 return _interval;
059 }
060
061 public Calendar getStartDate() {
062 return _startDate;
063 }
064
065 public void setFrequency(int frequency) {
066 if ((frequency != CronText.DAILY_FREQUENCY) &&
067 (frequency != CronText.HOURLY_FREQUENCY) &&
068 (frequency != CronText.MINUTELY_FREQUENCY) &&
069 (frequency != CronText.MONTHLY_FREQUENCY) &&
070 (frequency != CronText.NO_FREQUENCY) &&
071 (frequency != CronText.SECONDLY_FREQUENCY) &&
072 (frequency != CronText.WEEKLY_FREQUENCY) &&
073 (frequency != CronText.YEARLY_FREQUENCY)) {
074
075 throw new IllegalArgumentException(String.valueOf(frequency));
076 }
077
078 _frequency = frequency;
079 }
080
081 public void setInterval(int interval) {
082 _interval = interval;
083 }
084
085 public void setStartDate(Calendar startDate) {
086 _startDate = startDate;
087 }
088
089 @Override
090 public String toString() {
091 String second = String.valueOf(_startDate.get(Calendar.SECOND));
092 String minute = String.valueOf(_startDate.get(Calendar.MINUTE));
093 String hour = String.valueOf(_startDate.get(Calendar.HOUR_OF_DAY));
094 String dayOfMonth = String.valueOf(
095 _startDate.get(Calendar.DAY_OF_MONTH));
096 String month = String.valueOf(_startDate.get(Calendar.MONTH) + 1);
097 String dayOfWeek = String.valueOf(_startDate.get(Calendar.DAY_OF_WEEK));
098 String year = String.valueOf(_startDate.get(Calendar.YEAR));
099
100 if (_frequency == CronText.NO_FREQUENCY) {
101 dayOfWeek = StringPool.QUESTION;
102 }
103 else if (_frequency == CronText.SECONDLY_FREQUENCY) {
104 second = StringPool.STAR + StringPool.FORWARD_SLASH + _interval;
105 minute = StringPool.STAR;
106 hour = StringPool.STAR;
107 dayOfMonth = StringPool.STAR;
108 month = StringPool.STAR;
109 dayOfWeek = StringPool.QUESTION;
110 year = StringPool.STAR;
111 }
112 else if (_frequency == CronText.MINUTELY_FREQUENCY) {
113 minute = StringPool.STAR + StringPool.FORWARD_SLASH + _interval;
114 hour = StringPool.STAR;
115 dayOfMonth = StringPool.STAR;
116 month = StringPool.STAR;
117 dayOfWeek = StringPool.QUESTION;
118 year = StringPool.STAR;
119 }
120 else if (_frequency == CronText.HOURLY_FREQUENCY) {
121 minute = StringPool.STAR;
122 hour = StringPool.STAR + StringPool.FORWARD_SLASH + _interval;
123 dayOfMonth = StringPool.STAR;
124 month = StringPool.STAR;
125 dayOfWeek = StringPool.QUESTION;
126 year = StringPool.STAR;
127 }
128 else if (_frequency == CronText.DAILY_FREQUENCY) {
129 dayOfMonth += StringPool.FORWARD_SLASH + _interval;
130 month = StringPool.STAR;
131 dayOfWeek = StringPool.QUESTION;
132 year = StringPool.STAR;
133 }
134 else if (_frequency == CronText.WEEKLY_FREQUENCY) {
135 dayOfMonth += StringPool.FORWARD_SLASH + (_interval * 7);
136 month = StringPool.STAR;
137 dayOfWeek = StringPool.QUESTION;
138 year = StringPool.STAR;
139 }
140 else if (_frequency == CronText.MONTHLY_FREQUENCY) {
141 month += StringPool.FORWARD_SLASH + _interval;
142 dayOfWeek = StringPool.QUESTION;
143 year = StringPool.STAR;
144 }
145 else if (_frequency == CronText.YEARLY_FREQUENCY) {
146 dayOfWeek = StringPool.QUESTION;
147 year += StringPool.FORWARD_SLASH + _interval;
148 }
149
150 StringBundler sb = new StringBundler(13);
151
152 sb.append(second);
153 sb.append(StringPool.SPACE);
154 sb.append(minute);
155 sb.append(StringPool.SPACE);
156 sb.append(hour);
157 sb.append(StringPool.SPACE);
158 sb.append(dayOfMonth);
159 sb.append(StringPool.SPACE);
160 sb.append(month);
161 sb.append(StringPool.SPACE);
162 sb.append(dayOfWeek);
163 sb.append(StringPool.SPACE);
164 sb.append(year);
165
166 return sb.toString();
167 }
168
169 private int _frequency;
170 private int _interval;
171 private Calendar _startDate;
172
173 }