Author: solomax
Date: Fri Sep 18 13:36:29 2015
New Revision: 1703846

URL: http://svn.apache.org/viewvc?rev=1703846&view=rev
Log:
[OPENMEETINGS-1249] invitation date/time is saved/checked correctly

Added:
    
openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/CalendarHelper.java
      - copied, changed from r1703487, 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarWebHelper.java
    
openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarHelper.java
      - copied, changed from r1703487, 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CalendarHelper.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CalendarWebHelper.java
Removed:
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CalendarHelper.java
Modified:
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/conference/InvitationManager.java
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/InvitationService.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/InvitationService.java
    
openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
    openmeetings/trunk/singlewebapp/openmeetings-util/pom.xml
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/conference/InvitationManager.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/conference/InvitationManager.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/conference/InvitationManager.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/conference/InvitationManager.java
 Fri Sep 18 13:36:29 2015
@@ -21,7 +21,6 @@ package org.apache.openmeetings.data.con
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.security.NoSuchAlgorithmException;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.TimeZone;
@@ -41,6 +40,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.util.TimezoneUtil;
 import org.apache.openmeetings.mail.MailHandler;
 import org.apache.openmeetings.mail.SMSHandler;
+import org.apache.openmeetings.util.CalendarHelper;
 import org.apache.openmeetings.util.LinkHelper;
 import org.apache.openmeetings.util.crypt.MD5;
 import org.apache.openmeetings.util.crypt.ManageCryptStyle;
