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,[email protected],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,[email protected],1,Etc/GMT+1'&amp;mmClient='2,firstname,lastname,[email protected],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;
+       }
+
+}


Reply via email to