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