@@ -54,6 +54,7 @@ import org.apache.wicket.util.string.Str
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.threeten.bp.LocalDateTime;
 
 /**
  * 
@@ -176,46 +177,42 @@ public class InvitationManager implement
        public Object getInvitationByHashCode(String hashCode, boolean 
hidePass) {
                try {
                        log.debug("Invitation was requested by hashcode: " + 
hashCode);
-                       Invitation invitation = 
invitationDao.getInvitationByHashCode(hashCode, hidePass);
+                       Invitation i = 
invitationDao.getInvitationByHashCode(hashCode, hidePass);
 
-                       if (invitation == null) {
+                       if (i == null) {
                                // already deleted or does not exist
                                return new Long(-31);
                        } else {
-                               switch (invitation.getValid()) {
+                               switch (i.getValid()) {
                                        case OneTime:
                                                // do this only if the user 
tries to get the Invitation, not
                                                // while checking the PWD
                                                if (hidePass) {
                                                        // one-time invitation
-                                                       if 
(invitation.isUsed()) {
+                                                       if (i.isUsed()) {
                                                                // Invitation 
is of type *only-one-time* and was
                                                                // already used
                                                                return new 
Long(-32);
                                                        } else {
                                                                // set to true 
if this is the first time / a normal
                                                                // 
getInvitation-Query
-                                                               
invitation.setUsed(true);
-                                                               
invitationDao.update(invitation);
+                                                               i.setUsed(true);
+                                                               
invitationDao.update(i);
                                                                // 
invitation.setInvitationpass(null);
-                                                               
invitation.setAllowEntry(true);
+                                                               
i.setAllowEntry(true);
                                                        }
                                                } else {
-                                                       
invitation.setAllowEntry(true);
+                                                       i.setAllowEntry(true);
                                                }
                                                break;
                                        case Period:
-                                               TimeZone tz = 
timezoneUtil.getTimeZone(invitation.getInvitee());
-                                               Calendar now = 
Calendar.getInstance(tz);
-                                               Calendar start = 
Calendar.getInstance(tz);
-                                               
start.setTime(invitation.getValidFrom());
-
-                                               Calendar end = 
Calendar.getInstance(tz);
-                                               
end.setTime(invitation.getValidTo());
-                                               if (now.after(start) && 
now.before(end)) {
-                                                       
invitationDao.update(invitation);
+                                               LocalDateTime now = 
LocalDateTime.now();
+                                               LocalDateTime from = 
CalendarHelper.getDateTime(i.getValidFrom(), i.getInvitee().getTimeZoneId());
+                                               LocalDateTime to = 
CalendarHelper.getDateTime(i.getValidTo(), i.getInvitee().getTimeZoneId());
+                                               if (now.isAfter(from) && 
now.isBefore(to)) {
+                                                       invitationDao.update(i);
                                                        // 
invitation.setInvitationpass(null);
-                                                       
invitation.setAllowEntry(true);
+                                                       i.setAllowEntry(true);
                                                } else {
 
                                                        // Invitation is of 
type *period* and is not valid
@@ -223,18 +220,18 @@ public class InvitationManager implement
                                                        // correctly
                                                        // in the method where 
it shows that the hash code does
                                                        // not work anymore
-                                                       
invitation.setAllowEntry(false);
+                                                       i.setAllowEntry(false);
                                                }
                                                break;
                                        case Endless:
                                        default:
-                                               
invitationDao.update(invitation);
+                                               invitationDao.update(i);
 
-                                               invitation.setAllowEntry(true);
+                                               i.setAllowEntry(true);
                                                // 
invitation.setInvitationpass(null);
                                                break;
                                }
-                               return invitation;
+                               return i;
                        }
 
                } catch (Exception err) {
@@ -256,9 +253,6 @@ public class InvitationManager implement
                        if (obj instanceof Invitation) {
                                Invitation invitation = (Invitation) obj;
 
-                               // log.debug("invitationId 
"+invitation.getInvitations_id());
-                               // log.debug("pass "+pass);
-                               // log.debug("getInvitationpass 
"+invitation.getInvitationpass());
 
                                if 
(ManageCryptStyle.getInstanceOfCrypt().verifyPassword(pass, 
invitation.getPassword())) {
                                        return new Long(1);

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/InvitationService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/InvitationService.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/InvitationService.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/InvitationService.java
 Fri Sep 18 13:36:29 2015
@@ -20,7 +20,7 @@ package org.apache.openmeetings.remote;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
-import java.util.Calendar;
+import java.util.Date;
 
 import org.apache.openmeetings.data.conference.InvitationManager;
 import org.apache.openmeetings.db.dao.calendar.IInvitationManager.MessageType;
@@ -30,13 +30,14 @@ import org.apache.openmeetings.db.dao.us
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.room.Invitation.Valid;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.db.util.TimezoneUtil;
 import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.CalendarHelper;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.api.service.IPendingServiceCallback;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.threeten.bp.LocalDateTime;
 
 public class InvitationService implements IPendingServiceCallback {
        private static final Logger log = 
Red5LoggerFactory.getLogger(InvitationService.class, webAppRootKey);
@@ -47,25 +48,21 @@ public class InvitationService implement
        @Autowired
        private InvitationManager invitationManager;
        @Autowired
-       private TimezoneUtil timezoneUtil;
-       @Autowired
        private RoomDao roomDao;
 
        public void resultReceived(IPendingServiceCall arg0) {
                log.debug("InvitationService resultReceived" + arg0);
        }
 
-       private Calendar getDate(String date, String time, String tzId) {
-               Calendar c = 
Calendar.getInstance(timezoneUtil.getTimeZone(tzId));
-               c.set(Calendar.YEAR, Integer.parseInt(date.substring(6)));
-               c.set(Calendar.MONTH, Integer.parseInt(date.substring(3, 5)) - 
1);
-               c.set(Calendar.DAY_OF_MONTH, Integer.parseInt(date.substring(0, 
2)));
-               c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.substring(0, 
2)));
-               c.set(Calendar.MINUTE, Integer.parseInt(time.substring(3, 5)));
-               c.set(Calendar.SECOND, 0);
-               c.set(Calendar.MILLISECOND, 0);
-               
-               return c;
+       private Date getDate(String date, String time, String tzId) {
+               LocalDateTime d = LocalDateTime.of(
+                               Integer.parseInt(date.substring(6)) //year
+                               , Integer.parseInt(date.substring(3, 5)) - 1 
//month
+                               , Integer.parseInt(date.substring(0, 2)) 
//dayOfMonth
+                               , Integer.parseInt(time.substring(0, 2)) //hour
+                               , Integer.parseInt(time.substring(3, 5)) 
//minute
+                               );
+               return CalendarHelper.getDate(d, tzId);
        }
        
        /**
@@ -103,8 +100,8 @@ public class InvitationService implement
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
                                log.debug("sendInvitationHash: ");
        
-                               Calendar calFrom = getDate(validFromDate, 
validFromTime, iCalTz);
-                               Calendar calTo = getDate(validToDate, 
validToTime, iCalTz);
+                               Date from = getDate(validFromDate, 
validFromTime, iCalTz);
+                               Date to = getDate(validToDate, validToTime, 
iCalTz);
        
                                User owner = null;
                                if (users_id < 0) {
@@ -115,7 +112,7 @@ public class InvitationService implement
                                Invitation invitation = 
invitationManager.getInvitation(invitee, roomDao.get(room_id),
                                                                
isPasswordProtected, invitationpass, Valid.fromInt(valid)
                                                                , 
userDao.get(users_id), language_id,
-                                                               
calFrom.getTime(), calTo.getTime(), null);
+                                                               from, to, null);
 
                                if (invitation != null) {
                                        if (sendMail) {

Copied: 
openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/CalendarHelper.java
 (from r1703487, 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java)
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/CalendarHelper.java?p2=openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/CalendarHelper.java&p1=openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java&r1=1703487&r2=1703846&rev=1703846&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/CalendarHelper.java
 Fri Sep 18 13:36:29 2015
@@ -16,9 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.util;
-
-import static org.apache.openmeetings.web.app.WebSession.getUserTimeZone;
+package org.apache.openmeetings.util;
 
 import java.util.Date;
 
@@ -29,36 +27,36 @@ import org.threeten.bp.ZoneId;
 import org.threeten.bp.ZonedDateTime;
 
 public class CalendarHelper {
-       public static ZoneId getZoneId() {
-               return ZoneId.of(getUserTimeZone().getID());
+       public static ZoneId getZoneId(String tzId) {
+               return ZoneId.of(tzId);
        }
        
-       public static Date getDate(LocalDate d) {
-               return getDate(d.atStartOfDay());
+       public static Date getDate(LocalDate d, String tzId) {
+               return getDate(d.atStartOfDay(), tzId);
        }
 
-       public static Date getDate(LocalDateTime d) {
-               return new 
Date(d.atZone(getZoneId()).toInstant().toEpochMilli());
+       public static Date getDate(LocalDateTime d, String tzId) {
+               return new 
Date(d.atZone(getZoneId(tzId)).toInstant().toEpochMilli());
        }
 
-       public static ZonedDateTime getZoneDateTime(Date d) {
+       public static ZonedDateTime getZoneDateTime(Date d, String tzId) {
                if (d == null) {
                        d = new Date();
                }
-               return 
Instant.ofEpochMilli(d.getTime()).atZone(ZoneId.of(getUserTimeZone().getID()));
+               return 
Instant.ofEpochMilli(d.getTime()).atZone(getZoneId(tzId));
        }
        
-       public static LocalDate getDate(Date d) {
+       public static LocalDate getDate(Date d, String tzId) {
                if (d == null) {
                        d = new Date();
                }
-               return getZoneDateTime(d).toLocalDate();
+               return getZoneDateTime(d, tzId).toLocalDate();
        }
        
-       public static LocalDateTime getDateTime(Date d) {
+       public static LocalDateTime getDateTime(Date d, String tzId) {
                if (d == null) {
                        d = new Date();
                }
-               return getZoneDateTime(d).toLocalDateTime();
+               return getZoneDateTime(d, tzId).toLocalDateTime();
        }
 }

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 Fri Sep 18 13:36:29 2015
@@ -38,9 +38,9 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.user.Salutation;
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.util.CalendarHelper;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
-import org.apache.openmeetings.web.util.CalendarHelper;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import 
org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
@@ -127,7 +127,8 @@ public class GeneralUserForm extends For
 
                        @Override
                        public void onValueChanged(AjaxRequestTarget target) {
-                               
GeneralUserForm.this.getModelObject().setAge(CalendarHelper.getDate(age));
+                               User u = GeneralUserForm.this.getModelObject();
+                               u.setAge(CalendarHelper.getDate(age, 
u.getTimeZoneId()));
                        }
                });
                add(new TextField<String>("adresses.street"));
@@ -186,7 +187,7 @@ public class GeneralUserForm extends For
 
        public void updateModelObject(User u) {
                salutation = 
getBean(SalutationDao.class).get(u.getSalutations_id(), getLanguage());
-               age = CalendarHelper.getDate(u.getAge());
+               age = CalendarHelper.getDate(u.getAge(), u.getTimeZoneId());
        }
        
        @Override

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 Fri Sep 18 13:36:29 2015
@@ -22,6 +22,8 @@ import static org.apache.openmeetings.ut
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getLanguage;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDateTime;
 import static org.apache.openmeetings.web.util.RoomTypeDropDown.getRoomTypes;
 
 import java.util.ArrayList;
@@ -48,7 +50,6 @@ import org.apache.openmeetings.web.app.W
 import org.apache.openmeetings.web.common.OmDateTimePicker;
 import org.apache.openmeetings.web.pages.MainPage;
 import org.apache.openmeetings.web.user.rooms.RoomEnterBehavior;
-import org.apache.openmeetings.web.util.CalendarHelper;
 import org.apache.openmeetings.web.util.FormatHelper;
 import org.apache.openmeetings.web.util.RoomTypeDropDown;
 import org.apache.openmeetings.web.util.UserMultiChoice;
@@ -104,8 +105,8 @@ public class AppointmentDialog extends A
        
        public void setModelObjectWithAjaxTarget(Appointment a, 
AjaxRequestTarget target) {
                form.setModelObject(a);
-               
form.start.setModelObject(CalendarHelper.getDateTime(a.getStart()));
-               form.end.setModelObject(CalendarHelper.getDateTime(a.getEnd()));
+               form.start.setModelObject(getDateTime(a.getStart()));
+               form.end.setModelObject(getDateTime(a.getEnd()));
                form.setEnabled(isOwner(a));
                log.debug(" -- setModelObjectWithAjaxTarget -- Current model " 
+ a);
                if (a.getId() != null) {
@@ -212,8 +213,8 @@ public class AppointmentDialog extends A
                }
         }
         a.setMeetingMembers(attendees);
-        a.setStart(CalendarHelper.getDate(form.start.getModelObject()));
-        a.setEnd(CalendarHelper.getDate(form.end.getModelObject()));
+        a.setStart(getDate(form.start.getModelObject()));
+        a.setEnd(getDate(form.end.getModelObject()));
         getBean(AppointmentDao.class).update(a, getUserId());
                target.add(feedback);
                calendarPanel.refresh(target);

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
 Fri Sep 18 13:36:29 2015
@@ -18,15 +18,15 @@
  */
 package org.apache.openmeetings.web.user.calendar;
 
