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/08/12 12:16:27 UTC

svn commit: r1695467 [2/4] - in /openmeetings/trunk/singlewebapp: openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/ openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ openmeetings-db/src/main/java/org/apach...

Modified: openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java?rev=1695467&r1=1695466&r2=1695467&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java Wed Aug 12 10:16:26 2015
@@ -439,20 +439,15 @@ public class UserManager implements IUse
 					if (rcl.getRoomId() != null) {
 						scopeName = rcl.getRoomId().toString();
 					}
-					IScope currentScope = scopeApplicationAdapter
-							.getRoomScope(scopeName);
+					IScope currentScope = scopeApplicationAdapter.getRoomScope(scopeName);
 					scopeApplicationAdapter.roomLeaveByScope(rcl, currentScope, true);
 
 					HashMap<Integer, String> messageObj = new HashMap<Integer, String>();
 					messageObj.put(0, "kick");
-					scopeApplicationAdapter.sendMessageById(messageObj,
-							rcl.getStreamid(), currentScope);
-
+					scopeApplicationAdapter.sendMessageById(messageObj, rcl.getStreamid(), currentScope);
 				}
-
 				return true;
 			}
-
 		} catch (Exception err) {
 			log.error("[kickUserByStreamId]", err);
 		}

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UserPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UserPanel.java?rev=1695467&r1=1695466&r2=1695467&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UserPanel.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UserPanel.java Wed Aug 12 10:16:26 2015
@@ -24,7 +24,6 @@ import static org.apache.openmeetings.we
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.openmeetings.db.dao.room.IRoomManager;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.web.app.Application;
@@ -45,8 +44,8 @@ public abstract class UserPanel extends
 	
 	public static List<Room> getMyRooms() {
 		List<Room> result = new ArrayList<Room>();
-		result.add(getBean(IRoomManager.class).getRoomByOwnerAndTypeId(getUserId(), 1L, Application.getString(1306L)));
-		result.add(getBean(IRoomManager.class).getRoomByOwnerAndTypeId(getUserId(), 3L, Application.getString(1307L)));
+		result.add(getBean(RoomDao.class).getUserRoom(getUserId(), 1L, Application.getString(1306L)));
+		result.add(getBean(RoomDao.class).getUserRoom(getUserId(), 3L, Application.getString(1307L)));
 		result.addAll(getBean(RoomDao.class).getAppointedRoomsByUser(getUserId()));
 		return result;
 	}

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=1695467&r1=1695466&r2=1695467&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 Wed Aug 12 10:16:26 2015
@@ -32,7 +32,7 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypeDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
@@ -360,7 +360,7 @@ public class AppointmentDialog extends A
 		}
 		
 		private List<AppointmentReminderType> getRemindTypes() {
-			return getBean(AppointmentReminderTypDao.class).get();
+			return getBean(AppointmentReminderTypeDao.class).get();
 		}
 		
 		private List<Room> getRoomList() {

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=1695467&r1=1695466&r2=1695467&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 Wed Aug 12 10:16:26 2015
@@ -27,7 +27,7 @@ import java.util.Date;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypeDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.web.app.Application;
@@ -84,8 +84,8 @@ public class CalendarPanel extends UserP
 		return getBean(AppointmentDao.class);
 	}
 	
