Author: solomax
Date: Sat Jun 21 12:28:07 2014
New Revision: 1604341
URL: http://svn.apache.org/r1604341
Log:
[OPENMEETINGS-1029] modifyRoomParameter is fixed
Modified:
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
Modified:
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java?rev=1604341&r1=1604340&r2=1604341&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
Sat Jun 21 12:28:07 2014
@@ -46,10 +46,11 @@ import org.apache.openmeetings.db.dao.re
import org.apache.openmeetings.db.dao.room.IInvitationManager;
import org.apache.openmeetings.db.dao.room.InvitationDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
import org.apache.openmeetings.db.dao.server.ISessionManager;
import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dao.user.IUserManager;
+import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.file.RecordingObject;
import org.apache.openmeetings.db.dto.room.RoomSearchResult;
import org.apache.openmeetings.db.entity.calendar.Appointment;
@@ -120,6 +121,8 @@ public class RoomWebService {
@Autowired
private RoomDao roomDao;
@Autowired
+ private RoomTypeDao roomTypeDao;
+ @Autowired
private TimezoneUtil timezoneUtil;
/**
@@ -2314,22 +2317,38 @@ public class RoomWebService {
/**
* Method to update arbitrary room parameter.
*
- * @param SID The SID of the User. This SID must be marked as Loggedin
+ * @param SID The SID of the User. This SID must be marked as logged in
* @param room_id the room id
- * @param paramName
- * @param paramValue
+ * @param paramName the name of parameter to be updated, please NOTE
rooms_id is not updatable as well as fields of type {@link Date} and {@link
List}
+ * @param paramValue the value to be set, please use "type id" to set
room type
* @return 1 in case of success, -2 if permissions are insufficient
- * @throws ServiceException if any error occurred
+ * @throws AxisFault if any error occurred
*/
- public int modifyRoomParameter(String SID, Long room_id, String
paramName, Object paramValue)
- throws ServiceException {
+ public int modifyRoomParameter(String SID, Long room_id, String
paramName, String paramValue) throws ServiceException {
try {
+ if ("rooms_id".equals(paramName)) {
+ throw new ServiceException("Non modifiable
parameter");
+ }
Long users_id = sessiondataDao.checkSession(SID);
if
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
log.debug(String.format("modifyRoomParameter[%s]: %s = %s", room_id, paramName,
paramValue));
Room r = roomDao.get(room_id);
BeanWrapper rw = new BeanWrapperImpl(r);
- rw.setPropertyValue(paramName, paramValue);
+ Class<?> valueClass =
rw.getPropertyType(paramName);
+ Object val = null;
+ //don't like this code
+ if (valueClass.isAssignableFrom(String.class)) {
+ val = paramValue;
+ } else if
(valueClass.isAssignableFrom(Boolean.class)) {
+ val = Boolean.parseBoolean(paramValue);
+ } else if
(valueClass.isAssignableFrom(RoomType.class)) {
+ val =
roomTypeDao.get(Long.parseLong(paramValue));
+ } else if
(valueClass.isAssignableFrom(Long.class)) {
+ val = Long.parseLong(paramValue);
+ } else if
(valueClass.isAssignableFrom(Integer.class)) {
+ val = Integer.parseInt(paramValue);
+ }
+ rw.setPropertyValue(paramName, val);
roomDao.update(r, users_id);
} else {
return -2;