+import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.util.CalendarHelper;
 
 import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
 import com.googlecode.wicket.jquery.ui.calendar.CalendarModel;
@@ -42,7 +42,7 @@ public class AppointmentModel extends Ca
        @Override
        protected List<? extends CalendarEvent> load() {
                List<CalendarEvent> list = new ArrayList<CalendarEvent>();
-               for (Appointment a : 
Application.getBean(AppointmentDao.class).getAppointmentsByRange(getUserId(), 
CalendarHelper.getDate(getStart()), CalendarHelper.getDate(getEnd()))) {
+               for (Appointment a : 
getBean(AppointmentDao.class).getAppointmentsByRange(getUserId(), 
getDate(getStart()), getDate(getEnd()))) {
                        list.add(new OmCalendarEvent(a));
                }
                return list;

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
 Fri Sep 18 13:36:29 2015
@@ -22,6 +22,8 @@ import static org.apache.openmeetings.ut
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getZoneId;
 
 import java.util.Date;
 
@@ -33,7 +35,6 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.UserPanel;
-import org.apache.openmeetings.web.util.CalendarHelper;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.json.JSONArray;
@@ -200,12 +201,12 @@ public class CalendarPanel extends UserP
                                Appointment a = getDefault();
                                LocalDateTime s = start, e = end;
                                if (CalendarView.month == view) {
-                                       LocalDateTime now = 
ZonedDateTime.now(CalendarHelper.getZoneId()).toLocalDateTime();
+                                       LocalDateTime now = 
ZonedDateTime.now(getZoneId()).toLocalDateTime();
                                        s = 
start.withHour(now.getHour()).withMinute(now.getMinute());
                                        e = s.plus(1, ChronoUnit.HOURS);
                                }
-                               a.setStart(CalendarHelper.getDate(s));
-                               a.setEnd(CalendarHelper.getDate(e));
+                               a.setStart(getDate(s));
+                               a.setEnd(getDate(e));
                                dialog.setModelObjectWithAjaxTarget(a, target);
                                
                                dialog.open(target);

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
 Fri Sep 18 13:36:29 2015
@@ -18,8 +18,9 @@
  */
 package org.apache.openmeetings.web.user.calendar;
 
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDateTime;
+
 import org.apache.openmeetings.db.entity.calendar.Appointment;
-import org.apache.openmeetings.web.util.CalendarHelper;
 
 import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
 
@@ -28,8 +29,8 @@ public class OmCalendarEvent extends Cal
        
        public OmCalendarEvent(Appointment a) {
                super(a.getId().intValue(), a.getTitle(), null);
-               setStart(CalendarHelper.getDateTime(a.getStart()));
-               setEnd(CalendarHelper.getDateTime(a.getEnd()));
+               setStart(getDateTime(a.getStart()));
+               setEnd(getDateTime(a.getEnd()));
                setEditable(AppointmentDialog.isOwner(a));
                setAllDay(false);
        }

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
 Fri Sep 18 13:36:29 2015
@@ -45,10 +45,11 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.mail.MailHandler;
+import org.apache.openmeetings.util.CalendarHelper;
 import org.apache.openmeetings.util.LinkHelper;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.common.OmDateTimePicker;
-import org.apache.openmeetings.web.util.CalendarHelper;
+import org.apache.openmeetings.web.util.CalendarWebHelper;
 import org.apache.openmeetings.web.util.ContactsHelper;
 import org.apache.openmeetings.web.util.RoomTypeDropDown;
 import org.apache.openmeetings.web.util.UserMultiChoice;
@@ -178,6 +179,8 @@ public class MessageDialog extends Abstr
        protected void onSubmit(AjaxRequestTarget target) {
                PrivateMessage p = getModelObject();
                p.setInserted(new Date());
+               UserDao userDao = getBean(UserDao.class); 
+               User owner = userDao.get(getUserId());
                if (p.isBookedRoom()) {
                        Room r = p.getRoom();
                        r.setName(p.getSubject());
@@ -191,8 +194,8 @@ public class MessageDialog extends Abstr
                        a.setTitle(p.getSubject());
                        a.setDescription(p.getMessage());
                        a.setRoom(r);
-                       
a.setStart(CalendarHelper.getDate(start.getModelObject()));
-                       a.setEnd(CalendarHelper.getDate(end.getModelObject()));
+                       
a.setStart(CalendarWebHelper.getDate(start.getModelObject()));
+                       
a.setEnd(CalendarWebHelper.getDate(end.getModelObject()));
                        List<MeetingMember> attendees = new ArrayList<>();
                        for (User to : modelTo.getObject()) {
                        MeetingMember mm = new MeetingMember();
@@ -203,7 +206,7 @@ public class MessageDialog extends Abstr
                        mm.setAppointment(a);
                        attendees.add(mm);
                        }
-                       a.setOwner(getBean(UserDao.class).get(getUserId()));
+                       a.setOwner(owner);
                        a.setMeetingMembers(attendees);
                getBean(AppointmentDao.class).update(a, getUserId(), false);
                        p.setRoom(r);
@@ -212,7 +215,6 @@ public class MessageDialog extends Abstr
                }
                PrivateMessagesDao msgDao = getBean(PrivateMessagesDao.class);
                for (User to : modelTo.getObject()) {
-                       UserDao userDao = getBean(UserDao.class); 
                        if (to.getUser_id() == null) {
                                userDao.update(to, getUserId());
                        }
@@ -228,13 +230,13 @@ public class MessageDialog extends Abstr
                        msgDao.update(p, getUserId());
                        if (to.getAdresses() != null) {
                                String aLinkHTML =      (isPrivate && 
to.getType() == Type.user) ? "<br/><br/>" + "<a href='" + 
ContactsHelper.getLink() + "'>"
-                                                       + 
Application.getString(1302) + "</a><br/>" : "";
+                                                       + 
Application.getString(1302, to.getLanguage_id()) + "</a><br/>" : "";
                                String invitation_link = "";
                                if (p.isBookedRoom()) {
                                        Invitation i = 
getBean(InvitationManager.class).getInvitation(to, p.getRoom(),
-                                                       false, null, 
Valid.Period
-                                                       , 
userDao.get(getUserId()), userDao.get(getUserId()).getLanguage_id(),
-                                                       
CalendarHelper.getDate(start.getModelObject()), 
CalendarHelper.getDate(end.getModelObject()), null);
+                                                       false, null, 
Valid.Period, owner, to.getLanguage_id()
+                                                       , 
CalendarHelper.getDate(start.getModelObject(), to.getTimeZoneId())
+                                                       , 
CalendarHelper.getDate(end.getModelObject(), to.getTimeZoneId()), null);
                                        
                                        invitation_link = 
LinkHelper.getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i);
 
@@ -242,15 +244,15 @@ public class MessageDialog extends Abstr
                                                invitation_link = "";
                                        } else {
                                                invitation_link = "<br/>" //
-                                                               + 
Application.getString(503)
+                                                               + 
Application.getString(503, to.getLanguage_id())
                                                                + "<br/><a 
href='" + invitation_link
                                                                + "'>"
-                                                               + 
Application.getString(504) + "</a><br/>";
+                                                               + 
Application.getString(504, to.getLanguage_id()) + "</a><br/>";
                                        }
                                }
                                
                                
getBean(MailHandler.class).send(to.getAdresses().getEmail(),
-                                               Application.getString(1301) + 
p.getSubject(),
+                                               Application.getString(1301, 
to.getLanguage_id()) + p.getSubject(),
                                                (p.getMessage() == null ? "" : 
p.getMessage().replaceAll("\\<.*?>", "")) + aLinkHTML + invitation_link);
                        }
                }

