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);