-	private AppointmentReminderTypDao getAppointmentReminderTypDao() {
-		return getBean(AppointmentReminderTypDao.class);
+	private AppointmentReminderTypeDao getReminderTypeDao() {
+		return getBean(AppointmentReminderTypeDao.class);
 	}
 	
 	public void refresh(IPartialPageRequestHandler handler) {
@@ -265,7 +265,7 @@ public class CalendarPanel extends UserP
 	
 	private Appointment getDefault() {
 		Appointment a = new Appointment();
-		a.setRemind(getAppointmentReminderTypDao().get(3L)); //TODO: Make configurable
+		a.setRemind(getReminderTypeDao().get(3L)); //TODO: Make configurable
 		a.setOwner(getBean(UserDao.class).get(getUserId()));
 		a.setTitle(Application.getString(1444));
 		log.debug(" -- getDefault -- Current model " + a);

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1695467&r1=1695466&r2=1695467&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Wed Aug 12 10:16:26 2015
@@ -193,7 +193,7 @@
 	<!-- End of Services -->
 
 	<!-- Interface Transactional -->
-	<bean id="appointmentReminderTypDaoImpl" class="org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao" />
+	<bean id="appointmentReminderTypeDaoImpl" class="org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypeDao" />
 	<bean id="appointmentCategoryDaoImpl" class="org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao" />
 	<bean id="roommanagement" class="org.apache.openmeetings.core.data.conference.RoomManager" />
 	<bean id="roomDao" class="org.apache.openmeetings.db.dao.room.RoomDao"/>
@@ -267,32 +267,35 @@
 	</bean>
 
 	<!-- Axis2 Service Proxy's -->
-	<bean id="userWebService" class="org.apache.openmeetings.webservice.UserWebService" />
+	<bean id="calendarWebService" class="org.apache.openmeetings.webservice.CalendarWebService" />
 	<bean id="errorWebService" class="org.apache.openmeetings.webservice.ErrorWebService" />
+	<bean id="fileWebService" class="org.apache.openmeetings.webservice.FileWebService" />
 	<bean id="groupWebService" class="org.apache.openmeetings.webservice.GroupWebService" />
+	<bean id="recordWebService" class="org.apache.openmeetings.webservice.RecordingWebService" />
+	<bean id="roomWebService" class="org.apache.openmeetings.webservice.RoomWebService" />
+	<bean id="roomTypeWebService" class="org.apache.openmeetings.webservice.RoomTypeWebService" />
 	<bean id="roomWebService" class="org.apache.openmeetings.webservice.RoomWebService" />
-	<bean id="fileWebService" class="org.apache.openmeetings.webservice.FileWebService" />
-	<bean id="calendarWebService" class="org.apache.openmeetings.webservice.CalendarWebService" />
-	<bean id="jabberWebService" class="org.apache.openmeetings.webservice.JabberWebService" />
 	<bean id="serverWebService" class="org.apache.openmeetings.webservice.ServerWebService" />
+	<bean id="userWebService" class="org.apache.openmeetings.webservice.UserWebService" />
 	
 	<!-- (writeXsiType=false) -->
 	<jaxrs:server id="server" address="/">
 		<jaxrs:serviceBeans>
-			<ref bean="userWebService"/>
+			<ref bean="calendarWebService"/>
 			<ref bean="errorWebService"/>
+			<ref bean="fileWebService"/>
 			<ref bean="groupWebService"/>
+			<ref bean="recordWebService"/>
+			<ref bean="roomTypeWebService"/>
 			<ref bean="roomWebService"/>
-			<ref bean="fileWebService"/>
-			<ref bean="calendarWebService"/>
-			<ref bean="jabberWebService"/>
 			<ref bean="serverWebService"/>
+			<ref bean="userWebService"/>
 		</jaxrs:serviceBeans>
 	</jaxrs:server>
-	<jaxws:endpoint id="userServiceWS" address="/UserService"
-		implementor="#userWebService" 
-		endpointName="UserServiceEndpoint"
-		serviceName="UserService"
+	<jaxws:endpoint id="calendarServiceWS" address="/CalendarService"
+		implementor="#calendarWebService" 
+		endpointName="CalendarServiceEndpoint"
+		serviceName="CalendarService"
 		/>
 	<jaxws:endpoint id="errorServiceWS" address="/ErrorService"
 		implementor="#errorWebService" 
@@ -304,29 +307,34 @@
 		endpointName="GroupServiceEndpoint"
 		serviceName="GroupService"
 		/>
-	<jaxws:endpoint id="roomServiceWS" address="/RoomService"
-		implementor="#roomWebService" 
-		endpointName="RoomServiceEndpoint"
-		serviceName="RoomService"
-		/>
 	<jaxws:endpoint id="fileServiceWS" address="/FileService"
 		implementor="#fileWebService" 
 		endpointName="FileServiceEndpoint"
 		serviceName="FileService"
 		/>
-	<jaxws:endpoint id="calendarServiceWS" address="/CalendarService"
-		implementor="#calendarWebService" 
-		endpointName="CalendarServiceEndpoint"
-		serviceName="CalendarService"
+	<jaxws:endpoint id="recordServiceWS" address="/RecordService"
+		implementor="#recordWebService" 
+		endpointName="RecordServiceEndpoint"
+		serviceName="RecordService"
+		/>
+	<jaxws:endpoint id="roomTypeServiceWS" address="/RoomTypeService"
+		implementor="#roomTypeWebService" 
+		endpointName="RoomTypeServiceEndpoint"
+		serviceName="RoomTypeService"
 		/>
-	<jaxws:endpoint id="jabberServiceWS" address="/JabberService"
-		implementor="#jabberWebService" 
-		endpointName="JabberServiceEndpoint"
-		serviceName="JabberService"
+	<jaxws:endpoint id="roomServiceWS" address="/RoomService"
+		implementor="#roomWebService" 
+		endpointName="RoomServiceEndpoint"
+		serviceName="RoomService"
 		/>
 	<jaxws:endpoint id="serverServiceWS" address="/ServerService"
 		implementor="#serverWebService" 
 		endpointName="ServerServiceEndpoint"
 		serviceName="ServerService"
 		/>
+	<jaxws:endpoint id="userServiceWS" address="/UserService"
+		implementor="#userWebService" 
+		endpointName="UserServiceEndpoint"
+		serviceName="UserService"
+		/>
 </beans>

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java?rev=1695467&r1=1695466&r2=1695467&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java Wed Aug 12 10:16:26 2015
@@ -26,7 +26,7 @@ import java.util.List;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypeDao;
 import org.apache.openmeetings.db.dao.room.RoomTypeDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
@@ -53,7 +53,7 @@ public abstract class AbstractJUnitDefau
 	@Autowired
 	private AppointmentDao appointmentDao;
 	@Autowired
-	private AppointmentReminderTypDao reminderTypeDao;
+	private AppointmentReminderTypeDao reminderTypeDao;
 	@Autowired
 	private RoomTypeDao roomTypeDao;
 	@Autowired

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java?rev=1695467&r1=1695466&r2=1695467&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java Wed Aug 12 10:16:26 2015
@@ -71,10 +71,6 @@ public class TestDatabaseStructureAppoin
 			for (Iterator<Appointment> iter = listAppoints.iterator();iter.hasNext();) {
 				log.debug(""+iter.next());
 			}
-			
-			//AppointmentDaoImpl.getInstance().updateAppointment(1L,"neu", "erster Test",Calendar.getInstance().getTime() , 
-					//Calendar.getInstance().getTime(), true, false, false, false, new Long(1));
-			//log.debug("AppointmentReminderTypDaoImpl: "+appointmentReminderTypDaoImpl.getAppointmentReminderTypById(1L));
 		} catch (Exception err) {
 
 			log.error("[testAddingGroup]",err);

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointmentReminderTyp.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointmentReminderTyp.java?rev=1695467&r1=1695466&r2=1695467&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointmentReminderTyp.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointmentReminderTyp.java Wed Aug 12 10:16:26 2015
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.ut
 import java.util.Calendar;
 import java.util.List;
 
-import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypeDao;
 import org.apache.openmeetings.db.entity.calendar.AppointmentReminderType;
 import org.apache.openmeetings.test.AbstractJUnitDefaults;
 import org.junit.Test;
@@ -35,7 +35,7 @@ public class TestDatabaseStructureAppoin
 	private static final Logger log = Red5LoggerFactory.getLogger(TestDatabaseStructureAppointmentReminderTyp.class, webAppRootKey);
 
 	@Autowired
-	private AppointmentReminderTypDao reminderTypeDao;
+	private AppointmentReminderTypeDao reminderTypeDao;
 
 	@Test
 	public void testAddingGroup() {

Modified: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java?rev=1695467&r1=1695466&r2=1695467&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java Wed Aug 12 10:16:26 2015
@@ -26,16 +26,21 @@ import java.util.Date;
 import java.util.List;
 import java.util.Set;
 
+import javax.jws.WebParam;
 import javax.jws.WebService;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
 import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.core.data.conference.RoomManager;
 import org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
-import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypeDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.room.RoomTypeDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
@@ -50,6 +55,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.db.util.TimezoneUtil;
 import org.apache.openmeetings.service.calendar.AppointmentLogic;
+import org.apache.openmeetings.util.CalendarPatterns;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -74,7 +80,7 @@ public class CalendarWebService {
 	@Autowired
 	private AppointmentLogic appointmentLogic;
 	@Autowired
-	private SessiondataDao sessiondataDao;
+	private SessiondataDao sessionDao;
 	@Autowired
 	private UserDao userDao;
 	@Autowired
@@ -84,90 +90,104 @@ public class CalendarWebService {
 	@Autowired
 	private AppointmentCategoryDao appointmentCategoryDao;
 	@Autowired
-	private AppointmentReminderTypDao appointmentReminderTypDao;
+	private AppointmentReminderTypeDao reminderTypeDao;
 	@Autowired
 	private TimezoneUtil timezoneUtil;
 	@Autowired
 	private RoomTypeDao roomTypeDao;
 
-	private List<AppointmentDTO> getAppointments(List<Appointment> list) {
-		List<AppointmentDTO> result = new ArrayList<>(list.size());
-		for (Appointment a : list) {
-			result.add(new AppointmentDTO(a));
-		}
-		return result;
-	}
-	
 	/**
 	 * Load appointments by a start / end range for the current SID
 	 * 
-	 * @param SID
+	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
-	 * @param starttime
-	 *            start time, yyyy-mm-dd
-	 * @param endtime
-	 *            end time, yyyy-mm-dd
+	 * @param start
+	 *            start time
+	 * @param end
+	 *            end time
 	 *            
 	 * @return - list of appointments in range
 	 */
-	public List<AppointmentDTO> getAppointmentByRange(String SID, Calendar starttime, Calendar endtime) {
-		log.debug("getAppointmentByRange : startdate - " + starttime.getTime() + ", enddate - " + endtime.getTime());
+	@GET
+	@Path("/{start}/{end}")
+	public List<AppointmentDTO> range(@QueryParam("sid") @WebParam String sid, @PathParam("start") @WebParam Calendar start, @PathParam("end") @WebParam Calendar end) throws ServiceException {
+		log.debug("range : startdate - " + start.getTime() + ", enddate - " + end.getTime());
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(sid);
 			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-				return getAppointments(appointmentDao.getAppointmentsByRange(userId, starttime.getTime(), endtime.getTime()));
+				return AppointmentDTO.list(appointmentDao.getAppointmentsByRange(userId, start.getTime(), end.getTime()));
+			} else {
+				throw new ServiceException("Insufficient permissins"); //TODO code -26
 			}
+		} catch (ServiceException err) {
+			throw err;
 		} catch (Exception err) {
-			log.error("[getAppointmentByRange]", err);
+			log.error("[range]", err);
+			throw new ServiceException(err.getMessage());
 		}
-		return null;
 	}
 
 	/**
 	 * Load appointments by a start / end range for the userId
 	 * 
-	 * @param SID
+	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
-	 * @param userId
+	 * @param userid
 	 *            the userId the calendar events should be loaded
-	 * @param starttime
-	 *            start time, yyyy-mm-dd
-	 * @param endtime
-	 *            end time, yyyy-mm-dd
+	 * @param start
+	 *            start time
+	 * @param end
+	 *            end time
 	 *            
 	 * @return - list of appointments in range
 	 */
-	public List<AppointmentDTO> getAppointmentByRangeForUserId(String SID, long userId, Calendar starttime, Calendar endtime) {
-		log.debug("getAppointmentByRangeForUserId : startdate - " + starttime.getTime() + ", enddate - " + endtime.getTime());
+	@GET
+	@Path("/{userid}/{start}/{end}")
+	public List<AppointmentDTO> rangeForUser(
+			@QueryParam("sid") @WebParam String sid
+			, @PathParam("userid") @WebParam long userid
+			, @PathParam("start") @WebParam Calendar start
+			, @PathParam("end") @WebParam Calendar end) throws ServiceException
+	{
+		log.debug("rangeForUser : startdate - " + start.getTime() + ", enddate - " + end.getTime());
 		try {
-			Long authUserId = sessiondataDao.checkSession(SID);
+			Long authUserId = sessionDao.checkSession(sid);
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-				return getAppointments(appointmentDao.getAppointmentsByRange(userId, starttime.getTime(), endtime.getTime()));
+				return AppointmentDTO.list(appointmentDao.getAppointmentsByRange(userid, start.getTime(), end.getTime()));
+			} else {
+				throw new ServiceException("Insufficient permissins"); //TODO code -26
 			}
+		} catch (ServiceException err) {
+			throw err;
 		} catch (Exception err) {
-			log.error("[getAppointmentByRangeForUserId]", err);
+			log.error("[rangeForUser]", err);
+			throw new ServiceException(err.getMessage());
 		}
-		return null;
 	}
 
 	/**
 	 * Get the next Calendar event for the current user of the SID
 	 * 
-	 * @param SID
+	 * @param sid
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @return - next Calendar event
 	 */
-	public AppointmentDTO getNextAppointment(String SID) {
+	@GET
+	@Path("/next")
+	public AppointmentDTO next(@QueryParam("sid") @WebParam String sid) throws ServiceException {
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(sid);
 			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
 				return new AppointmentDTO(appointmentDao.getNextAppointment(userId, new Date()));
+			} else {
+				throw new ServiceException("Insufficient permissins"); //TODO code -26
 			}
+		} catch (ServiceException err) {
+			throw err;
 		} catch (Exception err) {
-			log.error("[getNextAppointmentById]", err);
+			log.error("[next]", err);
+			throw new ServiceException(err.getMessage());
 		}
-		return null;
-
 	}
 
 	/**
@@ -178,158 +198,115 @@ public class CalendarWebService {
 	 *            
 	 * @return - next Calendar event
 	 */
-	public AppointmentDTO getNextAppointmentForUserId(String SID, long userId) {
+	@GET
+	@Path("/next/{userid}")
+	public AppointmentDTO nextForUser(@QueryParam("sid") @WebParam String sid, @PathParam("userid") @WebParam long userid) throws ServiceException {
 		try {
-			Long authUserId = sessiondataDao.checkSession(SID);
+			Long authUserId = sessionDao.checkSession(sid);
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-				return new AppointmentDTO(appointmentDao.getNextAppointment(userId, new Date()));
+				return new AppointmentDTO(appointmentDao.getNextAppointment(userid, new Date()));
+			} else {
+				throw new ServiceException("Insufficient permissins"); //TODO code -26
 			}
+		} catch (ServiceException err) {
+			throw err;
 		} catch (Exception err) {
-			log.error("[getNextAppointmentById]", err);
+			log.error("[nextForUser]", err);
+			throw new ServiceException(err.getMessage());
 		}
-		return null;
-
 	}
 
 	/**
-	 * Search a calendar event for the current SID
+	 * 
+	 * Load a calendar event by its room id
 	 * 
 	 * @param SID
-	 *            The SID of the User. This SID must be marked as Loggedin
-	 * @param appointmentName
-	 *            the search string
-	 *            
-	 * @return - calendar event list
+	 * @param roomId
+	 * @return - calendar event by its room id
 	 */
-	public List<AppointmentDTO> searchAppointmentByTitle(String SID, String appointmentName) {
+	@GET
+	@Path("/room/{roomid}")
+	public AppointmentDTO getByRoom(@QueryParam("sid") @WebParam String sid, @PathParam("roomid") @WebParam long roomid) throws ServiceException {
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(sid);
 			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-				return getAppointments(appointmentDao.searchAppointmentsByTitle(userId, appointmentName));
+				Appointment app = appointmentDao.getAppointmentByOwnerRoom(userId, roomid);
+				if (app != null) {
+					return new AppointmentDTO(app);
+				}
+			} else {
+				throw new ServiceException("Insufficient permissins"); //TODO code -26
 			}
+		} catch (ServiceException err) {
+			throw err;
 		} catch (Exception err) {
-			log.error("[searchAppointmentByName]", err);
+			log.error("[getByRoom]", err);
+			throw new ServiceException(err.getMessage());
 		}
 		return null;
-
 	}
 
 	/**
-	 * Save an appointment
+	 * Search a calendar event for the current SID
 	 * 
 	 * @param SID
 	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param appointmentName
-	 *            name of the calendar event
-	 * @param appointmentLocation
-	 *            location info text of the calendar event
-	 * @param appointmentDescription
-	 *            description test of the calendar event
-	 * @param appointmentstart
-	 *            start as Date yyyy-mm-ddThh:mm:ss
-	 * @param appointmentend
-	 *            end as Date yyyy-mm-ddThh:mm:ss
-	 * @param isDaily
-	 *            if the calendar event should be repeated daily (not
-	 *            implemented)
-	 * @param isWeekly
-	 *            if the calendar event should be repeated weekly (not
-	 *            implemented)
-	 * @param isMonthly
-	 *            if the calendar event should be repeated monthly (not
-	 *            implemented)
-	 * @param isYearly
-	 *            if the calendar event should be repeated yearly (not
-	 *            implemented)
-	 * @param categoryId
-	 *            the category id of the calendar event
-	 * @param remind
-	 *            the reminder type of the calendar event
-	 * @param mmClient
-	 *            List of clients, comma separated string, <br/>
-	 *            sample: '1,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'
-	 *            to add multiple clients you can use the same GET parameter in
-	 *            the URL multiple times, for example:
-	 *            &amp;mmClient='1,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'&amp;mmClient='2,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'
-	 *             (Please NOTE mmClient value is enclosed in single quotes)
-	 * @param roomType
-	 *            the room type for the calendar event
-	 * @param languageId
-	 *            the language id of the calendar event, notification emails
-	 *            will be send in this language
-	 * @param isPasswordProtected
-	 *            if the room is password protected
-	 * @param password
-	 *            the password for the room
+	 *            the search string
 	 *            
-	 * @return - id of appointment saved
+	 * @return - calendar event list
 	 */
-	public Long saveAppointment(String SID, String appointmentName,
-			String appointmentLocation, String appointmentDescription,
-			Calendar appointmentstart, Calendar appointmentend,
-			Boolean isDaily, Boolean isWeekly, Boolean isMonthly,
-			Boolean isYearly, Long categoryId, Long remind, String[] mmClient,
-			Long roomType, Long languageId,
-			Boolean isPasswordProtected, String password, long roomId) {
-		//Seems to be create
-		log.debug("saveAppointMent SID:" + SID);
-
+	@GET
+	@Path("/title/{title}")
+	public List<AppointmentDTO> getByTitle(@QueryParam("sid") @WebParam String sid, @PathParam("title") @WebParam String title) throws ServiceException {
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
-			log.debug("saveAppointMent userId:" + userId);
-
+			Long userId = sessionDao.checkSession(sid);
 			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-				Appointment a = appointmentLogic.getAppointment(appointmentName, appointmentLocation, appointmentDescription,
-						appointmentstart, appointmentend, isDaily, isWeekly, isMonthly, isYearly, categoryId, remind,
-						mmClient, roomType, languageId, isPasswordProtected, password, roomId, userId);
-				return appointmentDao.update(a, userId).getId();
+				return AppointmentDTO.list(appointmentDao.searchAppointmentsByTitle(userId, title));
 			} else {
-				log.error("saveAppointment : wrong user level");
+				throw new ServiceException("Insufficient permissins"); //TODO code -26
 			}
+		} catch (ServiceException err) {
+			throw err;
 		} catch (Exception err) {
-			log.error("[saveAppointment]", err);
+			log.error("[getByTitle]", err);
+			throw new ServiceException(err.getMessage());
 		}
-		return null;
-
 	}
 
 	/**
-	 * Update an calendar event time only
+	 * Save an appointment
 	 * 
 	 * @param SID
 	 *            The SID of the User. This SID must be marked as Loggedin
-	 * @param appointmentId
-	 *            the calendar event that should be updated
-	 * @param appointmentstart
-	 *            start yyyy-mm-dd
-	 * @param appointmentend
-	 *            end yyyy-mm-dd
-	 * @param languageId
-	 *            the language id
+	 * @param appointment
+	 *            calendar event 
 	 *            
-	 * @return - id of appointment updated
+	 * @return - appointment saved
 	 */
-	public Long updateAppointmentTimeOnly(String SID, Long appointmentId, Date appointmentstart, Date appointmentend, Long languageId) {
+	@POST
+	@Path("/") //TODO FIXME update is also here for now
+	public AppointmentDTO save(@QueryParam("sid") @WebParam String sid, @QueryParam("appointment") @WebParam AppointmentDTO appointment) throws ServiceException {
+		//Seems to be create
+		log.debug("save SID:" + sid);
+
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
-			Set<Right> rights = userDao.getRights(userId);
-			if (AuthLevelUtil.hasUserLevel(rights)) {
-				Appointment a = appointmentDao.get(appointmentId);
-				if (!AuthLevelUtil.hasAdminLevel(rights) && !a.getOwner().getId().equals(userId)) {
-					throw new ServiceException("The Appointment cannot be updated by the given user");
-				}
-				if (!a.getStart().equals(appointmentstart) || !a.getEnd().equals(appointmentend)) {
-					a.setStart(appointmentstart);
-					a.setEnd(appointmentend);
-					//FIXME this might change the owner!!!!!
-					return appointmentDao.update(a, userId).getId();
-				}					
+			Long userId = sessionDao.checkSession(sid);
+			log.debug("save userId:" + userId);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+				Appointment a = appointment.get(userDao, appointmentDao, reminderTypeDao, roomTypeDao);
+				return new AppointmentDTO(appointmentDao.update(a, userId));
+			} else {
+				log.error("save : wrong user level");
+				throw new ServiceException("Insufficient permissins"); //TODO code -26
 			}
+		} catch (ServiceException err) {
+			throw err;
 		} catch (Exception err) {
-			log.error("[updateAppointment]", err);
+			log.error("[save]", err);
+			throw new ServiceException(err.getMessage());
 		}
-		return null;
-
 	}
 
 	/**
@@ -393,7 +370,7 @@ public class CalendarWebService {
 			Boolean isPasswordProtected, String password) throws ServiceException {
 		try {
 
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 			Set<Right> rights = userDao.getRights(userId);
 
 			if (AuthLevelUtil.hasWebServiceLevel(rights) || AuthLevelUtil.hasAdminLevel(rights)) {
@@ -419,7 +396,7 @@ public class CalendarWebService {
 			a.setIsMonthly(isMonthly);
 			a.setIsYearly(isYearly);
 			a.setCategory(appointmentCategoryDao.get(categoryId));
-			a.setRemind(appointmentReminderTypDao.get(remind));
+			a.setRemind(reminderTypeDao.get(remind));
 			a.getRoom().setComment(appointmentDescription);
 			a.getRoom().setName(appointmentName);
 			a.getRoom().setRoomtype(roomTypeDao.get(roomType));
@@ -459,7 +436,7 @@ public class CalendarWebService {
 	 */
 	public Long deleteAppointment(String SID, Long appointmentId, Long languageId) throws ServiceException {
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 			Set<Right> rights = userDao.getRights(userId);
 
 			Appointment a = appointmentDao.get(appointmentId);
@@ -482,29 +459,6 @@ public class CalendarWebService {
 	}
 
 	/**
-	 * 
-	 * Load a calendar event by its room id
-	 * 
-	 * @param SID
-	 * @param roomId
-	 * @return - calendar event by its room id
-	 */
-	public AppointmentDTO getAppointmentByRoomId(String SID, Long roomId) {
-		try {
-			Long userId = sessiondataDao.checkSession(SID);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-				Appointment appStored = appointmentDao.getAppointmentByOwnerRoom(userId, roomId);
-				if (appStored != null) {
-					return new AppointmentDTO(appStored);
-				}
-			}
-		} catch (Exception err) {
-			log.error("[getAppointmentByRoomId]", err);
-		}
-		return null;
-	}
-
-	/**
 	 * Get all categories of calendar events
 	 * 
 	 * @param SID
@@ -514,7 +468,7 @@ public class CalendarWebService {
 		log.debug("AppointmenetCategoryService.getAppointmentCategoryList SID : " + SID);
 
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 
 			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
 				List<AppointmentCategory> res = appointmentCategoryDao.getAppointmentCategoryList();
@@ -556,9 +510,9 @@ public class CalendarWebService {
 		log.debug("getAppointmentReminderTypList");
 
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-				return getReminders(appointmentReminderTypDao.get());
+				return getReminders(reminderTypeDao.get());
 			} else
 				log.debug("getAppointmentReminderTypList  :error - wrong authlevel!");
 		} catch (Exception err) {
@@ -566,4 +520,228 @@ public class CalendarWebService {
 		}
 		return null;
 	}
+
+	/**
+	 * Adds a conference room that is only available for a period of time
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param name
+	 *            new name of the room
+	 * @param roomtypesId
+	 *            new type of room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            new comment
+	 * @param numberOfPartizipants
+	 *            new numberOfParticipants
+	 * @param ispublic
+	 *            is public
+	 * @param appointment
+	 *            if the room is an appointment
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time? (use false if not sure
+	 *            what that means)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait until a Moderator arrives. Use the
+	 *            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+	 *            to set a user as default Moderator
+	 * @param externalRoomType
+	 *            the external room type (can be used to identify different
+	 *            external systems using same OpenMeetings instance)
+	 * @param validFromDate
+	 *            valid from as Date format: dd.MM.yyyy
+	 * @param validFromTime
+	 *            valid to as time format: mm:hh
+	 * @param validToDate
+	 *            valid to Date format: dd.MM.yyyy
+	 * @param validToTime
+	 *            valid to time format: mm:hh
+	 * @param isPasswordProtected
+	 *            If the links send via EMail to invited people is password
+	 *            protected
+	 * @param password
+	 *            Password for Invitations send via Mail
+	 * @param reminderTypeId
+	 *            1=none, 2=simple mail, 3=ICAL
+	 * @param redirectURL
+	 *            URL Users will be lead to if the Conference Time is elapsed
+	 *            
+	 * @return - id of the room in case of success, error code otherwise
+	 * @throws ServiceException
+	 *//*
+	public Long addRoomWithModerationAndExternalTypeAndStartEnd(String SID,
+			String name, Long roomtypesId, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			String externalRoomType, String validFromDate,
+			String validFromTime, String validToDate, String validToTime,
+			Boolean isPasswordProtected, String password, Long reminderTypeId,
+			String redirectURL) throws ServiceException {
+		try {
+			Long userId = sessionDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+				int validFromHour = Integer.valueOf(validFromTime.substring(0, 2)).intValue();
+				int validFromMinute = Integer.valueOf(validFromTime.substring(3, 5)).intValue();
+
+				int validToHour = Integer.valueOf(validToTime.substring(0, 2)).intValue();
+				int validToMinute = Integer.valueOf(validToTime.substring(3, 5)).intValue();
+
+				log.info("validFromHour: " + validFromHour);
+				log.info("validFromMinute: " + validFromMinute);
+
+				Date fromDate = CalendarPatterns.parseDateBySeparator(validFromDate); // dd.MM.yyyy
+				Date toDate = CalendarPatterns.parseDateBySeparator(validToDate); // dd.MM.yyyy
+
+				if (fromDate == null || toDate == null) {
+					throw new ServiceException("Invalid dates are passed");
+				}
+				Calendar calFrom = Calendar.getInstance();
+				calFrom.setTime(fromDate);
+				calFrom.set(calFrom.get(Calendar.YEAR),
+						calFrom.get(Calendar.MONTH),
+						calFrom.get(Calendar.DATE), validFromHour,
+						validFromMinute, 0);
+
+				Calendar calTo = Calendar.getInstance();
+				calTo.setTime(toDate);
+				calTo.set(calTo.get(Calendar.YEAR), calTo.get(Calendar.MONTH),
+						calTo.get(Calendar.DATE), validToHour, validToMinute, 0);
+
+				Date dFrom = calFrom.getTime();
+				Date dTo = calTo.getTime();
+
+				log.info("validFromDate: " + CalendarPatterns.getDateWithTimeByMiliSeconds(dFrom));
+				log.info("validToDate: " + CalendarPatterns.getDateWithTimeByMiliSeconds(dTo));
+
+				Long roomId = roomManager.addExternalRoom(name,
+						roomtypesId, comment, numberOfPartizipants, ispublic,
+						null, appointment, isDemoRoom, demoTime,
+						isModeratedRoom, null, null, externalRoomType, false, // allowUserQuestions
+						false, // isAudioOnly
+						true,  // allowFontStyles
+						false, // isClosed
+						redirectURL, false, true, false);
+
+				if (roomId <= 0) {
+					return roomId;
+				}
+
+				Appointment a = new Appointment();
+				a.setTitle("appointmentName");
+				a.setOwner(userDao.get(userId));
+				a.setLocation("appointmentLocation");
+				a.setDescription("appointmentDescription");
+				a.setStart(dFrom);
+				a.setEnd(dTo);
+				a.setCategory(appointmentCategoryDao.get(1L));
+				a.setRemind(reminderTypeDao.get(reminderTypeId));
+				a.setRoom(roomDao.get(roomId));
+				a.setPasswordProtected(isPasswordProtected);
+				a.setPassword(password);
+				a.setLanguageId(1L); //TODO check
+				appointmentDao.update(a, userId); //FIXME verify !!!
+
+				return roomId;
+
+			} else {
+				return -2L;
+			}
+		} catch (Exception err) {
+			log.error("[addRoomWithModeration] ", err);
+
+			throw new ServiceException(err.getMessage());
+		}
+		// return new Long(-1);
+		// return numberOfPartizipants;
+	}*/
+
+	/**
+	 * Add a meeting member to a certain room. This is the same as adding an
+	 * external user to a event in the calendar.
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param roomId
+	 *            The Room Id the meeting member is going to be added
+	 * @param firstname
+	 *            The first name of the meeting member
+	 * @param lastname
+	 *            The last name of the meeting member
+	 * @param email
+	 *            The email of the Meeting member
+	 * @param languageId
+	 *            The ID of the language, for the email that is send to the
+	 *            meeting member
+	 *            
+	 * @return - id of the member in case of success, error code otherwise
+	 * @throws ServiceException
+	 */
+	public Long addMeetingMemberRemindToRoom(String SID, Long roomId,
+			String firstname, String lastname, String email, Long languageId) throws ServiceException {
+		return addExternalMeetingMemberRemindToRoom(SID, roomId, firstname, lastname, email, languageId, null, null);
+	}
+
+	/**
+	 * Add a meeting member to a certain room. This is the same as adding an
+	 * external user to a event in the calendar. with a certain time zone
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param roomId
+	 *            The Room Id the meeting member is going to be added
+	 * @param firstname
+	 *            The first name of the meeting member
+	 * @param lastname
+	 *            The last name of the meeting member
+	 * @param email
+	 *            The email of the Meeting member
+	 * @param languageId
+	 *            The ID of the language, for the email that is send to the
+	 *            meeting member
+	 * @param jNameTimeZone
+	 *            name of the timezone
+	 * @param invitorName
+	 *            name of invitation creators
+	 *            
+	 * @return - id of the member in case of success, error code otherwise
+	 * @throws ServiceException
+	 */
+	public Long addExternalMeetingMemberRemindToRoom(String SID, Long roomId,
+			String firstname, String lastname, String email, Long languageId, String jNameTimeZone, String invitorName)
+			throws ServiceException {
+		try {
+			Long userId = sessionDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+				Appointment a = appointmentDao.getAppointmentByRoom(roomId);
+
+				if (email == null || a == null) {
+					return -1L;
+				}
+				for (MeetingMember mm : a.getMeetingMembers()) {
+					if (email.equals(mm.getUser().getAddress().getEmail())) {
+						return mm.getId();
+					}
+				}
+				MeetingMember mm = new MeetingMember();
+				mm.setAppointment(a);
+				mm.setUser(userDao.getContact(email, firstname, lastname, languageId, jNameTimeZone, userId));
+				a.getMeetingMembers().add(mm);
+				appointmentDao.update(a, userId);
+
+				return mm.getId(); //FIXME check to return ID
+			} else {
+				return -2L;
+			}
+		} catch (Exception err) {
+			log.error("[addExternalMeetingMemberRemindToRoom] ", err);
+
+			throw new ServiceException(err.getMessage());
+		}
+	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java?rev=1695467&r1=1695466&r2=1695467&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java Wed Aug 12 10:16:26 2015
@@ -40,10 +40,9 @@ import org.springframework.beans.factory
 
 /**
  * 
- * The Service contains methods to login and create hash to directly enter
- * conference rooms, recordings or the application in general
+ * The Service contains methods to get localized errors
  * 
- * @author sebawagner
+ * @author solomax
  * @webservice ErrorService
  * 
  */

Modified: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java?rev=1695467&r1=1695466&r2=1695467&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java Wed Aug 12 10:16:26 2015
@@ -33,6 +33,8 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomOrganisationDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.OrganisationDao;
 import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
@@ -41,6 +43,8 @@ import org.apache.openmeetings.db.dto.ba
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.user.UserSearchResult;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomOrganisation;
 import org.apache.openmeetings.db.entity.user.Organisation;
 import org.apache.openmeetings.db.entity.user.OrganisationUser;
 import org.apache.openmeetings.db.entity.user.User;
@@ -73,7 +77,11 @@ public class GroupWebService {
 	@Autowired
 	private UserDao userDao;
 	@Autowired
+	private RoomDao roomDao;
+	@Autowired
 	private SessiondataDao sessionDao;
+	@Autowired
+	private RoomOrganisationDao roomOrgDao;
 
 	/**
 	 * add a new organisation
@@ -112,12 +120,12 @@ public class GroupWebService {
 	 * @return - id of the user added, or error id in case of the error
 	 */
 	@POST
-	@Path("/{id}/{userId}")
+	@Path("/{id}/users/add/{userId}")
 	public ServiceResult addUser(
 			@QueryParam("sid") @WebParam String sid
 			, @PathParam("id") @WebParam Long id
 			, @PathParam("userId") @WebParam Long userId
-			)
+			) throws ServiceException
 	{
 		try {
 			Long authUserId = sessionDao.checkSession(sid);
@@ -133,7 +141,54 @@ public class GroupWebService {
 			}
 		} catch (Exception err) {
 			log.error("addUserToOrganisation", err);
-			return new ServiceResult(-1L, err.getMessage(), Type.ERROR);
+			throw new ServiceException(err.getMessage());
+		}
+	}
+
+	/**
+	 * Adds a room to an organization
+	 * 
+	 * @param SID - The SID of the User. This SID must be marked as Loggedin
+	 * @param roomId - Id of room to be added
+	 * @param organisationId - Id of organisation that the room is being paired with
+	 * 
+	 * @return Id of the relation created, null or -1 in case of the error
+	 */
+	@POST
+	@Path("/{id}/rooms/add/{roomId}")
+	public ServiceResult addRoom(
+			@QueryParam("sid") @WebParam String sid
+			, @PathParam("id") @WebParam Long id
+			, @PathParam("roomId") @WebParam Long roomId
+			) throws ServiceException
+	{
+		try {
+			Long userId = sessionDao.checkSession(sid);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+				Room r = roomDao.get(roomId);
+				if (r != null) {
+					if (r.getRoomOrganisations() == null) {
+						r.setRoomOrganisations(new ArrayList<RoomOrganisation>());
+					}
+					boolean found = false;
+					for (RoomOrganisation ro : r.getRoomOrganisations()) {
+						if (ro.getOrganisation().getId().equals(id)) {
+							found = true;
+						}
+					}
+					if (!found) {
+						r.getRoomOrganisations().add(new RoomOrganisation(orgDao.get(id), r));
+						roomDao.update(r, userId);
+						return new ServiceResult(1L, "Success", Type.SUCCESS);
+					}
+				}
+				return new ServiceResult(0L, "Not added", Type.SUCCESS);
+			} else {
+				return new ServiceResult(-26L, "Insufficient permissins", Type.ERROR);
+			}
+		} catch (Exception err) {
+			log.error("[addRoomToOrg]", err);
+			throw new ServiceException(err.getMessage());
 		}
 	}
 
@@ -155,15 +210,15 @@ public class GroupWebService {
 	 * @return - users found
 	 */
 	@GET
-	@Path("/{id}")
-	public UserSearchResult getUsersByOrganisation(
+	@Path("/users/{id}")
+	public UserSearchResult getUsers(
 			@QueryParam("sid") @WebParam String sid
 			, @PathParam("id") @WebParam long id
 			, @QueryParam("start") @WebParam int start
 			, @QueryParam("max") @WebParam int max
 			, @QueryParam("orderby") @WebParam String orderby
 			, @QueryParam("asc") @WebParam boolean asc
-			)
+			) throws ServiceException
 	{
 		try {
 			Long userId = sessionDao.checkSession(sid);
@@ -182,7 +237,7 @@ public class GroupWebService {
 			return new UserSearchResult(result);
 		} catch (Exception err) {
 			log.error("getUsersByOrganisation", err);
+			throw new ServiceException(err.getMessage());
 		}
-		return null;
 	}
 }

Added: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java?rev=1695467&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java (added)
+++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java Wed Aug 12 10:16:26 2015
@@ -0,0 +1,254 @@
+/*
+ * 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.webservice;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.List;
+
+import javax.jws.WebService;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import org.apache.cxf.feature.Features;
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.record.RecordingDTO;
+import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.webservice.error.ServiceException;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * The Service contains methods to work with recordings
+ * 
+ * @author solomax
+ * @webservice RecordingService
+ * 
+ */
+@WebService(name = "RecordingService")
+@Features(features = "org.apache.cxf.feature.LoggingFeature")
+@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+@Path("/record")
+public class RecordingWebService {
+	private static final Logger log = Red5LoggerFactory.getLogger(RecordingWebService.class, webAppRootKey);
+	@Autowired
+	private SessiondataDao sessionDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private FlvRecordingDao recordingDao;
+
+	/**
+	 * Deletes a flv recording
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param flvRecordingId
+	 *            the id of the recording
+	 *            
+	 * @return - true if recording was deleted
+	 * @throws ServiceException
+	 */
+	public boolean deleteFlvRecording(String SID, Long flvRecordingId)
+			throws ServiceException {
+		try {
+
+			Long userId = sessionDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+				return recordingDao.delete(flvRecordingId);
+			}
+
+		} catch (Exception err) {
+			log.error("[deleteFlvRecording] ", err);
+			throw new ServiceException(err.getMessage());
+		}
+
+		return false;
+	}
+
+	/**
+	 * Gets a list of flv recordings
+	 * 
+	 * @param SID The SID of the User. This SID must be marked as Loggedin
+	 * @param externalUserId the externalUserId
+	 * @param externalUsertype the externalUserType
+	 *            
+	 * @return - list of flv recordings
+	 * @throws ServiceException
+	 */
+	public List<RecordingDTO> getFlvRecordingByExternalUserId(String SID,
+			String externalUserId, String externalUserType) throws ServiceException {
+		try {
+			Long userId = sessionDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+				return RecordingDTO.list(recordingDao.getFlvRecordingByExternalUserId(externalUserId, externalUserType));
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getFlvRecordingByExternalUserId] ", err);
+			throw new ServiceException(err.getMessage());
+		}
+	}
+
+	/**
+	 * Gets a list of flv recordings
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param externalRoomType
+	 *            externalRoomType specified when creating the room
+	 * @param insertedBy
+	 *            the userId that created the recording
+	 * @return - list of flv recordings
+	 * @throws ServiceException
+	 */
+	public List<RecordingDTO> getFlvRecordingByExternalRoomTypeAndCreator(
+			String SID, String externalRoomType, Long insertedBy)
+			throws ServiceException {
+		try {
+
+			Long userId = sessionDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+				return RecordingDTO.list(recordingDao.getFlvRecordingByExternalRoomTypeAndCreator(externalRoomType, insertedBy));
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getFlvRecordingByExternalRoomTypeAndCreator] ", err);
+			throw new ServiceException(err.getMessage());
+		}
+	}
+
+	/**
+	 * Gets a list of flv recordings
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param externalRoomType
+	 *            externalRoomType specified when creating the room
+	 * @return - list of flv recordings
+	 * @throws ServiceException
+	 */
+	public List<RecordingDTO> getFlvRecordingByExternalRoomTypeByList(
+			String SID, String externalRoomType) throws ServiceException {
+		try {
+
+			Long userId = sessionDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+				return RecordingDTO.list(recordingDao.getFlvRecordingByExternalRoomType(externalRoomType));
+
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getFlvRecordingByExternalRoomTypeByList] ", err);
+			throw new ServiceException(err.getMessage());
+		}
+	}
+
+	/**
+	 * Gets a list of recordings
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as logged-in
+	 * @param externalType
+	 *            externalType specified when creating room or user
+	 * @return - list of flv recordings
+	 * @throws AxisFault
+	 */
+	public List<RecordingDTO> getRecordingsByExternalType(String SID, String externalType) throws ServiceException {
+		try {
+			Long userId = sessionDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+				return RecordingDTO.list(recordingDao.getRecordingsByExternalType(externalType));
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getRecordingsByExternalType] ", err);
+			throw new ServiceException(err.getMessage());
+		}
+	}
+
+	/**
+	 * Gets a list of flv recordings
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param externalRoomType
+	 *            externalRoomType specified when creating the room
+	 * @return - list of flv recordings
+	 * @throws ServiceException
+	 */
+	public List<RecordingDTO> getFlvRecordingByExternalRoomType(String SID,
+			String externalRoomType) throws ServiceException {
+		try {
+
+			Long userId = sessionDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+				return RecordingDTO.list(recordingDao.getFlvRecordingByExternalRoomType(externalRoomType));
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getFlvRecordingByExternalRoomType] ", err);
+			throw new ServiceException(err.getMessage());
+		}
+	}
+
+	/**
+	 * Get list of recordings
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param roomId
+	 *            the room id
+	 * @return - list of recordings
+	 * @throws ServiceException
+	 */
+	public List<RecordingDTO> getFlvRecordingByRoomId(String SID, Long roomId)
+			throws ServiceException {
+		try {
+
+			Long userId = sessionDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+				return RecordingDTO.list(recordingDao.getFlvRecordingByRoomId(roomId));
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getFlvRecordingByExternalRoomType] ", err);
+			throw new ServiceException(err.getMessage());
+		}
+	}
+
+}

