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; } }
