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


Reply via email to