Added: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarWebHelper.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarWebHelper.java?rev=1703846&view=auto
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarWebHelper.java
 (added)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/CalendarWebHelper.java
 Fri Sep 18 13:36:29 2015
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.web.app.WebSession.getUserTimeZone;
+
+import java.util.Date;
+
+import org.apache.openmeetings.util.CalendarHelper;
+import org.threeten.bp.LocalDate;
+import org.threeten.bp.LocalDateTime;
+import org.threeten.bp.ZoneId;
+
+public class CalendarWebHelper extends CalendarHelper {
+       public static ZoneId getZoneId() {
+               return getZoneId(getUserTimeZone().getID());
+       }
+       
+       public static Date getDate(LocalDateTime d) {
+               return getDate(d, getUserTimeZone().getID());
+       }
+       
+       public static Date getDate(LocalDate d) {
+               return getDate(d, getUserTimeZone().getID());
+       }
+       
+       public static LocalDateTime getDateTime(Date d) {
+               return getDateTime(d, getUserTimeZone().getID());
+       }
+}

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/InvitationService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/InvitationService.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/InvitationService.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/InvitationService.java
 Fri Sep 18 13:36:29 2015
@@ -20,10 +20,9 @@ package org.apache.openmeetings.core.rem
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
-import java.util.Calendar;
+import java.util.Date;
 
 import org.apache.openmeetings.db.dao.room.IInvitationManager;
