Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileUtils.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileUtils.java?rev=1717152&r1=1717151&r2=1717152&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileUtils.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileUtils.java
 Mon Nov 30 02:09:18 2015
@@ -83,24 +83,6 @@ public class FileUtils {
                return 0;
        }
 
-       public void setFileToOwnerOrRoomByParent(FileExplorerItem file, Long 
userId, Long roomId) {
-               try {
-                       file.setOwnerId(userId);
-                       file.setRoomId(roomId);
-
-                       log.debug("calling [2] 
FileExplorerItemDaoImpl.updateFileOrFolder()");
-                       fileExplorerItemDao.update(file);
-
-                       List<FileExplorerItem> childElements = 
fileExplorerItemDao.getByParent(file.getId());
-
-                       for (FileExplorerItem childExplorerItem : 
childElements) {
-                               setFileToOwnerOrRoomByParent(childExplorerItem, 
userId, roomId);
-                       }
-               } catch (Exception err) {
-                       log.error("[setFileToOwnerOrRoomByParent] ", err);
-               }
-       }
-
        public String formatDate(Date date) {
                SimpleDateFormat formatter;
                String pattern = "dd/MM/yy H:mm:ss";

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java?rev=1717152&r1=1717151&r2=1717152&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
 Mon Nov 30 02:09:18 2015
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.db.dao.file;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
 import java.util.Date;
 import java.util.List;
 
@@ -28,9 +30,6 @@ import javax.persistence.TypedQuery;
 
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.transaction.annotation.Transactional;
@@ -226,44 +225,46 @@ public class FileExplorerItemDao {
                return f;
        }
 
+       private void updateChilds(FileExplorerItem f) {
+               for (FileExplorerItem child : getByParent(f.getId())) {
+                       child.setOwnerId(f.getOwnerId());
+                       child.setRoomId(f.getRoomId());
+                       update(child);
+                       if (Type.Folder == f.getType()) {
+                               updateChilds(child);
+                       }
+               }
+       }
+
        /**
-        * @param fileId
+        * @param id
         * @param newParentFileExplorerItemId
         * @param isOwner
         */
-       public void moveFile(Long fileId, Long parentId, Long roomId, Boolean 
isOwner, Long ownerId) {
-               log.debug(".moveFile() started");
-               try {
+       public FileExplorerItem move(long id, long parentId, long ownerId, long 
roomId) {
+               log.debug(".move() started");
 
-                       FileExplorerItem fId = get(fileId);
-
-                       fId.setParentId(parentId);
-
-                       if (parentId == 0) {
-                               if (isOwner) {
-                                       // move to personal Folder
-                                       fId.setOwnerId(ownerId);
-                               } else {
-                                       // move to public room folder
-                                       fId.setOwnerId(null);
-                                       fId.setRoomId(roomId);
-                               }
-                       } else {
-                               fId.setOwnerId(null);
-                       }
-
-                       fId.setUpdated(new Date());
+               FileExplorerItem f = get(id);
 
-                       if (fId.getId() == null) {
-                               em.persist(fId);
+               if (parentId < 0) {
+                       if (parentId == -1) {
+                               // move to personal Folder
+                               f.setOwnerId(ownerId);
+                               f.setRoomId(null);
                        } else {
-                               if (!em.contains(fId)) {
-                                       em.merge(fId);
-                               }
+                               // move to public room folder
+                               f.setOwnerId(null);
+                               f.setRoomId(roomId);
                        }
-               } catch (Exception ex2) {
-                       log.error("[updateFileOrFolderName]: ", ex2);
+                       f.setParentId(null);
+               } else {
+                       f.setParentId(parentId);
+                       f.setOwnerId(null);
                }
+               if (Type.Folder == f.getType()) {
+                       updateChilds(f);
+               }
+               return update(f);
        }
 
 }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java?rev=1717152&r1=1717151&r2=1717152&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
 Mon Nov 30 02:09:18 2015
@@ -357,7 +357,7 @@ public class FileWebService {
         *            file or folder id
         * @param name
         *            new file or folder name
-        * @return - null
+        * @return - resulting file object
         * @throws ServiceException
         */
        @WebMethod
@@ -392,51 +392,36 @@ public class FileWebService {
         * 
         * @param sid
         *            SID The SID of the User. This SID must be marked as 
logged in
-        * @param fileId
+        * @param id
         *            current file or folder id to be moved
-        * @param newParentId
+        * @param parentId
         *            new parent folder id
-        * @param roomId
-        *            room id
-        * @param isOwner
-        *            if true owner id will be set
-        * @param moveToHome
-        *            move to private drive
-        * @return - null
+        * @return - resulting file object
         * @throws ServiceException
         */
-       public Long move(String sid, Long fileId, Long newParentId, Long 
roomId, Boolean isOwner,
-                       Boolean moveToHome) throws ServiceException {
-
+       @WebMethod
+       @POST
+       @Path("/move/{roomid}/{id}/{parentid}")
+       public FileExplorerItemDTO move(@WebParam(name="sid") 
@QueryParam("sid") String sid
+                       , @WebParam(name="id") @PathParam("id") long id
+                       , @WebParam(name="roomid") @PathParam("roomid") long 
roomId
+                       , @WebParam(name="parentid") @PathParam("parentid") 
long parentId) throws ServiceException
+       {
                try {
-
                        Long userId = sessionDao.checkSession(sid);
-
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-
-                               // A test is required that checks if the user 
is allowed to move the file
-
-                               log.debug("moveFileSelf " + fileId);
-
-                               fileDao.moveFile(fileId, newParentId, roomId, 
isOwner, userId);
-
-                               FileExplorerItem fileExplorerItem = 
fileDao.get(fileId);
-
-                               if (moveToHome) {
-                                       // set this file and all subfiles and 
folders the ownerId
-                                       
fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, userId, null);
-
-                               } else {
-                                       // set this file and all subfiles and 
folders the roomId
-                                       
fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, null, roomId);
-
-                               }
-
+                               // FIXME TODO A test is required that checks if 
the user is allowed to move the file
+                               log.debug("move " + id);
+                               return new FileExplorerItemDTO(fileDao.move(id, 
parentId, userId, roomId));
+                       } else {
+                               throw new ServiceException("Insufficient 
permissins"); //TODO code -26
                        }
-               } catch (Exception err) {
-                       log.error("[moveFile] ", err);
+               } catch (ServiceException e) {
+                       throw e;
+               } catch (Exception e) {
+                       log.error("[move] ", e);
+                       throw new ServiceException(e.getMessage());
                }
-               return null;
        }
 
 }


Reply via email to