You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by se...@apache.org on 2013/08/10 05:38:22 UTC

svn commit: r1512557 - in /openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings: axis/services/ data/calendar/management/ data/conference/ persistence/beans/invitation/ remote/ test/invitiation/ utils/math/

Author: sebawagner
Date: Sat Aug 10 03:38:21 2013
New Revision: 1512557

URL: http://svn.apache.org/r1512557
Log:
Fixes OPENMEETINGS-747 Replace OmTimeZone in Invitations Entity with String tz and fix all dependencies

Added:
    openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/test/invitiation/
    openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/test/invitiation/TestInvitation.java
Modified:
    openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/axis/services/JabberWebService.java
    openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/axis/services/RoomWebService.java
    openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
    openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/data/conference/InvitationManager.java
    openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/persistence/beans/invitation/Invitations.java
    openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/remote/InvitationService.java
    openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/remote/UserService.java
    openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/utils/math/TimezoneUtil.java

Modified: openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/axis/services/JabberWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/axis/services/JabberWebService.java?rev=1512557&r1=1512556&r2=1512557&view=diff
==============================================================================
--- openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/axis/services/JabberWebService.java (original)
+++ openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/axis/services/JabberWebService.java Sat Aug 10 03:38:21 2013
@@ -33,6 +33,7 @@ import org.apache.openmeetings.persisten
 import org.apache.openmeetings.persistence.beans.room.RoomOrganisation;
 import org.apache.openmeetings.persistence.beans.user.User;
 import org.apache.openmeetings.remote.ConferenceService;