-import org.apache.openmeetings.db.dao.room.InvitationDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -32,12 +31,13 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.room.Invitation.Valid;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
-import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.util.CalendarHelper;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.api.service.IPendingServiceCallback;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.threeten.bp.LocalDateTime;
 
 public class InvitationService implements IPendingServiceCallback {
        private static final Logger log = 
Red5LoggerFactory.getLogger(InvitationService.class, webAppRootKey);
@@ -48,27 +48,21 @@ public class InvitationService implement
        @Autowired
        private IInvitationManager invitationManager;
        @Autowired
-       private InvitationDao invitationDao;
-       @Autowired
-       private TimezoneUtil timezoneUtil;
-       @Autowired
        private RoomDao roomDao;
 
        public void resultReceived(IPendingServiceCall arg0) {
                log.debug("InvitationService resultReceived" + arg0);
        }
 
-       private Calendar getDate(String date, String time, String tzId) {
-               Calendar c = 
Calendar.getInstance(timezoneUtil.getTimeZone(tzId));
-               c.set(Calendar.YEAR, Integer.parseInt(date.substring(6)));
-               c.set(Calendar.MONTH, Integer.parseInt(date.substring(3, 5)) - 
1);
-               c.set(Calendar.DAY_OF_MONTH, Integer.parseInt(date.substring(0, 
2)));
-               c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.substring(0, 
2)));
-               c.set(Calendar.MINUTE, Integer.parseInt(time.substring(3, 5)));
-               c.set(Calendar.SECOND, 0);
-               c.set(Calendar.MILLISECOND, 0);
-               
-               return c;
+       private Date getDate(String date, String time, String tzId) {
+               LocalDateTime d = LocalDateTime.of(
+                               Integer.parseInt(date.substring(6)) //year
+                               , Integer.parseInt(date.substring(3, 5)) - 1 
//month
+                               , Integer.parseInt(date.substring(0, 2)) 
//dayOfMonth
+                               , Integer.parseInt(time.substring(0, 2)) //hour
+                               , Integer.parseInt(time.substring(3, 5)) 
//minute
+                               );
+               return CalendarHelper.getDate(d, tzId);
        }
        
        /**
@@ -106,8 +100,8 @@ public class InvitationService implement
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
                                log.debug("sendInvitationHash: ");
        
-                               Calendar calFrom = getDate(validFromDate, 
validFromTime, iCalTz);
-                               Calendar calTo = getDate(validToDate, 
validToTime, iCalTz);
+                               Date from = getDate(validFromDate, 
validFromTime, iCalTz);
+                               Date to = getDate(validToDate, validToTime, 
iCalTz);
        
                                User owner = null;
                                if (users_id < 0) {
@@ -118,7 +112,7 @@ public class InvitationService implement
                                Invitation invitation = 
invitationManager.getInvitation(invitee, roomDao.get(room_id),
                                                                
isPasswordProtected, invitationpass, Valid.fromInt(valid)
                                                                , 
userDao.get(users_id), languageId,
-                                                               
calFrom.getTime(), calTo.getTime(), null);
+                                                               from, to, null);
 
                                if (invitation != null) {
                                        if (sendMail) {
@@ -155,7 +149,7 @@ public class InvitationService implement
        }
        
        public Object getInvitationByHash(String hashCode) {
-               return invitationDao.getInvitationByHashCode(hashCode, true);
+               return invitationManager.getInvitationByHashCode(hashCode, 
true);
        }
 
        public Object checkInvitationPass(String hashCode, String pass) {

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
 Fri Sep 18 13:36:29 2015
@@ -22,7 +22,6 @@ import static org.apache.openmeetings.ut
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.wicketApplicationName;
 
 import java.security.NoSuchAlgorithmException;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.TimeZone;
@@ -50,6 +49,7 @@ import org.apache.openmeetings.service.m
 import 
org.apache.openmeetings.service.mail.template.CreatedAppointmentTemplate;
 import org.apache.openmeetings.service.mail.template.InvitationTemplate;
 import 
org.apache.openmeetings.service.mail.template.UpdatedAppointmentTemplate;
+import org.apache.openmeetings.util.CalendarHelper;
 import org.apache.openmeetings.util.crypt.MD5;
 import org.apache.openmeetings.util.crypt.ManageCryptStyle;
 import org.apache.openmeetings.util.mail.IcalHandler;
@@ -58,6 +58,7 @@ import org.apache.wicket.util.string.Str
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.threeten.bp.LocalDateTime;
 
 /**
  * 
@@ -180,46 +181,42 @@ public class InvitationManager implement
        public Object getInvitationByHashCode(String hashCode, boolean 
hidePass) {
                try {
                        log.debug("Invitation was requested by hashcode: " + 
hashCode);
-                       Invitation invitation = 
invitationDao.getInvitationByHashCode(hashCode, hidePass);
+                       Invitation i = 
invitationDao.getInvitationByHashCode(hashCode, hidePass);
 
-                       if (invitation == null) {
+                       if (i == null) {
                                // already deleted or does not exist
                                return new Long(-31);
                        } else {
-                               switch (invitation.getValid()) {
+                               switch (i.getValid()) {
                                        case OneTime:
                                                // do this only if the user 
tries to get the Invitation, not
                                                // while checking the PWD
                                                if (hidePass) {
                                                        // one-time invitation
-                                                       if 
(invitation.isUsed()) {
+                                                       if (i.isUsed()) {
                                                                // Invitation 
is of type *only-one-time* and was
                                                                // already used
                                                                return new 
Long(-32);
                                                        } else {
                                                                // set to true 
if this is the first time / a normal
                                                                // 
getInvitation-Query
-                                                               
invitation.setUsed(true);
-                                                               
invitationDao.update(invitation);
+                                                               i.setUsed(true);
+                                                               
invitationDao.update(i);
                                                                // 
invitation.setInvitationpass(null);
-                                                               
invitation.setAllowEntry(true);
+                                                               
i.setAllowEntry(true);
                                                        }
                                                } else {
-                                                       
invitation.setAllowEntry(true);
+                                                       i.setAllowEntry(true);
                                                }
                                                break;
                                        case Period:
-                                               TimeZone tz = 
timezoneUtil.getTimeZone(invitation.getInvitee());
-                                               Calendar now = 
Calendar.getInstance(tz);
-                                               Calendar start = 
Calendar.getInstance(tz);
-                                               
start.setTime(invitation.getValidFrom());
-
-                                               Calendar end = 
Calendar.getInstance(tz);
-                                               
end.setTime(invitation.getValidTo());
-                                               if (now.after(start) && 
now.before(end)) {
-                                                       
invitationDao.update(invitation);
+                                               LocalDateTime now = 
LocalDateTime.now();
+                                               LocalDateTime from = 
CalendarHelper.getDateTime(i.getValidFrom(), i.getInvitee().getTimeZoneId());
+                                               LocalDateTime to = 
CalendarHelper.getDateTime(i.getValidTo(), i.getInvitee().getTimeZoneId());
+                                               if (now.isAfter(from) && 
now.isBefore(to)) {
+                                                       invitationDao.update(i);
                                                        // 
invitation.setInvitationpass(null);
-                                                       
invitation.setAllowEntry(true);
+                                                       i.setAllowEntry(true);
                                                } else {
 
                                                        // Invitation is of 
type *period* and is not valid
@@ -227,18 +224,18 @@ public class InvitationManager implement
                                                        // correctly
                                                        // in the method where 
it shows that the hash code does
                                                        // not work anymore
-                                                       
invitation.setAllowEntry(false);
+                                                       i.setAllowEntry(false);
                                                }
                                                break;
                                        case Endless:
                                        default:
-                                               
invitationDao.update(invitation);
+                                               invitationDao.update(i);
 
-                                               invitation.setAllowEntry(true);
+                                               i.setAllowEntry(true);
                                                // 
invitation.setInvitationpass(null);
                                                break;
                                }
-                               return invitation;
+                               return i;
                        }
 
                } catch (Exception err) {

Modified: openmeetings/trunk/singlewebapp/openmeetings-util/pom.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-util/pom.xml?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-util/pom.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-util/pom.xml Fri Sep 18 
13:36:29 2015
@@ -77,5 +77,10 @@
                        <artifactId>wicket-util</artifactId>
                        <version>${wicket.version}</version>
                </dependency>
+               <dependency>
+                       <groupId>org.threeten</groupId>
+                       <artifactId>threetenbp</artifactId>
+                       <version>1.2</version>
+               </dependency>
        </dependencies>
 </project>

Copied: 
openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarHelper.java
 (from r1703487, 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CalendarHelper.java)
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarHelper.java?p2=openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarHelper.java&p1=openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CalendarHelper.java&r1=1703487&r2=1703846&rev=1703846&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CalendarHelper.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarHelper.java
 Fri Sep 18 13:36:29 2015
@@ -16,9 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.util;
-
-import static org.apache.openmeetings.web.app.WebSession.getUserTimeZone;
+package org.apache.openmeetings.util;
 
 import java.util.Date;
 
@@ -29,36 +27,36 @@ import org.threeten.bp.ZoneId;
 import org.threeten.bp.ZonedDateTime;
 
 public class CalendarHelper {
-       public static ZoneId getZoneId() {
-               return ZoneId.of(getUserTimeZone().getID());
+       public static ZoneId getZoneId(String tzId) {
+               return ZoneId.of(tzId);
        }
        
-       public static Date getDate(LocalDate d) {
-               return getDate(d.atStartOfDay());
+       public static Date getDate(LocalDate d, String tzId) {
+               return getDate(d.atStartOfDay(), tzId);
        }
 
-       public static Date getDate(LocalDateTime d) {
-               return new 
Date(d.atZone(getZoneId()).toInstant().toEpochMilli());
+       public static Date getDate(LocalDateTime d, String tzId) {
+               return new 
Date(d.atZone(getZoneId(tzId)).toInstant().toEpochMilli());
        }
 
-       public static ZonedDateTime getZoneDateTime(Date d) {
+       public static ZonedDateTime getZoneDateTime(Date d, String tzId) {
                if (d == null) {
                        d = new Date();
                }
-               return 
Instant.ofEpochMilli(d.getTime()).atZone(ZoneId.of(getUserTimeZone().getID()));
+               return 
Instant.ofEpochMilli(d.getTime()).atZone(getZoneId(tzId));
        }
        
-       public static LocalDate getDate(Date d) {
+       public static LocalDate getDate(Date d, String tzId) {
                if (d == null) {
                        d = new Date();
                }
-               return getZoneDateTime(d).toLocalDate();
+               return getZoneDateTime(d, tzId).toLocalDate();
        }
        
-       public static LocalDateTime getDateTime(Date d) {
+       public static LocalDateTime getDateTime(Date d, String tzId) {
                if (d == null) {
                        d = new Date();
                }
-               return getZoneDateTime(d).toLocalDateTime();
+               return getZoneDateTime(d, tzId).toLocalDateTime();
        }
 }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 Fri Sep 18 13:36:29 2015
@@ -37,9 +37,9 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Salutation;
+import org.apache.openmeetings.util.CalendarHelper;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
-import org.apache.openmeetings.web.util.CalendarHelper;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import 
org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
 import org.apache.wicket.markup.head.IHeaderResponse;
@@ -113,7 +113,8 @@ public class GeneralUserForm extends For
 
                        @Override
                        public void onValueChanged(IPartialPageRequestHandler 
target) {
-                               
GeneralUserForm.this.getModelObject().setAge(CalendarHelper.getDate(age));
+                               User u = GeneralUserForm.this.getModelObject();
+                               u.setAge(CalendarHelper.getDate(age, 
u.getTimeZoneId()));
                        }
                });
                add(new TextField<String>("address.street"));
@@ -171,7 +172,7 @@ public class GeneralUserForm extends For
        }
 
        public void updateModelObject(User u) {
-               age = CalendarHelper.getDate(u.getAge());
+               age = CalendarHelper.getDate(u.getAge(), u.getTimeZoneId());
        }
        
        @Override

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 Fri Sep 18 13:36:29 2015
@@ -21,6 +21,8 @@ package org.apache.openmeetings.web.user
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDateTime;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -45,7 +47,6 @@ import org.apache.openmeetings.web.app.W
 import org.apache.openmeetings.web.common.OmDateTimePicker;
 import org.apache.openmeetings.web.pages.MainPage;
 import org.apache.openmeetings.web.user.rooms.RoomEnterBehavior;
-import org.apache.openmeetings.web.util.CalendarHelper;
 import org.apache.openmeetings.web.util.RoomTypeDropDown;
 import org.apache.openmeetings.web.util.UserMultiChoice;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -101,8 +102,8 @@ public class AppointmentDialog extends A
        
        public void setModelObjectWithAjaxTarget(Appointment a, 
AjaxRequestTarget target) {
                form.setModelObject(a);
-               
form.start.setModelObject(CalendarHelper.getDateTime(a.getStart()));
-               form.end.setModelObject(CalendarHelper.getDateTime(a.getEnd()));
+               form.start.setModelObject(getDateTime(a.getStart()));
+               form.end.setModelObject(getDateTime(a.getEnd()));
                form.setEnabled(isOwner(a));
                log.debug(" -- setModelObjectWithAjaxTarget -- Current model " 
+ a);
                if (a.getId() != null) {
@@ -210,8 +211,8 @@ public class AppointmentDialog extends A
                }
         }
         a.setMeetingMembers(attendees);
-        a.setStart(CalendarHelper.getDate(form.start.getModelObject()));
-        a.setEnd(CalendarHelper.getDate(form.end.getModelObject()));
+        a.setStart(getDate(form.start.getModelObject()));
+        a.setEnd(getDate(form.end.getModelObject()));
         getBean(AppointmentDao.class).update(a, getUserId());
                target.add(feedback);
                calendarPanel.refresh(target);

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
 Fri Sep 18 13:36:29 2015
@@ -18,15 +18,15 @@
  */
 package org.apache.openmeetings.web.user.calendar;
 