Added: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomTypeWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomTypeWebService.java?rev=1695467&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomTypeWebService.java (added)
+++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomTypeWebService.java Wed Aug 12 10:16:26 2015
@@ -0,0 +1,79 @@
+/*
+ * 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.webservice;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.List;
+
+import javax.jws.WebService;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import org.apache.cxf.feature.Features;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.RoomType;
+import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.webservice.error.ServiceException;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * The Service contains methods to work with room types
+ * 
+ * @author solomax
+ * @webservice RoomTypeService
+ * 
+ */
+@WebService(name = "RoomTypeService")
+@Features(features = "org.apache.cxf.feature.LoggingFeature")
+@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+@Path("/roomtype")
+public class RoomTypeWebService {
+	private static final Logger log = Red5LoggerFactory.getLogger(RoomTypeWebService.class, webAppRootKey);
+
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private SessiondataDao sessionDao;
+	@Autowired
+	private RoomTypeDao roomTypeDao;
+
+	/**
+	 * List of available room types
+	 * 
+	 * @param SID - The SID of the User. This SID must be marked as Loggedin
+	 * @return - List of available room types
+	 * @throws ServiceException
+	 */
+	public List<RoomType> getRoomTypes(String SID) throws ServiceException {
+		log.debug("getRoomTypes");
+		Long userId = sessionDao.checkSession(SID);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+			return roomTypeDao.get();
+		}
+		return null;
+	}
+
+}