You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2015/09/18 15:36:31 UTC

svn commit: r1703846 - in /openmeetings: branches/3.0.x/src/main/java/org/apache/openmeetings/data/conference/ branches/3.0.x/src/main/java/org/apache/openmeetings/remote/ branches/3.0.x/src/util/java/org/apache/openmeetings/util/ branches/3.0.x/src/we...

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());
+	}
+}