+import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.util.CalendarHelper;
 
 import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
 import com.googlecode.wicket.jquery.ui.calendar.CalendarModel;
@@ -42,7 +42,7 @@ public class AppointmentModel extends Ca
        @Override
        protected List<? extends CalendarEvent> load() {
                List<CalendarEvent> list = new ArrayList<CalendarEvent>();
-               for (Appointment a : 
Application.getBean(AppointmentDao.class).getInRange(getUserId(), 
CalendarHelper.getDate(getStart()), CalendarHelper.getDate(getEnd()))) {
+               for (Appointment a : 
getBean(AppointmentDao.class).getInRange(getUserId(), getDate(getStart()), 
getDate(getEnd()))) {
                        list.add(new OmCalendarEvent(a));
                }
                return list;

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
 Fri Sep 18 13:36:29 2015
@@ -22,6 +22,8 @@ import static org.apache.openmeetings.ut
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getZoneId;
 
 import java.util.Date;
 
@@ -33,7 +35,6 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.UserPanel;
-import org.apache.openmeetings.web.util.CalendarHelper;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.json.JSONArray;
@@ -198,12 +199,12 @@ public class CalendarPanel extends UserP
                                Appointment a = getDefault();
                                LocalDateTime s = start, e = end;
                                if (CalendarView.month == view) {
-                                       LocalDateTime now = 
ZonedDateTime.now(CalendarHelper.getZoneId()).toLocalDateTime();
+                                       LocalDateTime now = 
ZonedDateTime.now(getZoneId()).toLocalDateTime();
                                        s = 
start.withHour(now.getHour()).withMinute(now.getMinute());
                                        e = s.plus(1, ChronoUnit.HOURS);
                                }
-                               a.setStart(CalendarHelper.getDate(s));
-                               a.setEnd(CalendarHelper.getDate(e));
+                               a.setStart(getDate(s));
+                               a.setEnd(getDate(e));
                                dialog.setModelObjectWithAjaxTarget(a, target);
                                
                                dialog.open(target);

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
 Fri Sep 18 13:36:29 2015
@@ -18,8 +18,8 @@
  */
 package org.apache.openmeetings.web.user.calendar;
 
+import static org.apache.openmeetings.web.util.CalendarWebHelper.getDateTime;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
-import org.apache.openmeetings.web.util.CalendarHelper;
 
 import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
 
@@ -28,8 +28,8 @@ public class OmCalendarEvent extends Cal
        
        public OmCalendarEvent(Appointment a) {
                super(a.getId().intValue(), a.getTitle(), null);
-               setStart(CalendarHelper.getDateTime(a.getStart()));
-               setEnd(CalendarHelper.getDateTime(a.getEnd()));
+               setStart(getDateTime(a.getStart()));
+               setEnd(getDateTime(a.getEnd()));
                setEditable(AppointmentDialog.isOwner(a));
                setAllDay(false);
        }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java?rev=1703846&r1=1703845&r2=1703846&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
 Fri Sep 18 13:36:29 2015
@@ -46,9 +46,10 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.user.PrivateMessage;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.util.CalendarHelper;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.common.OmDateTimePicker;
-import org.apache.openmeetings.web.util.CalendarHelper;
+import org.apache.openmeetings.web.util.CalendarWebHelper;
 import org.apache.openmeetings.web.util.RoomTypeDropDown;
 import org.apache.openmeetings.web.util.UserMultiChoice;
 import org.apache.wicket.ajax.AjaxEventBehavior;
@@ -178,6 +179,8 @@ public class MessageDialog extends Abstr
        protected void onSubmit(AjaxRequestTarget target) {
                PrivateMessage p = getModelObject();
                p.setInserted(new Date());
+               UserDao userDao = getBean(UserDao.class); 
+               User owner = userDao.get(getUserId());
                if (p.isBookedRoom()) {
                        Room r = p.getRoom();
                        r.setName(p.getSubject());
@@ -191,8 +194,8 @@ public class MessageDialog extends Abstr
                        a.setTitle(p.getSubject());
                        a.setDescription(p.getMessage());
                        a.setRoom(r);
-                       
a.setStart(CalendarHelper.getDate(start.getModelObject()));
-                       a.setEnd(CalendarHelper.getDate(end.getModelObject()));
+                       
a.setStart(CalendarWebHelper.getDate(start.getModelObject()));
+                       
a.setEnd(CalendarWebHelper.getDate(end.getModelObject()));
                        List<MeetingMember> attendees = new ArrayList<>();
                        for (User to : modelTo.getObject()) {
                        MeetingMember mm = new MeetingMember();
@@ -203,7 +206,7 @@ public class MessageDialog extends Abstr
                        mm.setAppointment(a);
                        attendees.add(mm);
                        }
-                       a.setOwner(getBean(UserDao.class).get(getUserId()));
+                       a.setOwner(owner);
                        a.setMeetingMembers(attendees);
                getBean(AppointmentDao.class).update(a, getUserId(), false);
                        p.setRoom(r);
@@ -212,7 +215,6 @@ public class MessageDialog extends Abstr
                }
                PrivateMessageDao msgDao = getBean(PrivateMessageDao.class);
                for (User to : modelTo.getObject()) {
-                       UserDao userDao = getBean(UserDao.class); 
                        if (to.getId() == null) {
                                userDao.update(to, getUserId());
                        }
@@ -228,13 +230,13 @@ public class MessageDialog extends Abstr
                        msgDao.update(p, getUserId());
                        if (to.getAddress() != null) {
                                String aLinkHTML =      (isPrivate && 
to.getType() == Type.user) ? "<br/><br/>" + "<a href='" + getContactsLink() + 
"'>"
-                                                       + 
Application.getString(1302) + "</a><br/>" : "";
+                                                       + 
Application.getString(1302, to.getLanguageId()) + "</a><br/>" : "";
                                String invitation_link = "";
                                if (p.isBookedRoom()) {
                                        Invitation i = 
getBean(IInvitationManager.class).getInvitation(to, p.getRoom(),
-                                                       false, null, 
Valid.Period
-                                                       , 
userDao.get(getUserId()), userDao.get(getUserId()).getLanguageId(),
-                                                       
CalendarHelper.getDate(start.getModelObject()), 
CalendarHelper.getDate(end.getModelObject()), null);
+                                                       false, null, 
Valid.Period, owner, to.getLanguageId()
+                                                       , 
CalendarHelper.getDate(start.getModelObject(), to.getTimeZoneId())
+                                                       , 
CalendarHelper.getDate(end.getModelObject(), to.getTimeZoneId()), null);
                                        
                                        invitation_link = 
getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i);
 
@@ -242,15 +244,15 @@ public class MessageDialog extends Abstr
                                                invitation_link = "";
                                        } else {
                                                invitation_link = "<br/>" //
-                                                               + 
Application.getString(503)
+                                                               + 
Application.getString(503, to.getLanguageId())
                                                                + "<br/><a 
href='" + invitation_link
                                                                + "'>"
-                                                               + 
Application.getString(504) + "</a><br/>";
+                                                               + 
Application.getString(504, to.getLanguageId()) + "</a><br/>";
                                        }
                                }
                                
                                
getBean(MailHandler.class).send(to.getAddress().getEmail(),
-                                               Application.getString(1301) + 
p.getSubject(),
+                                               Application.getString(1301, 
to.getLanguageId()) + p.getSubject(),
                                                (p.getMessage() == null ? "" : 
p.getMessage().replaceAll("\\<.*?>", "")) + aLinkHTML + invitation_link);
                        }
                }

Added: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CalendarWebHelper.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CalendarWebHelper.java?rev=1703846&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CalendarWebHelper.java
 (added)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CalendarWebHelper.java
 Fri Sep 18 13:36:29 2015
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.web.app.WebSession.getUserTimeZone;
+
+import java.util.Date;
+
+import org.apache.openmeetings.util.CalendarHelper;
+import org.threeten.bp.LocalDate;
+import org.threeten.bp.LocalDateTime;
+import org.threeten.bp.ZoneId;
+
+public class CalendarWebHelper extends CalendarHelper {
+       public static ZoneId getZoneId() {
+               return getZoneId(getUserTimeZone().getID());
+       }
+       
+       public static Date getDate(LocalDateTime d) {
+               return getDate(d, getUserTimeZone().getID());
+       }
+       
+       public static Date getDate(LocalDate d) {
+               return getDate(d, getUserTimeZone().getID());
+       }
+       
+       public static LocalDateTime getDateTime(Date d) {
+               return getDateTime(d, getUserTimeZone().getID());
+       }
+}


Reply via email to