You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2015/11/25 14:30:08 UTC

svn commit: r1716392 - in /openmeetings: branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/ branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ trunk/singlewebapp/openmeetings-db/src/m...

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))) {