Author: solomax
Date: Wed Nov 25 13:30:08 2015
New Revision: 1716392

URL: http://svn.apache.org/viewvc?rev=1716392&view=rev
Log:
[OPENMEETINGS-1118] file service is improved

Removed:
    
openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FoldersObject.java
    
openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/LiberaryObject.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FoldersObject.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/LiberaryObject.java
Modified:
    
openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
    
openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
    
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java

Modified: 
openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java?rev=1716392&r1=1716391&r2=1716392&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
 Wed Nov 25 13:30:08 2015
@@ -18,46 +18,70 @@
  */
 package org.apache.openmeetings.db.dto.file;
 
+import java.io.Serializable;
 import java.util.List;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 
 /**
  * @author sebastianwagner
  *
  */
-public class FileExplorerObject {
-
-       private List<FileExplorerItem> userHome;
-       private List<FileExplorerItem> roomHome;
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class FileExplorerObject implements Serializable {
+       private static final long serialVersionUID = 1L;
+       
+       private List<FileExplorerItemDTO> userHome;
+       private List<FileExplorerItemDTO> roomHome;
        private Long userHomeSize;
        private Long roomHomeSize;
-       
+
        public FileExplorerObject() {}
-       
-       public List<FileExplorerItem> getUserHome() {
+
+       public List<FileExplorerItemDTO> getUserHome() {
                return userHome;
        }
-       public void setUserHome(List<FileExplorerItem> userHome) {
+
+       public void setUserHome(List<FileExplorerItemDTO> userHome) {
                this.userHome = userHome;
        }
-       public List<FileExplorerItem> getRoomHome() {
+
+       public void setUser(List<FileExplorerItem> list, long size) {
+               this.userHome = FileExplorerItemDTO.list(list);
+               this.userHomeSize = size;
+       }
+
+       public List<FileExplorerItemDTO> getRoomHome() {
                return roomHome;
        }
-       public void setRoomHome(List<FileExplorerItem> roomHome) {
+
+       public void setRoomHome(List<FileExplorerItemDTO> roomHome) {
                this.roomHome = roomHome;
        }
+
+       public void setRoom(List<FileExplorerItem> list, long size) {
+               this.roomHome = FileExplorerItemDTO.list(list);
+               this.roomHomeSize = size;
+       }
+
        public Long getUserHomeSize() {
                return userHomeSize;
        }
+
        public void setUserHomeSize(Long userHomeSize) {
                this.userHomeSize = userHomeSize;
        }
+
        public Long getRoomHomeSize() {
                return roomHomeSize;
        }
+
        public void setRoomHomeSize(Long roomHomeSize) {
                this.roomHomeSize = roomHomeSize;
        }
-       
 }

Modified: 
openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java?rev=1716392&r1=1716391&r2=1716392&view=diff
==============================================================================
--- 
openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
 (original)
+++ 
openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
 Wed Nov 25 13:30:08 2015
@@ -22,6 +22,7 @@ import static org.apache.openmeetings.ut
 
 import java.io.File;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
@@ -29,6 +30,7 @@ import javax.jws.WebMethod;
 import javax.jws.WebParam;
 import javax.jws.WebService;
 import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
@@ -224,11 +226,8 @@ public class FileWebService {
                                }
 
                                return 
LoadLibraryPresentation.parseLibraryFileToObject(file);
-
                        } else {
-
                                throw new ServiceException("not Authenticated");
-
                        }
                } catch (ServiceException e) {
                        throw e;
@@ -238,254 +237,114 @@ public class FileWebService {
                }
        }
 
-       /**
-        * Get a File Explorer Object by a given Room and owner id
-        * 
-        * @param SID
-        *            The SID of the User. This SID must be marked as logged in
-        * @param roomId
-        *            Room id
-        * @param ownerId
-        *            Owner id
-        * @return - File Explorer Object by a given Room and owner id
-        * @throws ServiceException
-        */
-       public FileExplorerObject getFileExplorerByRoom(String SID, Long 
roomId, Long ownerId) throws ServiceException {
-
-               try {
-
-                       Long userId = sessionDao.checkSession(SID);
-
-                       if 
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-                               log.debug("roomId " + roomId);
-
-                               FileExplorerObject fileExplorerObject = new 
FileExplorerObject();
-
-                               // Home File List
-                               List<FileExplorerItem> fList = 
fileDao.getByOwner(ownerId);
-
-                               long homeFileSize = 0;
-
-                               for (FileExplorerItem homeChildExplorerItem : 
fList) {
-                                       log.debug("FileExplorerItem fList " + 
homeChildExplorerItem.getName());
-                                       homeFileSize += 
fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
-                               }
-
-                               fileExplorerObject.setUserHome(fList);
-                               
fileExplorerObject.setUserHomeSize(homeFileSize);
-
-                               // Public File List
-                               List<FileExplorerItem> rList = 
fileDao.getByRoom(roomId);
-
-                               long roomFileSize = 0;
-
-                               for (FileExplorerItem homeChildExplorerItem : 
rList) {
-                                       log.debug("FileExplorerItem rList " + 
homeChildExplorerItem.getName());
-                                       roomFileSize += 
fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
-                               }
-
-                               fileExplorerObject.setRoomHome(rList);
-                               
fileExplorerObject.setRoomHomeSize(roomFileSize);
-
-                               return fileExplorerObject;
-
-                       } else {
-
-                               throw new Exception("not Authenticated");
-
-                       }
-
-               } catch (Exception e) {
-                       log.error("[getFileExplorerByRoom]", e);
-                       return null;
+       private long getSize(List<FileExplorerItem> list) {
+               long size = 0;
+               for (FileExplorerItem f : list) {
+                       log.debug("FileExplorerItem fList " + f.getName());
+                       size += fileUtils.getSizeOfDirectoryAndSubs(f);
                }
+               return size;
        }
-
+       
        /**
         * Get a File Explorer Object by a given Room
         * 
-        * @param SID
+        * @param sid
         *            The SID of the User. This SID must be marked as logged in
-        * @param roomId
+        * @param id
         *            Room Id
         * @return - File Explorer Object by a given Room
         * @throws ServiceException
         */
-       public FileExplorerObject getFileExplorerByRoomSelf(String SID, Long 
roomId) throws ServiceException {
-
+       @WebMethod
+       @GET
+       @Path("/room/{id}")
+       public FileExplorerObject getRoom(@WebParam(name="sid") 
@QueryParam("sid") String sid
+                       , @WebParam(name="id") @PathParam("id") long roomId
+                       ) throws ServiceException
+       {
                try {
-
-                       Long userId = sessionDao.checkSession(SID);
+                       Long userId = sessionDao.checkSession(sid);
 
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-
                                log.debug("roomId " + roomId);
 
                                FileExplorerObject fileExplorerObject = new 
FileExplorerObject();
 
                                // Home File List
                                List<FileExplorerItem> fList = 
fileDao.getByOwner(userId);
-
-                               long homeFileSize = 0;
-
-                               for (FileExplorerItem homeChildExplorerItem : 
fList) {
-                                       log.debug("FileExplorerItem fList " + 
homeChildExplorerItem.getName());
-                                       homeFileSize += 
fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
-                               }
-
-                               fileExplorerObject.setUserHome(fList);
-                               
fileExplorerObject.setUserHomeSize(homeFileSize);
+                               fileExplorerObject.setUser(fList, 
getSize(fList));
 
                                // Public File List
                                List<FileExplorerItem> rList = 
fileDao.getByRoom(roomId);
-
-                               long roomFileSize = 0;
-
-                               for (FileExplorerItem homeChildExplorerItem : 
rList) {
-                                       log.debug("FileExplorerItem rList " + 
homeChildExplorerItem.getName());
-                                       roomFileSize += 
fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
-                               }
-
-                               fileExplorerObject.setRoomHome(rList);
-                               
fileExplorerObject.setRoomHomeSize(roomFileSize);
+                               fileExplorerObject.setRoom(rList, 
getSize(rList));
 
                                return fileExplorerObject;
-
                        } else {
-
-                               throw new Exception("not Authenticated");
-
+                               throw new ServiceException("Insufficient 
permissins"); //TODO code -26
                        }
-
+               } catch (ServiceException e) {
+                       throw e;
                } catch (Exception e) {
-                       log.error("[getFileExplorerByRoomSelf]", e);
-                       return null;
-               }
-       }
-
-       /**
-        * Get FileExplorerItem list by parent folder
-        * 
-        * @param SID
-        *            The SID of the User. This SID must be marked as logged in
-        * @param parentId
-        *            the parent folder id
-        * @param roomId
-        *            the room id
-        * @param isOwner
-        *            true if its a private drive
-        * @param ownerId
-        *            the owner id
-        * @return - FileExplorerItem list by parent folder
-        * @throws ServiceException
-        */
-       public FileExplorerItem[] getFileExplorerByParent(String SID, Long 
parentId, Long roomId, Boolean isOwner,
-                       Long ownerId) throws ServiceException {
-
-               try {
-
-                       Long userId = sessionDao.checkSession(SID);
-
-                       if 
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-                               log.debug("parentFileExplorerItemId " + 
parentId);
-
-                               if (parentId == 0) {
-                                       if (isOwner) {
-                                               return 
fileDao.getByOwner(ownerId).toArray(new FileExplorerItem[0]);
-                                       } else {
-                                               return 
fileDao.getByRoom(roomId).toArray(new FileExplorerItem[0]);
-                                       }
-                               } else {
-                                       return 
fileDao.getByParent(parentId).toArray(new FileExplorerItem[0]);
-                               }
-
-                       }
-               } catch (Exception err) {
-                       log.error("[getFileExplorerByParent] ", err);
+                       log.error("[getRoom]", e);
+                       throw new ServiceException(e.getMessage());
                }
-               return null;
        }
 
        /**
         * 
-        * Get FileExplorerItem[] by parent and owner id
+        * Get list of {@link FileExplorerItemDTO} by parent
         * 
-        * @param SID
+        * @param sid
         *            SID The SID of the User. This SID must be marked as 
logged in
         * @param parentId
         *            the parent folder id
         * @param roomId
         *            the room id
-        * @param isOwner
-        *            true to request private drive
         * @return - list of file explorer items
         * @throws ServiceException
         */
-       public FileExplorerItem[] getFileExplorerByParentSelf(String SID, Long 
parentId, Long roomId, Boolean isOwner)
-                       throws ServiceException {
-
+       @WebMethod
+       @GET
+       @Path("/room/{id}/{parent}")
+       public List<FileExplorerItemDTO> getRoomByParent(@WebParam(name="sid") 
@QueryParam("sid") String sid
+                       , @WebParam(name="id") @PathParam("id") long roomId
+                       , @WebParam(name="parent") @PathParam("parent") long 
parentId
+                       ) throws ServiceException
+       {
                try {
-
-                       Long userId = sessionDao.checkSession(SID);
+                       Long userId = sessionDao.checkSession(sid);
 
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+                               log.debug("getRoomByParent " + parentId);
 
-                               log.debug("parentFileExplorerItemId " + 
parentId);
-
-                               if (parentId == 0) {
-                                       if (isOwner) {
-                                               return 
fileDao.getByOwner(userId).toArray(new FileExplorerItem[0]);
+                               List<FileExplorerItem> list = new ArrayList<>();
+                               if (parentId < 0) {
+                                       if (parentId == -1) {
+                                               list = 
fileDao.getByOwner(userId);
                                        } else {
-                                               return 
fileDao.getByRoom(roomId).toArray(new FileExplorerItem[0]);
+                                               list = 
fileDao.getByRoom(roomId);
                                        }
                                } else {
-                                       return 
fileDao.getByParent(parentId).toArray(new FileExplorerItem[0]);
+                                       list = fileDao.getByParent(parentId);
                                }
+                               return FileExplorerItemDTO.list(list);
+                       } else {
+                               throw new ServiceException("Insufficient 
permissins"); //TODO code -26
                        }
-               } catch (Exception err) {
-                       log.error("[getFileExplorerByParentSelf] ", err);
-               }
-               return null;
-       }
-
-       /**
-        * update a file or folder name
-        * 
-        * @param SID
-        *            SID The SID of the User. This SID must be marked as 
logged in
-        * @param fileId
-        *            file or folder id
-        * @param fileName
-        *            new file or folder name
-        * @return - null
-        * @throws ServiceException
-        */
-       public Long updateFileOrFolderName(String SID, Long fileId, String 
fileName) throws ServiceException {
-
-               try {
-
-                       Long userId = sessionDao.checkSession(SID);
-
-                       if 
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-                               log.debug("updateFileOrFolderName " + fileId);
-
-                               fileDao.updateFileOrFolderName(fileId, 
fileName);
-
-                       }
-               } catch (Exception err) {
-                       log.error("[updateFileOrFolderName] ", err);
+               } catch (ServiceException e) {
+                       throw e;
+               } catch (Exception e) {
+                       log.error("[getRoom]", e);
+                       throw new ServiceException(e.getMessage());
                }
-               return null;
        }
 
        /**
         * 
         * update a file or folder name
         * 
-        * @param SID
+        * @param sid
         *            SID The SID of the User. This SID must be marked as 
logged in
         * @param fileId
         *            file or folder id
@@ -494,11 +353,11 @@ public class FileWebService {
         * @return - null
         * @throws ServiceException
         */
-       public Long updateFileOrFolderNameSelf(String SID, Long fileId, String 
fileName) throws ServiceException {
+       public Long rename(String sid, Long fileId, String fileName) throws 
ServiceException {
 
                try {
 
-                       Long userId = sessionDao.checkSession(SID);
+                       Long userId = sessionDao.checkSession(sid);
 
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
 
@@ -524,59 +383,7 @@ public class FileWebService {
        /**
         * move a file or folder
         * 
-        * @param SID
-        *            SID The SID of the User. This SID must be marked as 
logged in
-        * @param fileId
-        *            current file or folder id to be moved
-        * @param newParentId
-        *            new parent folder id
-        * @param roomId
-        *            room id
-        * @param isOwner
-        *            if true owner id will be set
-        * @param moveToHome
-        *            if true move to private drive
-        * @param ownerId
-        *            owner id
-        * @return - null
-        * @throws ServiceException
-        */
-       public Long moveFile(String SID, Long fileId, Long newParentId, Long 
roomId, Boolean isOwner, Boolean moveToHome,
-                       Long ownerId) throws ServiceException {
-
-               try {
-
-                       Long userId = sessionDao.checkSession(SID);
-
-                       if 
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-                               log.debug("moveFile " + fileId);
-
-                               fileDao.moveFile(fileId, newParentId, roomId, 
isOwner, ownerId);
-
-                               FileExplorerItem fileExplorerItem = 
fileDao.get(fileId);
-
-                               if (moveToHome) {
-                                       // set this file and all subfiles and 
folders the ownerId
-                                       
fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, ownerId, null);
-
-                               } else {
-                                       // set this file and all subfiles and 
folders the roomId
-                                       
fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, null, roomId);
-
-                               }
-
-                       }
-               } catch (Exception err) {
-                       log.error("[moveFile] ", err);
-               }
-               return null;
-       }
-
-       /**
-        * move a file or folder
-        * 
-        * @param SID
+        * @param sid
         *            SID The SID of the User. This SID must be marked as 
logged in
         * @param fileId
         *            current file or folder id to be moved
@@ -591,12 +398,12 @@ public class FileWebService {
         * @return - null
         * @throws ServiceException
         */
-       public Long moveFileSelf(String SID, Long fileId, Long newParentId, 
Long roomId, Boolean isOwner,
+       public Long move(String sid, Long fileId, Long newParentId, Long 
roomId, Boolean isOwner,
                        Boolean moveToHome) throws ServiceException {
 
                try {
 
-                       Long userId = sessionDao.checkSession(SID);
+                       Long userId = sessionDao.checkSession(sid);
 
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
 

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java?rev=1716392&r1=1716391&r2=1716392&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
 Wed Nov 25 13:30:08 2015
@@ -18,46 +18,70 @@
  */
 package org.apache.openmeetings.db.dto.file;
 
+import java.io.Serializable;
 import java.util.List;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 
 /**
  * @author sebastianwagner
  *
  */
-public class FileExplorerObject {
-
-       private List<FileExplorerItem> userHome;
-       private List<FileExplorerItem> roomHome;
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class FileExplorerObject implements Serializable {
+       private static final long serialVersionUID = 1L;
+       
+       private List<FileExplorerItemDTO> userHome;
+       private List<FileExplorerItemDTO> roomHome;
        private Long userHomeSize;
        private Long roomHomeSize;
-       
+
        public FileExplorerObject() {}
-       
-       public List<FileExplorerItem> getUserHome() {
+
+       public List<FileExplorerItemDTO> getUserHome() {
                return userHome;
        }
-       public void setUserHome(List<FileExplorerItem> userHome) {
+
+       public void setUserHome(List<FileExplorerItemDTO> userHome) {
                this.userHome = userHome;
        }
-       public List<FileExplorerItem> getRoomHome() {
+
+       public void setUser(List<FileExplorerItem> list, long size) {
+               this.userHome = FileExplorerItemDTO.list(list);
+               this.userHomeSize = size;
+       }
+
+       public List<FileExplorerItemDTO> getRoomHome() {
                return roomHome;
        }
-       public void setRoomHome(List<FileExplorerItem> roomHome) {
+
+       public void setRoomHome(List<FileExplorerItemDTO> roomHome) {
                this.roomHome = roomHome;
        }
+
+       public void setRoom(List<FileExplorerItem> list, long size) {
+               this.roomHome = FileExplorerItemDTO.list(list);
+               this.roomHomeSize = size;
+       }
+
        public Long getUserHomeSize() {
                return userHomeSize;
        }
+
        public void setUserHomeSize(Long userHomeSize) {
                this.userHomeSize = userHomeSize;
        }
+
        public Long getRoomHomeSize() {
                return roomHomeSize;
        }
+
        public void setRoomHomeSize(Long roomHomeSize) {
                this.roomHomeSize = roomHomeSize;
        }
-       
 }

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=1716392&r1=1716391&r2=1716392&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
 Wed Nov 25 13:30:08 2015
@@ -22,6 +22,7 @@ import static org.apache.openmeetings.ut
 
 import java.io.File;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
@@ -29,6 +30,7 @@ import javax.jws.WebMethod;
 import javax.jws.WebParam;
 import javax.jws.WebService;
 import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
@@ -224,11 +226,8 @@ public class FileWebService {
                                }
 
                                return 
LoadLibraryPresentation.parseLibraryFileToObject(file);
-
                        } else {
-
                                throw new ServiceException("not Authenticated");
-
                        }
                } catch (ServiceException e) {
                        throw e;
@@ -238,254 +237,114 @@ public class FileWebService {
                }
        }
 
-       /**
-        * Get a File Explorer Object by a given Room and owner id
-        * 
-        * @param SID
-        *            The SID of the User. This SID must be marked as logged in
-        * @param roomId
-        *            Room id
-        * @param ownerId
-        *            Owner id
-        * @return - File Explorer Object by a given Room and owner id
-        * @throws ServiceException
-        */
-       public FileExplorerObject getFileExplorerByRoom(String SID, Long 
roomId, Long ownerId) throws ServiceException {
-
-               try {
-
-                       Long userId = sessionDao.checkSession(SID);
-
-                       if 
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-                               log.debug("roomId " + roomId);
-
-                               FileExplorerObject fileExplorerObject = new 
FileExplorerObject();
-
-                               // Home File List
-                               List<FileExplorerItem> fList = 
fileDao.getByOwner(ownerId);
-
-                               long homeFileSize = 0;
-
-                               for (FileExplorerItem homeChildExplorerItem : 
fList) {
-                                       log.debug("FileExplorerItem fList " + 
homeChildExplorerItem.getName());
-                                       homeFileSize += 
fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
-                               }
-
-                               fileExplorerObject.setUserHome(fList);
-                               
fileExplorerObject.setUserHomeSize(homeFileSize);
-
-                               // Public File List
-                               List<FileExplorerItem> rList = 
fileDao.getByRoom(roomId);
-
-                               long roomFileSize = 0;
-
-                               for (FileExplorerItem homeChildExplorerItem : 
rList) {
-                                       log.debug("FileExplorerItem rList " + 
homeChildExplorerItem.getName());
-                                       roomFileSize += 
fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
-                               }
-
-                               fileExplorerObject.setRoomHome(rList);
-                               
fileExplorerObject.setRoomHomeSize(roomFileSize);
-
-                               return fileExplorerObject;
-
-                       } else {
-
-                               throw new Exception("not Authenticated");
-
-                       }
-
-               } catch (Exception e) {
-                       log.error("[getFileExplorerByRoom]", e);
-                       return null;
+       private long getSize(List<FileExplorerItem> list) {
+               long size = 0;
+               for (FileExplorerItem f : list) {
+                       log.debug("FileExplorerItem fList " + f.getName());
+                       size += fileUtils.getSizeOfDirectoryAndSubs(f);
                }
+               return size;
        }
-
+       
        /**
         * Get a File Explorer Object by a given Room
         * 
-        * @param SID
+        * @param sid
         *            The SID of the User. This SID must be marked as logged in
-        * @param roomId
+        * @param id
         *            Room Id
         * @return - File Explorer Object by a given Room
         * @throws ServiceException
         */
-       public FileExplorerObject getFileExplorerByRoomSelf(String SID, Long 
roomId) throws ServiceException {
-
+       @WebMethod
+       @GET
+       @Path("/room/{id}")
+       public FileExplorerObject getRoom(@WebParam(name="sid") 
@QueryParam("sid") String sid
+                       , @WebParam(name="id") @PathParam("id") long roomId
+                       ) throws ServiceException
+       {
                try {
-
-                       Long userId = sessionDao.checkSession(SID);
+                       Long userId = sessionDao.checkSession(sid);
 
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-
                                log.debug("roomId " + roomId);
 
                                FileExplorerObject fileExplorerObject = new 
FileExplorerObject();
 
                                // Home File List
                                List<FileExplorerItem> fList = 
fileDao.getByOwner(userId);
-
-                               long homeFileSize = 0;
-
-                               for (FileExplorerItem homeChildExplorerItem : 
fList) {
-                                       log.debug("FileExplorerItem fList " + 
homeChildExplorerItem.getName());
-                                       homeFileSize += 
fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
-                               }
-
-                               fileExplorerObject.setUserHome(fList);
-                               
fileExplorerObject.setUserHomeSize(homeFileSize);
+                               fileExplorerObject.setUser(fList, 
getSize(fList));
 
                                // Public File List
                                List<FileExplorerItem> rList = 
fileDao.getByRoom(roomId);
-
-                               long roomFileSize = 0;
-
-                               for (FileExplorerItem homeChildExplorerItem : 
rList) {
-                                       log.debug("FileExplorerItem rList " + 
homeChildExplorerItem.getName());
-                                       roomFileSize += 
fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
-                               }
-
-                               fileExplorerObject.setRoomHome(rList);
-                               
fileExplorerObject.setRoomHomeSize(roomFileSize);
+                               fileExplorerObject.setRoom(rList, 
getSize(rList));
 
                                return fileExplorerObject;
-
                        } else {
-
-                               throw new Exception("not Authenticated");
-
+                               throw new ServiceException("Insufficient 
permissins"); //TODO code -26
                        }
-
+               } catch (ServiceException e) {
+                       throw e;
                } catch (Exception e) {
-                       log.error("[getFileExplorerByRoomSelf]", e);
-                       return null;
-               }
-       }
-
-       /**
-        * Get FileExplorerItem list by parent folder
-        * 
-        * @param SID
-        *            The SID of the User. This SID must be marked as logged in
-        * @param parentId
-        *            the parent folder id
-        * @param roomId
-        *            the room id
-        * @param isOwner
-        *            true if its a private drive
-        * @param ownerId
-        *            the owner id
-        * @return - FileExplorerItem list by parent folder
-        * @throws ServiceException
-        */
-       public FileExplorerItem[] getFileExplorerByParent(String SID, Long 
parentId, Long roomId, Boolean isOwner,
-                       Long ownerId) throws ServiceException {
-
-               try {
-
-                       Long userId = sessionDao.checkSession(SID);
-
-                       if 
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-                               log.debug("parentFileExplorerItemId " + 
parentId);
-
-                               if (parentId == 0) {
-                                       if (isOwner) {
-                                               return 
fileDao.getByOwner(ownerId).toArray(new FileExplorerItem[0]);
-                                       } else {
-                                               return 
fileDao.getByRoom(roomId).toArray(new FileExplorerItem[0]);
-                                       }
-                               } else {
-                                       return 
fileDao.getByParent(parentId).toArray(new FileExplorerItem[0]);
-                               }
-
-                       }
-               } catch (Exception err) {
-                       log.error("[getFileExplorerByParent] ", err);
+                       log.error("[getRoom]", e);
+                       throw new ServiceException(e.getMessage());
                }
-               return null;
        }
 
        /**
         * 
-        * Get FileExplorerItem[] by parent and owner id
+        * Get list of {@link FileExplorerItemDTO} by parent
         * 
-        * @param SID
+        * @param sid
         *            SID The SID of the User. This SID must be marked as 
logged in
         * @param parentId
         *            the parent folder id
         * @param roomId
         *            the room id
-        * @param isOwner
-        *            true to request private drive
         * @return - list of file explorer items
         * @throws ServiceException
         */
-       public FileExplorerItem[] getFileExplorerByParentSelf(String SID, Long 
parentId, Long roomId, Boolean isOwner)
-                       throws ServiceException {
-
+       @WebMethod
+       @GET
+       @Path("/room/{id}/{parent}")
+       public List<FileExplorerItemDTO> getRoomByParent(@WebParam(name="sid") 
@QueryParam("sid") String sid
+                       , @WebParam(name="id") @PathParam("id") long roomId
+                       , @WebParam(name="parent") @PathParam("parent") long 
parentId
+                       ) throws ServiceException
+       {
                try {
-
-                       Long userId = sessionDao.checkSession(SID);
+                       Long userId = sessionDao.checkSession(sid);
 
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+                               log.debug("getRoomByParent " + parentId);
 
-                               log.debug("parentFileExplorerItemId " + 
parentId);
-
-                               if (parentId == 0) {
-                                       if (isOwner) {
-                                               return 
fileDao.getByOwner(userId).toArray(new FileExplorerItem[0]);
+                               List<FileExplorerItem> list = new ArrayList<>();
+                               if (parentId < 0) {
+                                       if (parentId == -1) {
+                                               list = 
fileDao.getByOwner(userId);
                                        } else {
-                                               return 
fileDao.getByRoom(roomId).toArray(new FileExplorerItem[0]);
+                                               list = 
fileDao.getByRoom(roomId);
                                        }
                                } else {
-                                       return 
fileDao.getByParent(parentId).toArray(new FileExplorerItem[0]);
+                                       list = fileDao.getByParent(parentId);
                                }
+                               return FileExplorerItemDTO.list(list);
+                       } else {
+                               throw new ServiceException("Insufficient 
permissins"); //TODO code -26
                        }
-               } catch (Exception err) {
-                       log.error("[getFileExplorerByParentSelf] ", err);
-               }
-               return null;
-       }
-
-       /**
-        * update a file or folder name
-        * 
-        * @param SID
-        *            SID The SID of the User. This SID must be marked as 
logged in
-        * @param fileId
-        *            file or folder id
-        * @param fileName
-        *            new file or folder name
-        * @return - null
-        * @throws ServiceException
-        */
-       public Long updateFileOrFolderName(String SID, Long fileId, String 
fileName) throws ServiceException {
-
-               try {
-
-                       Long userId = sessionDao.checkSession(SID);
-
-                       if 
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-                               log.debug("updateFileOrFolderName " + fileId);
-
-                               fileDao.updateFileOrFolderName(fileId, 
fileName);
-
-                       }
-               } catch (Exception err) {
-                       log.error("[updateFileOrFolderName] ", err);
+               } catch (ServiceException e) {
+                       throw e;
+               } catch (Exception e) {
+                       log.error("[getRoom]", e);
+                       throw new ServiceException(e.getMessage());
                }
-               return null;
        }
 
        /**
         * 
         * update a file or folder name
         * 
-        * @param SID
+        * @param sid
         *            SID The SID of the User. This SID must be marked as 
logged in
         * @param fileId
         *            file or folder id
@@ -494,11 +353,11 @@ public class FileWebService {
         * @return - null
         * @throws ServiceException
         */
-       public Long updateFileOrFolderNameSelf(String SID, Long fileId, String 
fileName) throws ServiceException {
+       public Long rename(String sid, Long fileId, String fileName) throws 
ServiceException {
 
                try {
 
-                       Long userId = sessionDao.checkSession(SID);
+                       Long userId = sessionDao.checkSession(sid);
 
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
 
@@ -524,59 +383,7 @@ public class FileWebService {
        /**
         * move a file or folder
         * 
-        * @param SID
-        *            SID The SID of the User. This SID must be marked as 
logged in
-        * @param fileId
-        *            current file or folder id to be moved
-        * @param newParentId
-        *            new parent folder id
-        * @param roomId
-        *            room id
-        * @param isOwner
-        *            if true owner id will be set
-        * @param moveToHome
-        *            if true move to private drive
-        * @param ownerId
-        *            owner id
-        * @return - null
-        * @throws ServiceException
-        */
-       public Long moveFile(String SID, Long fileId, Long newParentId, Long 
roomId, Boolean isOwner, Boolean moveToHome,
-                       Long ownerId) throws ServiceException {
-
-               try {
-
-                       Long userId = sessionDao.checkSession(SID);
-
-                       if 
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-                               log.debug("moveFile " + fileId);
-
-                               fileDao.moveFile(fileId, newParentId, roomId, 
isOwner, ownerId);
-
-                               FileExplorerItem fileExplorerItem = 
fileDao.get(fileId);
-
-                               if (moveToHome) {
-                                       // set this file and all subfiles and 
folders the ownerId
-                                       
fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, ownerId, null);
-
-                               } else {
-                                       // set this file and all subfiles and 
folders the roomId
-                                       
fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, null, roomId);
-
-                               }
-
-                       }
-               } catch (Exception err) {
-                       log.error("[moveFile] ", err);
-               }
-               return null;
-       }
-
-       /**
-        * move a file or folder
-        * 
-        * @param SID
+        * @param sid
         *            SID The SID of the User. This SID must be marked as 
logged in
         * @param fileId
         *            current file or folder id to be moved
@@ -591,12 +398,12 @@ public class FileWebService {
         * @return - null
         * @throws ServiceException
         */
-       public Long moveFileSelf(String SID, Long fileId, Long newParentId, 
Long roomId, Boolean isOwner,
+       public Long move(String sid, Long fileId, Long newParentId, Long 
roomId, Boolean isOwner,
                        Boolean moveToHome) throws ServiceException {
 
                try {
 
-                       Long userId = sessionDao.checkSession(SID);
+                       Long userId = sessionDao.checkSession(sid);
 
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
 


Reply via email to