+import org.apache.openmeetings.utils.math.TimezoneUtil;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -62,6 +63,8 @@ public class JabberWebService {
 	private OmTimeZoneDao omTimeZoneDaoImpl;
 	@Autowired
 	private ConfigurationDao configurationDao;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
 
 	/**
 	 * Get List<Rooms> of all rooms available to the user.
@@ -133,8 +136,8 @@ public class JabberWebService {
 				user_level, username, username, username, username, username,
 				room_id, "", Boolean.valueOf(false), null, Integer.valueOf(3),
 				null, null, users_id, "", Long.valueOf(1L),
-				Boolean.valueOf(false), null, null, null, username
-				, omTimeZoneDaoImpl.getOmTimeZone(configurationDao.getConfValue("default.timezone", String.class, "Europe/Berlin")));
+				Boolean.valueOf(false), null, null, null, username, 
+				timezoneUtil.getDefaultTimeZone());
 
 		return ((invitation == null) ? null : invitation.getHash());
 	}

Modified: openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/axis/services/RoomWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/axis/services/RoomWebService.java?rev=1512557&r1=1512556&r2=1512557&view=diff
==============================================================================
--- openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/axis/services/RoomWebService.java (original)
+++ openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/axis/services/RoomWebService.java Sat Aug 10 03:38:21 2013
@@ -50,6 +50,7 @@ import org.apache.openmeetings.remote.Co
 import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
 import org.apache.openmeetings.session.ISessionManager;
 import org.apache.openmeetings.utils.math.CalendarPatterns;
+import org.apache.openmeetings.utils.math.TimezoneUtil;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -90,6 +91,8 @@ public class RoomWebService {
 	private MeetingMemberLogic meetingMemberLogic;
 	@Autowired
 	private RoomDao roomDao;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
 
 	/**
 	 * Returns an Object of Type RoomsList which contains a list of
@@ -1770,7 +1773,8 @@ public class RoomWebService {
 								username, username, username, room_id, "",
 								isPasswordProtected, invitationpass, valid,
 								dFrom, dTo, users_id, "", 1L, false, dFrom,
-								dTo, null, username, userManager.getUserById(users_id).getOmTimeZone());
+								dTo, null, username, 
+								timezoneUtil.getTimezoneByUser(userManager.getUserById(users_id)));
 
 				if (invitation != null) {
 
@@ -1909,7 +1913,8 @@ public class RoomWebService {
 								baseurl, email, subject, room_id, "",
 								isPasswordProtected, invitationpass, valid,
 								dFrom, dTo, users_id, baseurl, language_id,
-								sendMail, dFrom, dTo, null, username, userManager.getUserById(users_id).getOmTimeZone());
+								sendMail, dFrom, dTo, null, username, 
+								timezoneUtil.getTimezoneByUser(userManager.getUserById(users_id)));
 
 				if (invitation != null) {
 
@@ -2010,7 +2015,8 @@ public class RoomWebService {
 								baseurl, email, subject, room_id, "",
 								isPasswordProtected, invitationpass, valid,
 								dFrom, dTo, users_id, baseurl, language_id,
-								sendMail, dFrom, dTo, null, username, userManager.getUserById(users_id).getOmTimeZone());
+								sendMail, dFrom, dTo, null, username, 
+								timezoneUtil.getTimezoneByUser(userManager.getUserById(users_id)));
 
 				if (invitation != null) {
 

Modified: openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java?rev=1512557&r1=1512556&r2=1512557&view=diff
==============================================================================
--- openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java (original)
+++ openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java Sat Aug 10 03:38:21 2013
@@ -146,7 +146,8 @@ public class MeetingMemberLogic {
 								point.getAppointmentEndtime(),
 								point.getAppointmentId(),
 								invitorName,
-								omTimeZone);
+								timezoneUtil.getTimezoneByInternalJName(omTimeZone.getJname())
+								);
 
 				invitationId = invitation.getInvitations_id();
 

Modified: openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/data/conference/InvitationManager.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/data/conference/InvitationManager.java?rev=1512557&r1=1512556&r2=1512557&view=diff
==============================================================================
--- openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/data/conference/InvitationManager.java (original)
+++ openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/data/conference/InvitationManager.java Sat Aug 10 03:38:21 2013
@@ -38,7 +38,6 @@ import org.apache.openmeetings.data.conf
 import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.data.user.dao.UsersDao;
 import org.apache.openmeetings.persistence.beans.basic.MailMessage;
-import org.apache.openmeetings.persistence.beans.basic.OmTimeZone;
 import org.apache.openmeetings.persistence.beans.calendar.Appointment;
 import org.apache.openmeetings.persistence.beans.calendar.MeetingMember;
 import org.apache.openmeetings.persistence.beans.invitation.Invitations;
@@ -126,7 +125,7 @@ public class InvitationManager {
 			Boolean isPasswordProtected, String invitationpass, Integer valid,
 			Date validFrom, Date validTo, Long createdBy, String baseUrl,
 			Long language_id, Boolean sendMail, Date gmtTimeStart,
-			Date gmtTimeEnd, Long appointmentId, String fromUserField, OmTimeZone omTimeZone) {
+			Date gmtTimeEnd, Long appointmentId, String fromUserField, TimeZone timeZone) {
 		try {
 			if (authLevelUtil.checkUserLevel(user_level)) {
 
@@ -141,7 +140,7 @@ public class InvitationManager {
 				invitation.setInvitationWasUsed(false);
 				log.debug(baseUrl);
 				invitation.setBaseUrl(baseUrl);
-				invitation.setOmTimeZone(omTimeZone);
+				invitation.setTimeZoneId(timeZone.getID());
 
 				// valid period of Invitation
 				if (valid == 1) {
@@ -239,7 +238,7 @@ public class InvitationManager {
 			invitation.setInvitationWasUsed(false);
 			log.debug(baseUrl);
 			invitation.setBaseUrl(baseUrl);
-			invitation.setOmTimeZone(createdBy.getOmTimeZone());
+			invitation.setTimeZoneId(timezoneUtil.getTimezoneByInternalJName(createdBy.getOmTimeZone().getJname()).getID());
 
 			// valid period of Invitation
 			if (valid == 1) {
@@ -1223,14 +1222,12 @@ public class InvitationManager {
 					}
 
 				} else if (invitation.getIsValidByTime()) {
-					OmTimeZone tz = invitation.getOmTimeZone() == null 
-							? omTimeZoneDaoImpl.getOmTimeZone(configurationDao.getConfValue("default.timezone", String.class, "Europe/Berlin"))
-							: invitation.getOmTimeZone();
-					Calendar now = Calendar.getInstance(TimeZone.getTimeZone(tz.getIcal()));
-					Calendar start = Calendar.getInstance(TimeZone.getTimeZone(tz.getIcal()));
+							
+					Calendar now = Calendar.getInstance(timezoneUtil.getTimeZone(invitation.getTimeZoneId()));
+					Calendar start = Calendar.getInstance(timezoneUtil.getTimeZone(invitation.getTimeZoneId()));
 					start.setTime(invitation.getValidFrom());
 
-					Calendar end = Calendar.getInstance(TimeZone.getTimeZone(tz.getIcal()));
+					Calendar end = Calendar.getInstance(timezoneUtil.getTimeZone(invitation.getTimeZoneId()));
 					end.setTime(invitation.getValidTo());
 					if (now.after(start) && now.before(end)) {
 						invitationDao.updateInvitation(invitation);

Modified: openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/persistence/beans/invitation/Invitations.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/persistence/beans/invitation/Invitations.java?rev=1512557&r1=1512556&r2=1512557&view=diff
==============================================================================
--- openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/persistence/beans/invitation/Invitations.java (original)
+++ openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/persistence/beans/invitation/Invitations.java Sat Aug 10 03:38:21 2013
@@ -34,7 +34,6 @@ import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.persistence.beans.basic.OmTimeZone;
 import org.apache.openmeetings.persistence.beans.room.Room;
 import org.apache.openmeetings.persistence.beans.user.User;
 
@@ -125,10 +124,11 @@ public class Invitations implements Seri
 	@Column(name = "baseUrl")
 	private String baseUrl;
 	
-	@ManyToOne(fetch = FetchType.EAGER)
-	@JoinColumn(name = "omtimezoneId", insertable = true, updatable = true)
-	@ForeignKey(enabled = true)
-	private OmTimeZone omTimeZone; // In UTC +/- hours
+	/**
+	 * java.util.TimeZone Id
+	 */
+	@Column(name = "time_zone_id")
+	private String timeZoneId; // 
 	
 	private boolean allowEntry = true;
 
@@ -296,11 +296,12 @@ public class Invitations implements Seri
 		this.allowEntry = allowEntry;
 	}
 
