You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by se...@apache.org on 2012/04/17 18:31:52 UTC
svn commit: r1327173 - in /incubator/openmeetings/trunk/singlewebapp:
WebContent/src/modules/lzcalendar/compontents/
WebContent/src/modules/lzcalendar/compontents/layouts/
src/org/openmeetings/app/data/calendar/management/
src/org/openmeetings/app/data...
Author: sebawagner
Date: Tue Apr 17 16:31:51 2012
New Revision: 1327173
URL: http://svn.apache.org/viewvc?rev=1327173&view=rev
Log:
OPENMEETINGS-166 Meeting is created with incorrect start time in the calendar.
Modified:
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/layouts/dragEvent.lzx
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/lzEditCalendarEvent.lzx
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/calendar/management/AppointmentLogic.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/CalendarService.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/math/TimezoneUtil.java
Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/layouts/dragEvent.lzx
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/layouts/dragEvent.lzx?rev=1327173&r1=1327172&r2=1327173&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/layouts/dragEvent.lzx (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/layouts/dragEvent.lzx Tue Apr 17 16:31:51 2012
@@ -295,8 +295,8 @@
remotecontext="$once{ canvas.thishib }" >
<netparam><method name="getValue">return canvas.sessionId; </method></netparam>
<netparam><method name="getValue">return parent.parent.updateObj.appointmentId;</method></netparam>
- <netparam><method name="getValue">return parent.parent.updateObj.appointmentstart;</method></netparam>
- <netparam><method name="getValue">return parent.parent.updateObj.appointmentend;</method></netparam>
+ <netparam><method name="getValue">return parseDateToStringTimeSeconds(parent.parent.updateObj.appointmentstart);</method></netparam>
+ <netparam><method name="getValue">return parseDateToStringTimeSeconds(parent.parent.updateObj.appointmentend);</method></netparam>
<netparam><method name="getValue">return parent.parent.baseUrl;</method></netparam>
<netparam><method name="getValue">return hib.userlang;</method></netparam>
<handler name="ondata" args="value">
Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/lzEditCalendarEvent.lzx
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/lzEditCalendarEvent.lzx?rev=1327173&r1=1327172&r2=1327173&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/lzEditCalendarEvent.lzx (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/lzEditCalendarEvent.lzx Tue Apr 17 16:31:51 2012
@@ -160,8 +160,8 @@
<netparam><method name="getValue">return parent.parent.updateObj.appointmentName;</method></netparam>
<netparam><method name="getValue">return parent.parent.updateObj.appointmentLocation;</method></netparam>
<netparam><method name="getValue">return parent.parent.updateObj.appointmentDescription;</method></netparam>
- <netparam><method name="getValue">return parent.parent.updateObj.appointmentstart;</method></netparam>
- <netparam><method name="getValue">return parent.parent.updateObj.appointmentend;</method></netparam>
+ <netparam><method name="getValue">return parseDateToStringTimeSeconds(parent.parent.updateObj.appointmentstart);</method></netparam>
+ <netparam><method name="getValue">return parseDateToStringTimeSeconds(parent.parent.updateObj.appointmentend);</method></netparam>
<netparam><method name="getValue">return parent.parent.updateObj.isDaily;</method></netparam>
<netparam><method name="getValue">return parent.parent.updateObj.isWeekly;</method></netparam>
<netparam><method name="getValue">return parent.parent.updateObj.isMonthly;</method></netparam>
@@ -190,8 +190,8 @@
<netparam><method name="getValue">return parent.parent.updateObj.appointmentName;</method></netparam>
<netparam><method name="getValue">return parent.parent.updateObj.appointmentLocation;</method></netparam>
<netparam><method name="getValue">return parent.parent.updateObj.appointmentDescription;</method></netparam>
- <netparam><method name="getValue">return parent.parent.updateObj.appointmentstart;</method></netparam>
- <netparam><method name="getValue">return parent.parent.updateObj.appointmentend;</method></netparam>
+ <netparam><method name="getValue">return parseDateToStringTimeSeconds(parent.parent.updateObj.appointmentstart);</method></netparam>
+ <netparam><method name="getValue">return parseDateToStringTimeSeconds(parent.parent.updateObj.appointmentend);</method></netparam>
<netparam><method name="getValue">return parent.parent.updateObj.isDaily;</method></netparam>
<netparam><method name="getValue">return parent.parent.updateObj.isWeekly;</method></netparam>
<netparam><method name="getValue">return parent.parent.updateObj.isMonthly;</method></netparam>
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/calendar/management/AppointmentLogic.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/calendar/management/AppointmentLogic.java?rev=1327173&r1=1327172&r2=1327173&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/calendar/management/AppointmentLogic.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/calendar/management/AppointmentLogic.java Tue Apr 17 16:31:51 2012
@@ -147,7 +147,7 @@ public class AppointmentLogic {
String password) {
log.debug("Appointmentlogic.saveAppointment");
-
+
// TODO:Add this user as the default Moderator of the Room
Long numberOfParticipants = cfgManagement.getConfValue(
@@ -195,7 +195,6 @@ public class AppointmentLogic {
// Refactor the given time ignoring the Date is always UTC!
TimeZone timezone = timezoneUtil.getTimezoneByUser(user);
- log.debug("timezone "+timezone);
Long appointmentId = appointmentDao.addAppointment(appointmentName,
userId, appointmentLocation, appointmentDescription,
@@ -559,15 +558,4 @@ public class AppointmentLogic {
return message;
}
- /**
- * Updating AppointMent object
- */
- // ----------------------------------------------------------------------------------------------
- public Long updateAppointMent(Appointment point) {
- log.debug("AppointmentLogic.updateAppointment");
-
- return appointmentDao.updateAppointment(point);
- }
- // ----------------------------------------------------------------------------------------------
-
}
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java?rev=1327173&r1=1327172&r2=1327173&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java Tue Apr 17 16:31:51 2012
@@ -35,6 +35,7 @@ import org.openmeetings.app.Openmeetings
import org.openmeetings.app.data.basic.AuthLevelmanagement;
import org.openmeetings.app.data.basic.Configurationmanagement;
import org.openmeetings.app.data.basic.Fieldmanagment;
+import org.openmeetings.app.data.calendar.daos.AppointmentDaoImpl;
import org.openmeetings.app.data.calendar.management.AppointmentLogic;
import org.openmeetings.app.data.user.Usermanagement;
import org.openmeetings.app.data.user.dao.UsersDaoImpl;
@@ -93,6 +94,8 @@ public class Invitationmanagement {
private AuthLevelmanagement authLevelManagement;
@Autowired
private TimezoneUtil timezoneUtil;
+ @Autowired
+ private AppointmentDaoImpl appointmentDaoImpl;
/**
* Sending invitation within plain mail
@@ -900,7 +903,7 @@ public class Invitationmanagement {
if (point.getIcalId() == null || point.getIcalId().length() < 1) {
point.setIcalId(meetingId);
- appointmentLogic.updateAppointMent(point);
+ appointmentDaoImpl.updateAppointment(point);
}
log.debug(handler.getICalDataAsString());
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/CalendarService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/CalendarService.java?rev=1327173&r1=1327172&r2=1327173&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/CalendarService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/CalendarService.java Tue Apr 17 16:31:51 2012
@@ -20,6 +20,7 @@ package org.openmeetings.app.remote;
import java.util.Date;
import java.util.List;
+import java.util.TimeZone;
import org.openmeetings.app.OpenmeetingsVariables;
import org.openmeetings.app.data.basic.AuthLevelmanagement;
@@ -36,6 +37,7 @@ import org.openmeetings.app.persistence.
import org.openmeetings.app.persistence.beans.rooms.RoomTypes;
import org.openmeetings.app.persistence.beans.rooms.Rooms;
import org.openmeetings.app.persistence.beans.user.Users;
+import org.openmeetings.utils.math.TimezoneUtil;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -61,6 +63,8 @@ public class CalendarService {
private AppointmentCategoryDaoImpl appointmentCategoryDaoImpl;
@Autowired
private AppointmentReminderTypDaoImpl appointmentReminderTypDaoImpl;
+ @Autowired
+ private TimezoneUtil timezoneUtil;
public List<Appointment> getAppointmentByRange(String SID, Date starttime,
Date endtime) {
@@ -118,7 +122,7 @@ public class CalendarService {
public Long saveAppointment(String SID, String appointmentName,
String appointmentLocation, String appointmentDescription,
- Date appointmentstart, Date appointmentend, Boolean isDaily,
+ String appointmentstartStr, String appointmentendStr, Boolean isDaily,
Boolean isWeekly, Boolean isMonthly, Boolean isYearly,
Long categoryId, Long remind, @SuppressWarnings("rawtypes") List mmClient, Long roomType,
String baseUrl, Long language_id, Boolean isPasswordProtected,
@@ -133,7 +137,23 @@ public class CalendarService {
Long user_level = userManagement.getUserLevelByID(users_id);
if (authLevelManagement.checkUserLevel(user_level)) {
-
+
+ Users us = userManagement.getUserById(users_id);
+
+ // Refactor the given time ignoring the Date is always UTC!
+ TimeZone timezone = timezoneUtil.getTimezoneByUser(us);
+
+ //Transform the user time in a local time of the server
+ //machines locale timeZone and store that to the db
+ Date appointmentstart = new Date(TimezoneUtil.getCalendarInTimezone(appointmentstartStr, timezone).getTime().getTime());
+ Date appointmentend = new Date(TimezoneUtil.getCalendarInTimezone(appointmentendStr, timezone).getTime().getTime());
+
+ log.debug("timezone "+timezone);
+ log.debug("appointmentstartStr "+appointmentstartStr);
+ log.debug("appointmentendStr "+appointmentendStr);
+ log.debug("appointmentstart "+appointmentstart);
+ log.debug("appointmentend "+appointmentend);
+
Long id = appointmentLogic.saveAppointment(appointmentName,
users_id, appointmentLocation, appointmentDescription,
appointmentstart, appointmentend, isDaily, isWeekly,
@@ -152,7 +172,7 @@ public class CalendarService {
}
public Long updateAppointmentTimeOnly(String SID, Long appointmentId,
- Date appointmentstart, Date appointmentend, String baseurl,
+ String appointmentstartStr, String appointmentendStr, String baseurl,
Long language_id) {
try {
@@ -163,6 +183,22 @@ public class CalendarService {
log.debug("updateAppointment");
log.debug("appointmentId " + appointmentId);
+
+ Users us = userManagement.getUserById(users_id);
+
+ // Refactor the given time ignoring the Date is always UTC!
+ TimeZone timezone = timezoneUtil.getTimezoneByUser(us);
+
+ //Transform the user time in a local time of the server
+ //machines locale timeZone and store that to the db
+ Date appointmentstart = new Date(TimezoneUtil.getCalendarInTimezone(appointmentstartStr, timezone).getTime().getTime());
+ Date appointmentend = new Date(TimezoneUtil.getCalendarInTimezone(appointmentendStr, timezone).getTime().getTime());
+
+ log.debug("up timezone "+timezone);
+ log.debug("up appointmentstartStr "+appointmentstartStr);
+ log.debug("up appointmentendStr "+appointmentendStr);
+ log.debug("up appointmentstart "+appointmentstart);
+ log.debug("up appointmentend "+appointmentend);
appointmentLogic
.getAppointMentById(appointmentId);
@@ -185,7 +221,7 @@ public class CalendarService {
public Long updateAppointment(String SID, Long appointmentId,
String appointmentName,
String appointmentLocation, String appointmentDescription,
- Date appointmentstart, Date appointmentend, Boolean isDaily,
+ String appointmentstartStr, String appointmentendStr, Boolean isDaily,
Boolean isWeekly, Boolean isMonthly, Boolean isYearly,
Long categoryId, Long remind, @SuppressWarnings("rawtypes") List mmClient, Long roomType,
String baseUrl, Long language_id, Boolean isPasswordProtected,
@@ -214,6 +250,20 @@ public class CalendarService {
}
Users user = userManagement.getUserById(users_id);
+
+ // Refactor the given time ignoring the Date is always UTC!
+ TimeZone timezone = timezoneUtil.getTimezoneByUser(user);
+
+ //Transform the user time in a local time of the server
+ //machines locale timeZone and store that to the db
+ Date appointmentstart = new Date(TimezoneUtil.getCalendarInTimezone(appointmentstartStr, timezone).getTime().getTime());
+ Date appointmentend = new Date(TimezoneUtil.getCalendarInTimezone(appointmentendStr, timezone).getTime().getTime());
+
+ log.debug("up2 timezone "+timezone);
+ log.debug("up2 appointmentstartStr "+appointmentstartStr);
+ log.debug("up2 appointmentendStr "+appointmentendStr);
+ log.debug("up2 appointmentstart "+appointmentstart);
+ log.debug("up2 appointmentend "+appointmentend);
return appointmentDao.updateAppointment(appointmentId,
appointmentName, appointmentDescription,
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/math/TimezoneUtil.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/math/TimezoneUtil.java?rev=1327173&r1=1327172&r2=1327173&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/math/TimezoneUtil.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/math/TimezoneUtil.java Tue Apr 17 16:31:51 2012
@@ -19,6 +19,7 @@
package org.openmeetings.utils.math;
import java.util.Calendar;
+import java.util.Date;
import java.util.TimeZone;
import org.openmeetings.app.OpenmeetingsVariables;
@@ -168,6 +169,36 @@ public class TimezoneUtil {
return TimeZone.getDefault();
}
+ /**
+ * We ignore the fact that a Date Object is always in UTC internally and
+ * treat it as if it contains only dd.mm.yyyy HH:mm:ss. We need to do this
+ * cause we cannot trust the Date Object send from the client. We have the
+ * timeZone information additional to the Date, so we use it to transform it
+ * now to a Calendar Object.
+ *
+ * @param dateTime
+ * @param timezone
+ * @return
+ */
+ public static Calendar getCalendarInTimezone(String dateTimeStr,
+ TimeZone timezone) {
+
+ Date dateTime = CalendarPatterns.parseImportDate(dateTimeStr);
+
+ Calendar calOrig = Calendar.getInstance();
+ calOrig.setTime(dateTime);
+
+ Calendar cal = Calendar.getInstance(timezone);
+ cal.set(Calendar.YEAR, calOrig.get(Calendar.YEAR));
+ cal.set(Calendar.MONTH, calOrig.get(Calendar.MONTH));
+ cal.set(Calendar.DATE, calOrig.get(Calendar.DATE));
+ cal.set(Calendar.HOUR_OF_DAY, calOrig.get(Calendar.HOUR_OF_DAY));
+ cal.set(Calendar.MINUTE, calOrig.get(Calendar.MINUTE));
+ cal.set(Calendar.SECOND, calOrig.get(Calendar.SECOND));
+
+ return cal;
+ }
+
public static long _getOffset(TimeZone timezone) {
Calendar cal = Calendar.getInstance();
cal.setTimeZone(timezone);