1
22
23 package com.liferay.portal.kernel.cal;
24
25 import com.liferay.portal.kernel.util.CalendarFactoryUtil;
26 import com.liferay.portal.kernel.util.Validator;
27
28 import java.util.Calendar;
29 import java.util.TimeZone;
30
31
36 public class TZSRecurrence extends Recurrence {
37
38 public TZSRecurrence() {
39 }
40
41 public TZSRecurrence(Calendar start, Duration duration) {
42 super(start, duration);
43 }
44
45 public TZSRecurrence(Calendar start, Duration duration, int frequency) {
46 super(start, duration, frequency);
47 }
48
49 public TimeZone getTimeZone() {
50 return _timeZone;
51 }
52
53 public void setTimeZone(TimeZone timeZone) {
54 _timeZone = timeZone;
55 }
56
57 protected boolean matchesByField(
58 int[] array, int field, Calendar candidate, boolean allowNegative,
59 TimeZone timeZone) {
60
61 Calendar adjustedCandidate = candidate;
62
63 if (Validator.isNotNull(timeZone)) {
64 adjustedCandidate = CalendarFactoryUtil.getCalendar(timeZone);
65
66 adjustedCandidate.setTime(candidate.getTime());
67 }
68
69 return matchesByField(array, field, adjustedCandidate, allowNegative);
70 }
71
72 protected boolean matchesIndividualByDay(
73 Calendar candidate, DayAndPosition pos) {
74
75 Calendar adjustedCandidate = candidate;
76
77 if (Validator.isNotNull(_timeZone)) {
78 adjustedCandidate = CalendarFactoryUtil.getCalendar(_timeZone);
79
80 adjustedCandidate.setTime(candidate.getTime());
81 }
82
83 return super.matchesIndividualByDay(adjustedCandidate, pos);
84 }
85
86 protected boolean matchesByMonthDay(Calendar candidate) {
87 return matchesByField(
88 byMonthDay, Calendar.DATE, candidate, true, _timeZone);
89 }
90
91 protected boolean matchesByYearDay(Calendar candidate) {
92 return matchesByField(
93 byYearDay, Calendar.DAY_OF_YEAR, candidate, true, _timeZone);
94 }
95
96 protected boolean matchesByWeekNo(Calendar candidate) {
97 return matchesByField(
98 byWeekNo, Calendar.WEEK_OF_YEAR, candidate, true, _timeZone);
99 }
100
101 protected boolean matchesByMonth(Calendar candidate) {
102 return matchesByField(
103 byMonth, Calendar.MONTH, candidate, false, _timeZone);
104 }
105
106 private TimeZone _timeZone;
107
108 }