001
014
015 package com.liferay.portlet.calendar.util;
016
017 import com.liferay.portal.kernel.cal.TZSRecurrence;
018 import com.liferay.portal.kernel.util.CalendarFactoryUtil;
019 import com.liferay.portal.kernel.util.GetterUtil;
020 import com.liferay.portal.kernel.util.PropsKeys;
021 import com.liferay.portal.kernel.util.StringBundler;
022 import com.liferay.portal.kernel.util.StringPool;
023 import com.liferay.portal.kernel.util.StringUtil;
024 import com.liferay.portal.kernel.util.Time;
025 import com.liferay.portal.kernel.util.Validator;
026 import com.liferay.portal.util.PortalUtil;
027 import com.liferay.portal.util.PropsUtil;
028 import com.liferay.portal.util.PropsValues;
029 import com.liferay.portlet.calendar.model.CalEvent;
030 import com.liferay.util.ContentUtil;
031
032 import java.util.Calendar;
033 import java.util.Date;
034 import java.util.Locale;
035 import java.util.TimeZone;
036
037 import javax.portlet.PortletPreferences;
038
039
042 public class CalUtil {
043
044 public static Date getDaylightSavingTimeOffsetDate(
045 CalEvent event, TimeZone userTimeZone, Calendar cal, Date date) {
046
047 TZSRecurrence recurrence = event.getRecurrenceObj();
048
049 TimeZone eventTimeZone = recurrence.getTimeZone();
050
051 if (eventTimeZone.inDaylightTime(cal.getTime()) ==
052 userTimeZone.inDaylightTime(cal.getTime())) {
053
054 return date;
055 }
056
057 Calendar calendar = Calendar.getInstance();
058
059 calendar.setTime(date);
060
061 if (eventTimeZone.inDaylightTime(cal.getTime())) {
062 calendar.add(Calendar.HOUR_OF_DAY, -1);
063 }
064 else {
065 calendar.add(Calendar.HOUR_OF_DAY, 1);
066 }
067
068 return calendar.getTime();
069 }
070
071 public static String getEmailEventReminderBody(
072 PortletPreferences preferences) {
073
074 String emailEventReminderBody = preferences.getValue(
075 "emailEventReminderBody", StringPool.BLANK);
076
077 if (Validator.isNotNull(emailEventReminderBody)) {
078 return emailEventReminderBody;
079 }
080 else {
081 return ContentUtil.get(
082 PropsUtil.get(PropsKeys.CALENDAR_EMAIL_EVENT_REMINDER_BODY));
083 }
084 }
085
086 public static boolean getEmailEventReminderEnabled(
087 PortletPreferences preferences) {
088
089 String emailEventReminderEnabled = preferences.getValue(
090 "emailEventReminderEnabled", StringPool.BLANK);
091
092 if (Validator.isNotNull(emailEventReminderEnabled)) {
093 return GetterUtil.getBoolean(emailEventReminderEnabled);
094 }
095 else {
096 return GetterUtil.getBoolean(
097 PropsUtil.get(PropsKeys.CALENDAR_EMAIL_EVENT_REMINDER_ENABLED));
098 }
099 }
100
101 public static String getEmailEventReminderSubject(
102 PortletPreferences preferences) {
103
104 String emailEventReminderSubject = preferences.getValue(
105 "emailEventReminderSubject", StringPool.BLANK);
106
107 if (Validator.isNotNull(emailEventReminderSubject)) {
108 return emailEventReminderSubject;
109 }
110 else {
111 return ContentUtil.get(
112 PropsUtil.get(PropsKeys.CALENDAR_EMAIL_EVENT_REMINDER_SUBJECT));
113 }
114 }
115
116 public static String getEmailFromAddress(
117 PortletPreferences preferences, long companyId) {
118
119 return PortalUtil.getEmailFromAddress(
120 preferences, companyId, PropsValues.CALENDAR_EMAIL_FROM_ADDRESS);
121 }
122
123 public static String getEmailFromName(
124 PortletPreferences preferences, long companyId) {
125
126 return PortalUtil.getEmailFromName(
127 preferences, companyId, PropsValues.CALENDAR_EMAIL_FROM_NAME);
128 }
129
130 public static Date getEndTime(CalEvent event) {
131 long startTime = event.getStartDate().getTime();
132
133 long endTime =
134 startTime + (Time.HOUR * event.getDurationHour()) +
135 (Time.MINUTE * event.getDurationMinute());
136
137 return new Date(endTime);
138 }
139
140 public static boolean isAllDay(
141 CalEvent event, TimeZone timeZone, Locale locale) {
142
143 if (event.isAllDay()) {
144 return true;
145 }
146
147 Calendar cal = null;
148
149 if (event.getTimeZoneSensitive()) {
150 cal = CalendarFactoryUtil.getCalendar(timeZone, locale);
151 }
152 else {
153 cal = CalendarFactoryUtil.getCalendar();
154 }
155
156 cal.setTime(event.getStartDate());
157
158 int hour = cal.get(Calendar.HOUR_OF_DAY);
159 int minute = cal.get(Calendar.MINUTE);
160 int second = cal.get(Calendar.SECOND);
161 int millisecond = cal.get(Calendar.MILLISECOND);
162
163 int dHour = event.getDurationHour();
164 int dMinute = event.getDurationMinute();
165
166 if ((hour == 0) && (minute == 0) && (second == 0) &&
167 (millisecond == 0) && (dHour == 24) && (dMinute == 0)) {
168
169 return true;
170 }
171
172 return false;
173 }
174
175 public static String toString(Calendar cal, String[] types) {
176 StringBundler sb = new StringBundler(9);
177
178 if (cal != null) {
179 sb.append(cal.get(Calendar.YEAR));
180 sb.append(StringPool.PERIOD);
181 sb.append(cal.get(Calendar.MONTH));
182 sb.append(StringPool.PERIOD);
183 sb.append(cal.get(Calendar.DATE));
184 sb.append(StringPool.PERIOD);
185 sb.append(cal.getTimeZone().getRawOffset());
186 }
187
188 if ((types != null) && (types.length > 0) &&
189 ((types.length > 1) || Validator.isNotNull(types[0]))) {
190
191 sb.append(StringPool.PERIOD);
192 sb.append(StringUtil.merge(types, StringPool.PERIOD));
193 }
194
195 return sb.toString();
196 }
197
198 }