-	public OmTimeZone getOmTimeZone() {
-		return omTimeZone;
+	public String getTimeZoneId() {
+		return timeZoneId;
 	}
 
-	public void setOmTimeZone(OmTimeZone omTimeZone) {
-		this.omTimeZone = omTimeZone;
+	public void setTimeZoneId(String timeZoneId) {
+		this.timeZoneId = timeZoneId;
 	}
+
 }

Modified: openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/remote/InvitationService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/remote/InvitationService.java?rev=1512557&r1=1512556&r2=1512557&view=diff
==============================================================================
--- openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/remote/InvitationService.java (original)
+++ openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/remote/InvitationService.java Sat Aug 10 03:38:21 2013
@@ -29,9 +29,9 @@ import org.apache.openmeetings.data.basi
 import org.apache.openmeetings.data.conference.InvitationManager;
 import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.data.user.dao.UsersDao;
-import org.apache.openmeetings.persistence.beans.basic.OmTimeZone;
 import org.apache.openmeetings.persistence.beans.invitation.Invitations;
 import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.utils.math.TimezoneUtil;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.api.service.IPendingServiceCallback;
@@ -54,6 +54,8 @@ public class InvitationService implement
 	private OmTimeZoneDao omTimeZoneDaoImpl;
 	@Autowired
 	private InvitationManager invitationManager;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
 
 	public void resultReceived(IPendingServiceCall arg0) {
 		// TODO Auto-generated method stub
@@ -108,19 +110,12 @@ public class InvitationService implement
 			Long users_id = sessiondataDao.checkSession(SID);
 			Long user_level = userManager.getUserLevelByID(users_id);
 
-			OmTimeZone omTimeZone = omTimeZoneDaoImpl
-					.getOmTimeZone(jNameTimeZone);
-
-			// If everything fails
-			if (omTimeZone == null) {
-				omTimeZone = omTimeZoneDaoImpl.getOmTimeZone(configurationDao.getConfValue("default.timezone", String.class, "Europe/Berlin"));
-			}
-
 			Calendar date = Calendar.getInstance();
 			date.setTime(validFromDate);
 			
-			String timeZoneName = omTimeZone.getIcal();
-			Calendar calFrom = Calendar.getInstance(TimeZone.getTimeZone(timeZoneName));
+			TimeZone timeZone = timezoneUtil.getTimezoneByInternalJName(jNameTimeZone);
+			
+			Calendar calFrom = Calendar.getInstance(timeZone);
 			calFrom.set(Calendar.YEAR, date.get(Calendar.YEAR));
 			calFrom.set(Calendar.MONTH, date.get(Calendar.MONTH));
 			calFrom.set(Calendar.DAY_OF_MONTH, date.get(Calendar.DAY_OF_MONTH));
@@ -129,7 +124,7 @@ public class InvitationService implement
 			calFrom.set(Calendar.SECOND, 0);
 
 			date.setTime(validToDate);
-			Calendar calTo = Calendar.getInstance(TimeZone.getTimeZone(timeZoneName));
+			Calendar calTo = Calendar.getInstance(timeZone);
 			calTo.set(Calendar.YEAR, date.get(Calendar.YEAR));
 			calTo.set(Calendar.MONTH, date.get(Calendar.MONTH));
 			calTo.set(Calendar.DAY_OF_MONTH, date.get(Calendar.DAY_OF_MONTH));
@@ -145,7 +140,7 @@ public class InvitationService implement
 							email, subject, room_id, conferencedomain,
 							isPasswordProtected, invitationpass, valid, dFrom,
 							dTo, users_id, baseurl, language_id, sendMail,
-							dFrom, dTo, null, username, omTimeZone);
+							dFrom, dTo, null, username, timeZone);
 
 			if (invitation != null) {
 				return invitation;

Modified: openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/remote/UserService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/remote/UserService.java?rev=1512557&r1=1512556&r2=1512557&view=diff
==============================================================================
--- openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/remote/UserService.java (original)
+++ openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/remote/UserService.java Sat Aug 10 03:38:21 2013
@@ -1095,7 +1095,7 @@ public class UserService {
 										appointmentstart, appointmentend,
 										appointmentId, 
 										from.getFirstname() + " " + from.getLastname(),
-										from.getOmTimeZone());
+										timezoneUtil.getTimezoneByUser(from));
 
 						invitation_link = baseURL + "?invitationHash="
 								+ invitation.getHash();

