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;


Reply via email to