Added: openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/test/invitiation/TestInvitation.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/test/invitiation/TestInvitation.java?rev=1512557&view=auto
==============================================================================
--- openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/test/invitiation/TestInvitation.java (added)
+++ openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/test/invitiation/TestInvitation.java Sat Aug 10 03:38:21 2013
@@ -0,0 +1,42 @@
+package org.apache.openmeetings.test.invitiation;
+
+import java.util.Date;
+
+import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.persistence.beans.basic.Sessiondata;
+import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.remote.InvitationService;
+import org.apache.openmeetings.remote.MainService;
+import org.apache.openmeetings.test.AbstractOpenmeetingsSpringTest;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestInvitation extends AbstractOpenmeetingsSpringTest {
+
+	private static final Logger log = LoggerFactory.getLogger(TestInvitation.class);
+	
+	@Autowired
+	private InvitationService invitationService;
+	@Autowired
+	private MainService mService;
+	@Autowired
+	private UserManager userManager;
+	
+	@Test
+	public void testSendInvitationLink() {
+		try {
+			Sessiondata sessionData = mService.getsessiondata();
+			
+			User us = (User) userManager.loginUser(sessionData.getSession_id(), username, userpass, null, null, false);
+			
+			invitationService.sendInvitationHash(sessionData.getSession_id(), username, "message", "baseurl", "sebawagner@apache.org", 
+					"subject", 1L, "", false, "", 1, new Date(), "12:00", new Date(), "14:00", 1L, us.getOmTimeZone().getJname(), true);
+			
+		} catch (Exception err) {
+			log.error("[testSendInvitationLink]", err);
+		}
+	}
+
+}

Modified: openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/utils/math/TimezoneUtil.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/utils/math/TimezoneUtil.java?rev=1512557&r1=1512556&r2=1512557&view=diff
==============================================================================
--- openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/utils/math/TimezoneUtil.java (original)
+++ openmeetings/branches/OPENMEETINGS-745/src/org/apache/openmeetings/utils/math/TimezoneUtil.java Sat Aug 10 03:38:21 2013
@@ -40,6 +40,54 @@ public class TimezoneUtil {
 	private ConfigurationDao configurationDao;
 	@Autowired
 	private OmTimeZoneDao omTimeZoneDaoImpl;
+	
+	/**
+	 * Parameters:
+	 * ID - the ID for a TimeZone, either an abbreviation such as "PST", a full name such as "America/Los_Angeles", or 
+	 * a custom ID such as "GMT-8:00". Note that the support of abbreviations is for JDK 1.1.x compatibility only and 
+	 * full names should be used.
+	 * 
+	 * Returns:
+	 * the specified TimeZone, or the GMT zone if the given ID cannot be understood.
+	 * <br/>
+	 * <br/>
+	 * TODO: Fall-back mechanism and maybe a log output if the given timeZoneId is not found in the 
+	 * list of available TimeZones of the current java.util.TimeZone package of the Java SDK
+	 * the the user is running
+	 * <br/>
+	 * @param timeZoneId
+	 * @return
+	 */
+	
+	public TimeZone getTimeZone(String timeZoneId) {
+		
+		//see TODO in comments
+		
+		return TimeZone.getTimeZone(timeZoneId);
+	}
+
+	/**
+	 * @return The current server configured time zone in the table
+	 *         configuration key: "default.timezone"
+	 */
+	public TimeZone getDefaultTimeZone() {
+		
+		String defaultTzName = configurationDao.getConfValue("default.timezone", String.class, "Europe/Berlin");
+
+		OmTimeZone omTimeZoneDefault = omTimeZoneDaoImpl.getOmTimeZone(defaultTzName);
+
+		TimeZone timeZoneByOmTimeZone = TimeZone
+				.getTimeZone(omTimeZoneDefault.getIcal());
+
+		if (timeZoneByOmTimeZone != null) {
+			return timeZoneByOmTimeZone;
+		}
+
+		// If everything fails take the servers default one
+		log.error("There is no correct time zone set in the configuration of OpenMeetings for the key default.timezone or key is missing in table, using default locale!");
+		return TimeZone.getDefault();
+		
+	}
 
 	/**
 	 * Returns the timezone based on the user profile, if not return the