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 05:08:03 UTC

svn commit: r1716295 [2/3] - in /openmeetings: branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/ branches/3.1.x/openmeetings-cor...

Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java Wed Nov 25 04:08:02 2015
@@ -39,11 +39,11 @@ public class Mp4RecordingResourceReferen
 	
 	@Override
 	String getFileName(Recording r) {
-		return r.getFileHash() + MP4_EXTENSION;
+		return r.getHash() + MP4_EXTENSION;
 	}
 	
 	@Override
 	File getFile(Recording r) {
-		return getMp4Recording(r.getFileHash());
+		return getMp4Recording(r.getHash());
 	}
 }

Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java Wed Nov 25 04:08:02 2015
@@ -39,11 +39,11 @@ public class OggRecordingResourceReferen
 	
 	@Override
 	String getFileName(Recording r) {
-		return r.getFileHash() + OGG_EXTENSION;
+		return r.getHash() + OGG_EXTENSION;
 	}
 	
 	@Override
 	File getFile(Recording r) {
-		return getOggRecording(r.getFileHash());
+		return getOggRecording(r.getHash());
 	}
 }

Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/logback-config.xml Wed Nov 25 04:08:02 2015
@@ -61,6 +61,7 @@
 	<logger name="org.apache.directory" level="INFO" />
 	<logger name="org.apache.mina.filter.ssl.SslFilter" level="ERROR" />
 	<logger name="org.apache.wicket" level="WARN" />
+	<logger name="org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter" level="TRACE" />
 	<root level="DEBUG">
 		<appender-ref ref="FLOG2" />
 		<appender-ref ref="CONSOLE2" />

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=1716295&r1=1716294&r2=1716295&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 04:08:02 2015
@@ -20,35 +20,38 @@ package org.apache.openmeetings.webservi
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
-import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Set;
 
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
 import javax.jws.WebService;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.POST;
 import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
-import org.apache.openmeetings.core.data.file.FileProcessor;
+import org.apache.cxf.jaxrs.ext.multipart.Multipart;
 import org.apache.openmeetings.core.data.file.FileUtils;
 import org.apache.openmeetings.core.documents.LoadLibraryPresentation;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.basic.ServiceResult;
+import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
+import org.apache.openmeetings.db.dto.file.FileExplorerItemDTO;
 import org.apache.openmeetings.db.dto.file.FileExplorerObject;
 import org.apache.openmeetings.db.dto.file.LibraryPresentation;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
-import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.StoredFile;
-import org.apache.openmeetings.util.process.ConverterProcessResultList;
-import org.apache.openmeetings.util.process.FileImportError;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -68,372 +71,80 @@ import org.springframework.beans.factory
 @Produces({MediaType.APPLICATION_JSON})
 @Path("/file")
 public class FileWebService {
-
 	private static final Logger log = Red5LoggerFactory.getLogger(FileWebService.class, webAppRootKey);
+
 	@Autowired
-	private SessiondataDao sessiondataDao;
+	private SessiondataDao sessionDao;
 	@Autowired
 	private UserDao userDao;
 	@Autowired
-	private FileExplorerItemDao fileExplorerItemDao;
-	@Autowired
-	private FileProcessor fileProcessor;
+	private FileExplorerItemDao fileDao;
 	@Autowired
 	private FileUtils fileUtils;
 
 	/**
+	 * deletes files or folders based on it id
 	 * 
-	 * Import file from external source
-	 * 
-	 * to upload a file to a room-drive you specify: externalUserId, user if of openmeetings user for which we upload
-	 * the file roomId = openmeetings room id isOwner = 0 parentFolderId = 0
-	 * 
-	 * to upload a file to a private-drive you specify: externalUserId, user if of openmeetings user for which we upload
-	 * the file roomId = openmeetings room id isOwner = 1 parentFolderId = -2
-	 * 
-	 * @param SID
-	 *            The logged in session id with minimum webservice level
-	 * @param externalUserId
-	 *            the external user id =&gt; If the file should goto a private section of any user, this number needs to
-	 *            be set
-	 * @param externalFileId
-	 *            the external file-type to identify the file later
-	 * @param externalType
-	 *            the name of the external system
-	 * @param roomId
-	 *            the room Id, if the file goes to the private folder of an user, you can set a random number here
-	 * @param isOwner
-	 *            specify a 1/true AND parentFolderId==-2 to make the file goto the private section
-	 * @param path
-	 *            http-path where we can grab the file from, the file has to be accessible from the OpenMeetings server
-	 * @param parentFolderId
-	 *            specify a parentFolderId==-2 AND isOwner == 1/true AND to make the file goto the private section
-	 * @param fileSystemName
-	 *            the filename =&gt; Important WITH file extension!
-	 * 
-	 * @return - array of file import errors
-	 * @throws ServiceException
-	 */
-	public FileImportError[] importFile(String SID, String externalUserId, Long externalFileId, String externalType,
-			Long roomId, boolean isOwner, String path, Long parentFolderId, String fileSystemName)
-			throws ServiceException {
-		try {
-
-			Long userId = sessiondataDao.checkSession(SID);
-
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-				URL url = new URL(path);
-				URLConnection uc = url.openConnection();
-				InputStream inputstream = new BufferedInputStream(uc.getInputStream());
-
-				User externalUser = userDao.getExternalUser(externalUserId, externalType);
-
-				LinkedHashMap<String, Object> hs = new LinkedHashMap<String, Object>();
-				hs.put("user", externalUser);
-
-				ConverterProcessResultList returnError = fileProcessor.processFile(externalUser.getId(), roomId,
-						isOwner, inputstream, parentFolderId, fileSystemName, externalFileId, externalType);
-
-				// Flash cannot read the response of an upload
-				// httpServletResponse.getWriter().print(returnError);
-				hs.put("message", "library");
-				hs.put("action", "newFile");
-				hs.put("fileExplorerItem", fileExplorerItemDao.get(returnError.getFileExplorerItemId()));
-				hs.put("error", returnError.getLogMessage());
-				hs.put("fileName", returnError.getCompleteName());
-
-				// FIXME: Send event to UI that there is a new file
-
-				return returnError.convertToFileImportErrors();
-
-			}
-		} catch (Exception err) {
-			log.error("[importFile]", err);
-		}
-		return null;
-	}
-
-	/**
-	 * Import file from external source
-	 * 
-	 * to upload a file to a room-drive you specify: internalUserId, user if of openmeetings user for which we upload
-	 * the file roomId = openmeetings room id isOwner = 0 parentFolderId = 0
-	 * 
-	 * to upload a file to a private-drive you specify: internalUserId, user if of openmeetings user for which we upload
-	 * the file roomId = openmeetings room id isOwner = 1 parentFolderId = -2
-	 * 
-	 * @param SID
-	 *            The SID of the User. This SID must be marked as logged in
-	 * @param internalUserId
-	 *            the openmeetings user id =&gt; If the file should goto a private section of any user, this number
-	 *            needs to be se
-	 * @param externalFileId
-	 *            the external file-type to identify the file later
-	 * @param externalType
-	 *            the name of the external system
-	 * @param roomId
-	 *            the room Id, if the file goes to the private folder of an user, you can set a random number here
-	 * @param isOwner
-	 *            specify a 1/true AND parentFolderId==-2 to make the file goto the private section
-	 * @param path
-	 *            http-path where we can grab the file from, the file has to be accessible from the OpenMeetings server
-	 * @param parentFolderId
-	 *            specify a parentFolderId==-2 AND isOwner == 1/true AND to make the file goto the private section
-	 * @param fileSystemName
-	 *            the filename =&gt; Important WITH file extension!
-	 * 
-	 * @return - array of file import errors
-	 * @throws ServiceException
-	 */
-	public FileImportError[] importFileByInternalUserId(String SID, Long internalUserId, Long externalFileId,
-			String externalType, Long roomId, boolean isOwner, String path, Long parentFolderId, String fileSystemName)
-			throws ServiceException {
-		try {
-
-			Long userId = sessiondataDao.checkSession(SID);
-
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-				URL url = new URL(path);
-				URLConnection uc = url.openConnection();
-				InputStream inputstream = new BufferedInputStream(uc.getInputStream());
-
-				User internalUser = userDao.get(internalUserId);
-
-				LinkedHashMap<String, Object> hs = new LinkedHashMap<String, Object>();
-				hs.put("user", internalUser);
-
-				ConverterProcessResultList returnError = fileProcessor.processFile(internalUser.getId(), roomId,
-						isOwner, inputstream, parentFolderId, fileSystemName, externalFileId, externalType);
-
-				// Flash cannot read the response of an upload
-				// httpServletResponse.getWriter().print(returnError);
-				hs.put("message", "library");
-				hs.put("action", "newFile");
-				hs.put("fileExplorerItem", fileExplorerItemDao.get(returnError.getFileExplorerItemId()));
-				hs.put("error", returnError);
-				hs.put("fileName", returnError.getCompleteName());
-
-				// FIXME: Notificate UI of clients of new file
-
-				return returnError.convertToFileImportErrors();
-
-			}
-		} catch (Exception err) {
-			log.error("[importFileByInternalUserId]", err);
-		}
-		return null;
-	}
-
-	/**
-	 * to add a folder to the private drive, set parentFileExplorerItemId = 0 and isOwner to 1/true and
-	 * externalUserId/externalUserType to a valid user
-	 * 
-	 * @param SID
+	 * @param sid
 	 *            The SID of the User. This SID must be marked as logged in
-	 * @param externalUserId
-	 *            the external file-type to identify the file later
-	 * @param parentId
-	 * @param folderName
-	 *            the name of the folder
-	 * @param roomId
-	 *            the room Id, if the file goes to the private folder of an user, you can set a random number here
-	 * @param isOwner
-	 *            specify a 1/true AND parentFolderId==-2 to make the file goto the private section
-	 * @param externalFilesid
-	 *            the external file-type to identify the file later
-	 * @param externalType
-	 *            the name of the external system
-	 * 
-	 * @return - id of folder added
+	 * @param id
+	 *            the id of the file or folder
+	 * @return - id of the file deleted, error code otherwise
 	 * @throws ServiceException
 	 */
-	public Long addFolderByExternalUserIdAndType(String SID, String externalUserId, Long parentId, String folderName,
-			Long roomId, Boolean isOwner, Long externalFilesid, String externalType) throws ServiceException {
+	@DELETE
+	@Path("/{id}")
+	public ServiceResult delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) throws ServiceException {
 		try {
+			Long userId = sessionDao.checkSession(sid);
 
-			Long authUserId = sessiondataDao.checkSession(SID);
-
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-
-				User userExternal = userDao.getExternalUser(externalUserId, externalType);
-
-				Long userId = userExternal.getId();
-
-				log.debug("addFolder " + parentId);
-
-				if (parentId == -2 && isOwner) {
-					// userId (OwnerID) => only set if its directly root in
-					// Owner Directory,
-					// other Folders and Files maybe are also in a Home
-					// directory
-					// but just because their parent is
-					return fileExplorerItemDao.add(folderName, "", 0L, userId, roomId, userId, true, // isFolder
-							false, // isImage
-							false, // isPresentation
-							"", // WML Path
-							false, // isStoredWML file
-							false, // isXmlFile
-							externalFilesid, externalType);
-				} else {
-					return fileExplorerItemDao.add(folderName, "", parentId, null, roomId, userId, true, // isFolder
-							false, // isImage
-							false, // isPresentation
-							"", // WML Path
-							false, // isStoredWML file
-							false, // isXmlFile
-							externalFilesid, externalType);
-				}
+			FileExplorerItem f = fileDao.get(id);
+			if (f == null) {
+				return new ServiceResult(-1L, "Bad id", Type.ERROR);
 			}
-
-		} catch (Exception err) {
-			log.error("[addFolderByExternalUserIdAndType]", err);
-		}
-		return null;
-	}
-
-	/**
-	 * to add a folder to the private drive, set parentFileExplorerItemId = 0 and isOwner to 1/true and userId to a
-	 * valid user
-	 * 
-	 * @param SID
-	 *            The SID of the User. This SID must be marked as logged in
-	 * @param userId
-	 *            the openmeetings user id
-	 * @param parentId
-	 *            specify a parentFolderId==-2 AND isOwner == 1/true AND to make the file goto the private section
-	 * @param folderName
-	 *            the name of the folder
-	 * @param roomId
-	 *            the room Id, if the file goes to the private folder of an user, you can set a random number here
-	 * @param isOwner
-	 *            specify a 1/true AND parentFolderId==-2 to make the file goto the private section
-	 * @param externalFilesid
-	 *            the external file-type to identify the file later
-	 * @param externalType
-	 *            the name of the external system
-	 * 
-	 * @return - id of the folder
-	 * @throws ServiceException
-	 */
-	public Long addFolderByUserId(String SID, Long userId, Long parentId, String folderName, Long roomId,
-			Boolean isOwner, Long externalFilesid, String externalType) throws ServiceException {
-		try {
-
-			Long authUserId = sessiondataDao.checkSession(SID);
-
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-
-				log.debug("addFolder " + parentId);
-
-				if (parentId == -2 && isOwner) {
-					// users_id (OwnerID) => only set if its directly root in
-					// Owner Directory,
-					// other Folders and Files maybe are also in a Home
-					// directory
-					// but just because their parent is
-					return fileExplorerItemDao.add(folderName, "", 0L, userId, roomId, userId, true, // isFolder
-							false, // isImage
-							false, // isPresentation
-							"", // WML Path
-							false, // isStoredWML file
-							false, // isXmlFile
-							externalFilesid, externalType);
-				} else {
-					return fileExplorerItemDao.add(folderName, "", parentId, null, roomId, userId, true, // isFolder
-							false, // isImage
-							false, // isPresentation
-							"", // WML Path
-							false, // isStoredWML file
-							false, // isXmlFile
-							externalFilesid, externalType);
-				}
-			}
-
-		} catch (Exception err) {
-			log.error("[addFolderByUserId]", err);
-		}
-		return null;
-	}
-
-	/**
-	 * 
-	 * Add a folder by the current user - similar to RTMP Call
-	 * 
-	 * @param SID
-	 *            The SID of the User. This SID must be marked as logged in
-	 * @param parentId
-	 *            parent folder id
-	 * @param fileName
-	 *            the file name
-	 * @param roomId
-	 *            the room id
-	 * @param isOwner
-	 * @return - id of the folder
-	 */
-	public Long addFolderSelf(String SID, Long parentId, String fileName, Long roomId, Boolean isOwner)
-			throws ServiceException {
-		try {
-			Long userId = sessiondataDao.checkSession(SID);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-
-				log.debug("addFolder " + parentId);
-
-				if (parentId == 0 && isOwner) {
-					// users_id (OwnerID) => only set if its directly root in
-					// Owner Directory,
-					// other Folders and Files maybe are also in a Home
-					// directory
-					// but just because their parent is
-					return fileExplorerItemDao.add(fileName, "", parentId, userId, roomId, userId, true, // isFolder
-							false, // isImage
-							false, // isPresentation
-							"", // WML Path
-							false, // isStoredWML file
-							false // isXmlFile
-							, 0L, "");
-				} else {
-					return fileExplorerItemDao.add(fileName, "", parentId, null, roomId, userId, true, // isFolder
-							false, // isImage
-							false, // isPresentation
-							"", // WML Paht
-							false, // isStoredWML file
-							false // isXmlFile
-							, 0L, "");
-				}
+			Set<Right> rights = userDao.getRights(userId);
+			if (AuthLevelUtil.hasWebServiceLevel(rights)
+				|| (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))
+			{
+				fileDao.delete(f);
+				return new ServiceResult(id, "Deleted", Type.SUCCESS);
+			} else {
+				return new ServiceResult(-26L, "Insufficient permissins", Type.ERROR);
 			}
-		} catch (Exception err) {
-			log.error("[getFileExplorerByParent] ", err);
+		} catch (Exception e) {
+			log.error("[delete] ", e);
+			throw new ServiceException(e.getMessage());
 		}
-		return null;
 	}
 
 	/**
 	 * 
 	 * deletes a file by its external Id and type
 	 * 
-	 * @param SID
+	 * @param sid
 	 *            The SID of the User. This SID must be marked as logged in
-	 * @param externalFilesid
+	 * @param externalId
 	 *            the od of the file or folder
 	 * @param externalType
 	 *            the externalType
 	 * @return - null
 	 */
-	public Long deleteFileOrFolderByExternalIdAndType(String SID, Long externalFilesid, String externalType)
-			throws ServiceException {
-
+	@DELETE
+	@Path("/{externaltype}/{externalid}")
+	public ServiceResult deleteExternal(
+			@WebParam(name="sid") @QueryParam("sid") String sid
+			, @WebParam(name="externaltype") @PathParam("externaltype") String externalType
+			, @WebParam(name="externalid") @PathParam("externalid") String externalId
+			) throws ServiceException
+	{
 		try {
-
-			Long userId = sessiondataDao.checkSession(SID);
-
+			Long userId = sessionDao.checkSession(sid);
+			
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-				fileExplorerItemDao.deleteFileExplorerItemByExternalIdAndType(externalFilesid, externalType);
-
+				FileExplorerItem f = fileDao.get(externalId, externalType);
+				fileDao.delete(f);
+				return new ServiceResult(f.getId(), "Deleted", Type.SUCCESS);
 			}
-
 		} catch (Exception err) {
 			log.error("[deleteFileOrFolderByExternalIdAndType]", err);
 		}
@@ -441,78 +152,48 @@ public class FileWebService {
 	}
 
 	/**
+	 * to add a folder to the private drive, set parentFileExplorerItemId = 0 and isOwner to 1/true and
+	 * externalUserId/externalUserType to a valid user
 	 * 
-	 * deletes files or folders based on it id
-	 * 
-	 * @param SID
-	 *            The SID of the User. This SID must be marked as logged in
-	 * @param fileId
-	 *            the id of the file or folder
-	 * @return - null
-	 */
-	public Long deleteFileOrFolder(String SID, Long fileId) throws ServiceException {
-
-		try {
-
-			Long userId = sessiondataDao.checkSession(SID);
-
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-
-				fileExplorerItemDao.delete(fileId);
-
-			}
-
-		} catch (Exception err) {
-			log.error("[deleteFileOrFolder]", err);
-		}
-		return null;
-	}
-
-	/**
-	 * 
-	 * deletes files or folders based on it id
-	 * 
-	 * @param SID
+	 * @param sid
 	 *            The SID of the User. This SID must be marked as logged in
-	 * @param fileId
-	 *            the id of the file or folder
-	 * @return - null
-	 */
-	public Long deleteFileOrFolderSelf(String SID, Long fileId) throws ServiceException {
-
-		try {
-
-			Long userId = sessiondataDao.checkSession(SID);
-
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-
-				// TODO: Check if user has access or not to the file
-
-				fileExplorerItemDao.delete(fileId);
-
+	 * @param file
+	 *            the The file to be added
+	 * @return - Object created
+	 * @throws ServiceException
+	 */
+	@WebMethod
+	@POST
+	@Path("/")
+	public FileExplorerItemDTO add(@WebParam(name="sid") @QueryParam("sid") String sid
+			, @Multipart(value = "file") @WebParam(name="file") FileExplorerItemDTO file
+			, @Multipart(value = "attach", type = "application/octet-stream", required = false) @WebParam(name="attach") InputStream attach //TODO check this
+			) throws ServiceException
+	{
+		try {
+			Long userId = sessionDao.checkSession(sid);
+
+			FileExplorerItem f = file == null ? null : file.get();
+			if (f == null || f.getId() != null) {
+				throw new ServiceException("Bad id");//TODO err code -1 ????
+			}
+			Set<Right> rights = userDao.getRights(userId);
+			if (AuthLevelUtil.hasWebServiceLevel(rights)
+					|| (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))
+			{
+				//TODO permissions
+				//TODO attachment
+				fileDao.update(f);
+				return new FileExplorerItemDTO(f);
+			} else {
+				throw new ServiceException("Insufficient permissins"); //TODO code -26
 			}
-
-		} catch (Exception err) {
-			log.error("[deleteFileOrFolder]", err);
-		}
-		return null;
-	}
-
-	/**
-	 * Get available import File Extension allowed during import
-	 * 
-	 * @return the array of the import file extensions
-	 * @throws ServiceException
-	 */
-	public String[] getImportFileExtensions() throws ServiceException {
-		try {
-
-			return StoredFile.getExtensions();
-
-		} catch (Exception err) {
-			log.error("[getImportFileExtensions]", err);
+		} catch (ServiceException e) {
+			throw e;
+		} catch (Exception e) {
+			log.error("[add]", e);
+			throw new ServiceException(e.getMessage());
 		}
-		return null;
 	}
 
 	/**
@@ -529,7 +210,7 @@ public class FileWebService {
 
 		try {
 
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
 
@@ -539,22 +220,22 @@ public class FileWebService {
 				File file = new File(working_dir, OmFileHelper.libraryFileName);
 
 				if (!file.exists()) {
-					throw new Exception(file.getCanonicalPath() + ": does not exist ");
+					throw new ServiceException(file.getCanonicalPath() + ": does not exist ");
 				}
 
 				return LoadLibraryPresentation.parseLibraryFileToObject(file);
 
 			} else {
 
-				throw new Exception("not Authenticated");
+				throw new ServiceException("not Authenticated");
 
 			}
-
+		} catch (ServiceException e) {
+			throw e;
 		} catch (Exception e) {
 			log.error("[getListOfFilesByAbsolutePath]", e);
 			return null;
 		}
-
 	}
 
 	/**
@@ -573,7 +254,7 @@ public class FileWebService {
 
 		try {
 
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
 
@@ -582,12 +263,12 @@ public class FileWebService {
 				FileExplorerObject fileExplorerObject = new FileExplorerObject();
 
 				// Home File List
-				List<FileExplorerItem> fList = fileExplorerItemDao.getByOwner(ownerId);
+				List<FileExplorerItem> fList = fileDao.getByOwner(ownerId);
 
 				long homeFileSize = 0;
 
 				for (FileExplorerItem homeChildExplorerItem : fList) {
-					log.debug("FileExplorerItem fList " + homeChildExplorerItem.getFileName());
+					log.debug("FileExplorerItem fList " + homeChildExplorerItem.getName());
 					homeFileSize += fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
 				}
 
@@ -595,12 +276,12 @@ public class FileWebService {
 				fileExplorerObject.setUserHomeSize(homeFileSize);
 
 				// Public File List
-				List<FileExplorerItem> rList = fileExplorerItemDao.getByRoom(roomId);
+				List<FileExplorerItem> rList = fileDao.getByRoom(roomId);
 
 				long roomFileSize = 0;
 
 				for (FileExplorerItem homeChildExplorerItem : rList) {
-					log.debug("FileExplorerItem rList " + homeChildExplorerItem.getFileName());
+					log.debug("FileExplorerItem rList " + homeChildExplorerItem.getName());
 					roomFileSize += fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
 				}
 
@@ -635,7 +316,7 @@ public class FileWebService {
 
 		try {
 
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 
 			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
 
@@ -644,12 +325,12 @@ public class FileWebService {
 				FileExplorerObject fileExplorerObject = new FileExplorerObject();
 
 				// Home File List
-				List<FileExplorerItem> fList = fileExplorerItemDao.getByOwner(userId);
+				List<FileExplorerItem> fList = fileDao.getByOwner(userId);
 
 				long homeFileSize = 0;
 
 				for (FileExplorerItem homeChildExplorerItem : fList) {
-					log.debug("FileExplorerItem fList " + homeChildExplorerItem.getFileName());
+					log.debug("FileExplorerItem fList " + homeChildExplorerItem.getName());
 					homeFileSize += fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
 				}
 
@@ -657,12 +338,12 @@ public class FileWebService {
 				fileExplorerObject.setUserHomeSize(homeFileSize);
 
 				// Public File List
-				List<FileExplorerItem> rList = fileExplorerItemDao.getByRoom(roomId);
+				List<FileExplorerItem> rList = fileDao.getByRoom(roomId);
 
 				long roomFileSize = 0;
 
 				for (FileExplorerItem homeChildExplorerItem : rList) {
-					log.debug("FileExplorerItem rList " + homeChildExplorerItem.getFileName());
+					log.debug("FileExplorerItem rList " + homeChildExplorerItem.getName());
 					roomFileSize += fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
 				}
 
@@ -704,7 +385,7 @@ public class FileWebService {
 
 		try {
 
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
 
@@ -712,12 +393,12 @@ public class FileWebService {
 
 				if (parentId == 0) {
 					if (isOwner) {
-						return fileExplorerItemDao.getByOwner(ownerId).toArray(new FileExplorerItem[0]);
+						return fileDao.getByOwner(ownerId).toArray(new FileExplorerItem[0]);
 					} else {
-						return fileExplorerItemDao.getByRoom(roomId).toArray(new FileExplorerItem[0]);
+						return fileDao.getByRoom(roomId).toArray(new FileExplorerItem[0]);
 					}
 				} else {
-					return fileExplorerItemDao.getByParent(parentId).toArray(new FileExplorerItem[0]);
+					return fileDao.getByParent(parentId).toArray(new FileExplorerItem[0]);
 				}
 
 			}
@@ -747,7 +428,7 @@ public class FileWebService {
 
 		try {
 
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 
 			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
 
@@ -755,12 +436,12 @@ public class FileWebService {
 
 				if (parentId == 0) {
 					if (isOwner) {
-						return fileExplorerItemDao.getByOwner(userId).toArray(new FileExplorerItem[0]);
+						return fileDao.getByOwner(userId).toArray(new FileExplorerItem[0]);
 					} else {
-						return fileExplorerItemDao.getByRoom(roomId).toArray(new FileExplorerItem[0]);
+						return fileDao.getByRoom(roomId).toArray(new FileExplorerItem[0]);
 					}
 				} else {
-					return fileExplorerItemDao.getByParent(parentId).toArray(new FileExplorerItem[0]);
+					return fileDao.getByParent(parentId).toArray(new FileExplorerItem[0]);
 				}
 			}
 		} catch (Exception err) {
@@ -785,13 +466,13 @@ public class FileWebService {
 
 		try {
 
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
 
-				log.debug("deleteFileOrFolder " + fileId);
+				log.debug("updateFileOrFolderName " + fileId);
 
-				fileExplorerItemDao.updateFileOrFolderName(fileId, fileName);
+				fileDao.updateFileOrFolderName(fileId, fileName);
 
 			}
 		} catch (Exception err) {
@@ -817,7 +498,7 @@ public class FileWebService {
 
 		try {
 
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 
 			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
 
@@ -829,9 +510,9 @@ public class FileWebService {
 				 * Exception( "This user is not the owner of the file and not allowed to edit its name" ); }
 				 */
 
-				log.debug("deleteFileOrFolder " + fileId);
+				log.debug("updateFileOrFolderSelf " + fileId);
 
-				fileExplorerItemDao.updateFileOrFolderName(fileId, fileName);
+				fileDao.updateFileOrFolderName(fileId, fileName);
 
 			}
 		} catch (Exception err) {
@@ -865,15 +546,15 @@ public class FileWebService {
 
 		try {
 
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
 
-				log.debug("deleteFileOrFolder " + fileId);
+				log.debug("moveFile " + fileId);
 
-				fileExplorerItemDao.moveFile(fileId, newParentId, roomId, isOwner, ownerId);
+				fileDao.moveFile(fileId, newParentId, roomId, isOwner, ownerId);
 
-				FileExplorerItem fileExplorerItem = fileExplorerItemDao.get(fileId);
+				FileExplorerItem fileExplorerItem = fileDao.get(fileId);
 
 				if (moveToHome) {
 					// set this file and all subfiles and folders the ownerId
@@ -915,7 +596,7 @@ public class FileWebService {
 
 		try {
 
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 
 			if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
 
@@ -923,9 +604,9 @@ public class FileWebService {
 
 				log.debug("moveFileSelf " + fileId);
 
-				fileExplorerItemDao.moveFile(fileId, newParentId, roomId, isOwner, userId);
+				fileDao.moveFile(fileId, newParentId, roomId, isOwner, userId);
 
-				FileExplorerItem fileExplorerItem = fileExplorerItemDao.get(fileId);
+				FileExplorerItem fileExplorerItem = fileDao.get(fileId);
 
 				if (moveToHome) {
 					// set this file and all subfiles and folders the ownerId

Modified: openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java Wed Nov 25 04:08:02 2015
@@ -217,11 +217,11 @@ public class RoomWebService {
 			} else {
 				throw new ServiceException("Insufficient permissins"); //TODO code -26
 			}
-		} catch (ServiceException err) {
-			throw err;
-		} catch (Exception err) {
-			log.error("add", err);
-			throw new ServiceException(err.getMessage());
+		} catch (ServiceException e) {
+			throw e;
+		} catch (Exception e) {
+			log.error("add", e);
+			throw new ServiceException(e.getMessage());
 		}
 	}
 	

Modified: openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java Wed Nov 25 04:08:02 2015
@@ -197,6 +197,8 @@ public class UserWebService {
 		}
 	}
 
+	//FIXME no update
+	
 	/**
 	 * 
 	 * Delete a certain user by its id
@@ -217,7 +219,7 @@ public class UserWebService {
 			Long authUserId = sessionDao.checkSession(sid);
 
 			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(authUserId))) {
-				userDao.deleteUserID(id);
+				userDao.delete(userDao.get(id), authUserId);
 
 				return new ServiceResult(id, "Deleted", Type.SUCCESS);
 			} else {
@@ -255,14 +257,12 @@ public class UserWebService {
 			Long authUserId = sessionDao.checkSession(sid);
 
 			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(authUserId))) {
-				User userExternal = userDao.getExternalUser(externalId, externalType);
-
-				Long userId = userExternal.getId();
+				User user = userDao.getExternalUser(externalId, externalType);
 
 				// Setting user deleted
-				userDao.deleteUserID(userId);
+				userDao.delete(user, authUserId);
 
-				return new ServiceResult(userId, "Deleted", Type.SUCCESS);
+				return new ServiceResult(user.getId(), "Deleted", Type.SUCCESS);
 			} else {
 				return new ServiceResult(-26L, "Insufficient permissins", Type.ERROR);
 			}

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/pom.xml?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/pom.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/pom.xml Wed Nov 25 04:08:02 2015
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.0-SNAPSHOT</version>
+		<version>4.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-core</artifactId>

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java Wed Nov 25 04:08:02 2015
@@ -339,10 +339,10 @@ public abstract class BaseConverter {
 	
 	public void convertToMp4(Recording r, List<ConverterProcessResult> returnLog) throws IOException {
 		//TODO add faststart, move filepaths to helpers
-		if (!isRecordingExists(r.getFileHash())) {
+		if (!isRecordingExists(r.getHash())) {
 			return;
 		}
-		File file = getRecording(r.getFileHash());
+		File file = getRecording(r.getHash());
 		String path = file.getCanonicalPath();
 		String mp4path = path + MP4_EXTENSION;
 		String[] argv = new String[] {

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java Wed Nov 25 04:08:02 2015
@@ -260,7 +260,7 @@ public class InterviewConverter extends
 			recording.setFlvWidth(2 * flvWidth);
 			recording.setFlvHeight(flvHeight);
 
-			recording.setFileHash(hashFileFullNameFlv);
+			recording.setHash(hashFileFullNameFlv);
 
 			// Extract first Image for preview purpose
 			// ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java Wed Nov 25 04:08:02 2015
@@ -144,7 +144,7 @@ public class RecordingConverter extends
 
 			returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_fullFLV));
 
-			recording.setFileHash(outputFullFlv.getName());
+			recording.setHash(outputFullFlv.getName());
 
 			// Extract first Image for preview purpose
 			// ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java Wed Nov 25 04:08:02 2015
@@ -61,7 +61,7 @@ public class FileProcessor {
 
 	public ConverterProcessResultList processFile(Long userId, Long roomId, 
 			boolean isOwner, InputStream is, Long parentFolderId, String fileSystemName, 
-			Long externalFileId, String externalType) throws Exception {
+			String externalFileId, String externalType) throws Exception {
 		
 		ConverterProcessResultList returnError = new ConverterProcessResultList();
 		

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=1716295&r1=1716294&r2=1716295&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 Wed Nov 25 04:08:02 2015
@@ -48,19 +48,19 @@ public class FileUtils {
 			File base = OmFileHelper.getUploadFilesDir();
 			if (Type.Image == file.getType()) {
 
-				File tFile = new File(base, file.getFileHash());
+				File tFile = new File(base, file.getHash());
 				if (tFile.exists()) {
 					fileSize += tFile.length();
 				}
 
-				File thumbFile = new File(base, thumbImagePrefix + file.getFileHash());
+				File thumbFile = new File(base, thumbImagePrefix + file.getHash());
 				if (thumbFile.exists()) {
 					fileSize += thumbFile.length();
 				}
 			}
 
 			if (Type.Presentation == file.getType()) {
-				File tFolder = new File(base, file.getFileHash());
+				File tFolder = new File(base, file.getHash());
 
 				if (tFolder.exists()) {
 					fileSize += OmFileHelper.getSize(tFolder);

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LoadLibraryPresentationToObject.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LoadLibraryPresentationToObject.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LoadLibraryPresentationToObject.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LoadLibraryPresentationToObject.java Wed Nov 25 04:08:02 2015
@@ -21,7 +21,7 @@ package org.apache.openmeetings.core.doc
 import java.util.Iterator;
 import java.util.LinkedList;
 
-import org.apache.openmeetings.db.dto.file.FilesObject;
+import org.apache.openmeetings.db.dto.file.FileExplorerItemDTO;
 import org.apache.openmeetings.db.dto.file.PresentationObject;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.dom4j.Document;
@@ -83,14 +83,14 @@ public class LoadLibraryPresentationToOb
 		}
 	}
 	
-	public FilesObject createListObjectLibraryByFileDocument(Element fileElement){
+	public FileExplorerItemDTO createListObjectLibraryByFileDocument(Element fileElement){
 		try {
 			
 			log.info("createListObjectLibraryByFileDocument"+fileElement);
-			FilesObject fileObject = new FilesObject();
-			fileObject.setFileName(fileElement.getText());
-			fileObject.setLastModified(fileElement.attribute("lastmod").getText());
-			fileObject.setFileBytes(fileElement.attribute("size").getText());
+			FileExplorerItemDTO fileObject = new FileExplorerItemDTO();
+			fileObject.setName(fileElement.getText());
+			//FIXME TODO fileObject.setLastModified(fileElement.attribute("lastmod").getText());
+			//FIXME TODO fileObject.setSize(fileElement.attribute("size").getText());
 			return fileObject;
 		} catch (Exception err) {
 			log.error("createListObjectLibraryByFileDocument",err);
@@ -98,20 +98,20 @@ public class LoadLibraryPresentationToOb
 		return null;
 	}		
 	
-	public LinkedList<FilesObject> createListObjectLibraryByFileDocumentThumbs(Element fileElement){
+	public LinkedList<FileExplorerItemDTO> createListObjectLibraryByFileDocumentThumbs(Element fileElement){
 		try {
 
-			LinkedList<FilesObject> thumbMap = new LinkedList<FilesObject>();
+			LinkedList<FileExplorerItemDTO> thumbMap = new LinkedList<FileExplorerItemDTO>();
 			
 			for (@SuppressWarnings("unchecked")
 			Iterator<Element> i = fileElement.elementIterator(); i.hasNext(); ) {
 				Element thumbElement = i.next();
 				log.info("createListObjectLibraryByFileDocumentThumbs"+thumbElement);
-				FilesObject singleThumb = new FilesObject();
-				singleThumb.setFileName(thumbElement.getName());
-				singleThumb.setFileNamePure(thumbElement.getText());
-				singleThumb.setLastModified(thumbElement.attribute("lastmod").getText());
-				singleThumb.setFileBytes(thumbElement.attribute("size").getText());
+				FileExplorerItemDTO singleThumb = new FileExplorerItemDTO();
+				singleThumb.setName(thumbElement.getName());
+				//FIXME TODO singleThumb.setFileNamePure(thumbElement.getText());
+				//FIXME TODO singleThumb.setLastModified(thumbElement.attribute("lastmod").getText());
+				//FIXME TODO singleThumb.setSize(thumbElement.attribute("size").getText());
 				thumbMap.add(singleThumb);
 			}
 			

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java Wed Nov 25 04:08:02 2015
@@ -145,7 +145,7 @@ public class ConferenceLibrary implement
 						false, // isPresentation
 						localFileName, // WML localFileName
 						true, // isStoredWML file
-						true, 0L, "");
+						true, "", "");
 
 				return fileExplorerId;
 			}

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java Wed Nov 25 04:08:02 2015
@@ -99,8 +99,8 @@ public class RecordingService implements
 
 			Recording recording = new Recording();
 
-			recording.setFileHash("");
-			recording.setFileName(roomRecordingName);
+			recording.setHash("");
+			recording.setName(roomRecordingName);
 			Long ownerId = client.getUserId();
 			if (ownerId != null && ownerId < 0) {
 				User c = userDao.get(-ownerId);

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/pom.xml?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/pom.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/pom.xml Wed Nov 25 04:08:02 2015
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.1.0-SNAPSHOT</version>
+		<version>4.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-db</artifactId>

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=1716295&r1=1716294&r2=1716295&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 Wed Nov 25 04:08:02 2015
@@ -42,293 +42,249 @@ import org.springframework.transaction.a
 @Transactional
 public class FileExplorerItemDao {
 
-    private static final Logger log = Red5LoggerFactory.getLogger(FileExplorerItemDao.class, webAppRootKey);
+	private static final Logger log = Red5LoggerFactory.getLogger(FileExplorerItemDao.class, webAppRootKey);
 	@PersistenceContext
 	private EntityManager em;
 
-    public Long add(String fileName, String fileHash,
-            Long parentItemId, Long ownerId, Long roomId,
-            Long insertedBy, Boolean isFolder, Boolean isImage,
-            Boolean isPresentation, String wmlFilePath,
-            Boolean isStoredWmlFile, Boolean isChart,
-            Long externalId, String externalType) {
-        log.debug(".add(): adding file " + fileName+ " roomID: "+roomId);
-        try {
-            FileExplorerItem fileItem = new FileExplorerItem();
-            fileItem.setFileName(fileName);
-            fileItem.setFileHash(fileHash);
-            fileItem.setDeleted(false);
-            fileItem.setParentItemId(parentItemId);
-            fileItem.setOwnerId(ownerId);
-            fileItem.setRoomId(roomId);
-            fileItem.setInserted(new Date());
-            fileItem.setInsertedBy(insertedBy);
-            Type t = null;
-            if (isStoredWmlFile) {
-            	t = Type.WmlFile;
-            }
-            if (isChart) {
-            	t = Type.PollChart;
-            }
-            if (isImage) {
-            	t = Type.Image;
-            }
-            if (isPresentation) {
-            	t = Type.Presentation;
-            }
-            if (isFolder) {
-            	t = Type.Folder;
-            }
-            fileItem.setType(t);
-            fileItem.setUpdated(new Date());
-            fileItem.setWmlFilePath(wmlFilePath);
-            fileItem.setExternalId(externalId);
-            fileItem.setExternalType(externalType);
+	public Long add(String fileName, String fileHash, Long parentId, Long ownerId, Long roomId, Long insertedBy,
+			Boolean isFolder, Boolean isImage, Boolean isPresentation, String wmlFilePath, Boolean isStoredWmlFile,
+			Boolean isChart, String externalId, String externalType) {
+		log.debug(".add(): adding file " + fileName + " roomID: " + roomId);
+		try {
+			FileExplorerItem fileItem = new FileExplorerItem();
+			fileItem.setName(fileName);
+			fileItem.setHash(fileHash);
+			fileItem.setDeleted(false);
+			fileItem.setParentId(parentId);
+			fileItem.setOwnerId(ownerId);
+			fileItem.setRoomId(roomId);
+			fileItem.setInserted(new Date());
+			fileItem.setInsertedBy(insertedBy);
+			Type t = null;
+			if (isStoredWmlFile) {
+				t = Type.WmlFile;
+			}
+			if (isChart) {
+				t = Type.PollChart;
+			}
+			if (isImage) {
+				t = Type.Image;
+			}
+			if (isPresentation) {
+				t = Type.Presentation;
+			}
+			if (isFolder) {
+				t = Type.Folder;
+			}
+			fileItem.setType(t);
+			fileItem.setUpdated(new Date());
+			fileItem.setWmlFilePath(wmlFilePath);
+			fileItem.setExternalId(externalId);
+			fileItem.setExternalType(externalType);
 
 			fileItem = em.merge(fileItem);
 			Long fileItemId = fileItem.getId();
 
-            log.debug(".add(): file " + fileName + " added as " + fileItemId);
-            return fileItemId;
-        } catch (Exception ex2) {
-            log.error(".add(): ", ex2);
-        }
-        return null;
-    }
-    
-    public Long addFileExplorerItem(FileExplorerItem fileItem) {
-        try {
+			log.debug(".add(): file " + fileName + " added as " + fileItemId);
+			return fileItemId;
+		} catch (Exception ex2) {
+			log.error(".add(): ", ex2);
+		}
+		return null;
+	}
+
+	public Long addFileExplorerItem(FileExplorerItem fileItem) {
+		try {
 
 			fileItem = em.merge(fileItem);
 			Long fileItemId = fileItem.getId();
 
-            return fileItemId;
-        } catch (Exception ex2) {
-            log.error("[addFileExplorerItem]", ex2);
-        }
-        return null;
-    }
+			return fileItemId;
+		} catch (Exception ex2) {
+			log.error("[addFileExplorerItem]", ex2);
+		}
+		return null;
+	}
 
 	public List<FileExplorerItem> getFileExplorerItemsByRoomAndOwner(Long roomId, Long ownerId) {
-        log.debug(".getFileExplorerItemsByRoomAndOwner() started");
-        try {
+		log.debug(".getFileExplorerItemsByRoomAndOwner() started");
+		try {
 			TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFilesByRoomAndOwner", FileExplorerItem.class);
-			query.setParameter("roomId",roomId);
-			query.setParameter("ownerId",ownerId);
-			
+			query.setParameter("roomId", roomId);
+			query.setParameter("ownerId", ownerId);
+
 			List<FileExplorerItem> fileExplorerList = query.getResultList();
 
-            return fileExplorerList;
-        } catch (Exception ex2) {
-            log.error("[getFileExplorerItemsByRoomAndOwner]: ", ex2);
-        }
-        return null;
-    }
+			return fileExplorerList;
+		} catch (Exception ex2) {
+			log.error("[getFileExplorerItemsByRoomAndOwner]: ", ex2);
+		}
+		return null;
+	}
 
-    public List<FileExplorerItem> getByRoom(Long roomId) {
-        log.debug("getFileExplorerItemsByRoom roomId :: "+roomId);
+	public List<FileExplorerItem> getByRoom(Long roomId) {
+		log.debug("getFileExplorerItemsByRoom roomId :: " + roomId);
 		TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFilesByRoom", FileExplorerItem.class);
-		query.setParameter("roomId",roomId);
-		
+		query.setParameter("roomId", roomId);
+
 		return query.getResultList();
-    }
+	}
 
-    public List<FileExplorerItem> getByOwner(Long ownerId) {
-        log.debug(".getFileExplorerItemsByOwner() started");
+	public List<FileExplorerItem> getByOwner(Long ownerId) {
+		log.debug("getByOwner() started");
 		TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFilesByOwner", FileExplorerItem.class);
-		query.setParameter("ownerId",ownerId);
-		
-        return query.getResultList();
-    }
+		query.setParameter("ownerId", ownerId);
 
-    public List<FileExplorerItem> getByParent(Long parentId) {
-        log.debug(".getFileExplorerItemsByParent() started");
+		return query.getResultList();
+	}
+
+	public List<FileExplorerItem> getByParent(Long parentId) {
+		log.debug("getByParent() started");
 		TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFilesByParent", FileExplorerItem.class);
-		query.setParameter("parentItemId", parentId);
-		
-        return query.getResultList();
-    }
-
-    public FileExplorerItem getFileExplorerItemsByHash(String hash) {
-        try {
-
-			TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFileByHash", FileExplorerItem.class);
-			query.setParameter("fileHash", hash);
-			
-			FileExplorerItem fileExplorerList = null;
-			try {
-				fileExplorerList = query.getSingleResult();
-		    } catch (NoResultException ex) {
-		    }
-
-            return fileExplorerList;
-        } catch (Exception ex2) {
-            log.error("[getFileExplorerItemsById]: ", ex2);
-        }
-        return null;
-    }
-    
-    public FileExplorerItem get(Long fileId) {
-        try {
-
-			TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFileById", FileExplorerItem.class);
-			query.setParameter("id", fileId);
-			
-			FileExplorerItem fileExplorerList = null;
+		query.setParameter("parentId", parentId);
+
+		return query.getResultList();
+	}
+
+	public FileExplorerItem getByHash(String hash) {
+		log.debug("getByHash() started");
+		FileExplorerItem f = null;
+		TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFileByHash", FileExplorerItem.class);
+		query.setParameter("hash", hash);
+
+		try {
+			f = query.getSingleResult();
+		} catch (NoResultException ex) {
+			//no-op
+		}
+		return f;
+	}
+
+	public FileExplorerItem get(Long id) {
+		FileExplorerItem f = null;
+		if (id != null && id > 0) {
+			TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFileById", FileExplorerItem.class)
+					.setParameter("id", id);
+
 			try {
-				fileExplorerList = query.getSingleResult();
-		    } catch (NoResultException ex) {
-		    }
-
-            return fileExplorerList;
-        } catch (Exception ex2) {
-            log.error("[getFileExplorerItemsById]: ", ex2);
-        }
-        return null;
-    }
-    
-    public FileExplorerItem getFileExplorerItemsByExternalIdAndType(Long externalFileId, String externalType) {
-        log.debug(".getFileExplorerItemsByExternalIdAndType() started");
-
-        try {
-			TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFileExternal", FileExplorerItem.class);
-			query.setParameter("externalFileId", externalFileId);
-			query.setParameter("externalType", externalType);
-			
-			FileExplorerItem fileExplorerList = null;
+				f = query.getSingleResult();
+			} catch (NoResultException ex) {
+			}
+		} else {
+			log.info("[get] " + "Info: No id given");
+		}
+		return f;
+	}
+
+	public FileExplorerItem get(String externalId, String externalType) {
+		FileExplorerItem f = null;
+		log.debug("get started");
+
+		try {
+			TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFileExternal", FileExplorerItem.class)
+					.setParameter("externalFileId", externalId).setParameter("externalType", externalType);
+
 			try {
-				fileExplorerList = query.getSingleResult();
-		    } catch (NoResultException ex) {
-		    }
-
-            return fileExplorerList;
-        } catch (Exception ex2) {
-            log.error("[getFileExplorerItemsByExternalIdAndType]: ", ex2);
-        }
-        return null;
-    }
-
-    public List<FileExplorerItem> getFileExplorerItems() {
-        log.debug(".getFileExplorerItems() started");
-
-        try {
-			TypedQuery<FileExplorerItem> query = em.createNamedQuery("getAllFiles", FileExplorerItem.class);
-
-            List<FileExplorerItem> fileExplorerList = query.getResultList();
-
-            return fileExplorerList;
-        } catch (Exception ex2) {
-            log.error("[getFileExplorerItems]: ", ex2);
-        }
-        return null;
-    }    
-
-    /**
-     * @param fileId
-     */
-    public void delete(Long fileId) {
-        log.debug(".delete() started");
-        delete(get(fileId));
-    }
-    
-    public void delete(FileExplorerItem f) {
-        f.setDeleted(true);
-        f.setUpdated(new Date());
-
-        update(f);
-    }
-    
-    public void deleteFileExplorerItemByExternalIdAndType(Long externalFilesid, String externalType) {
-        log.debug(".deleteFileExplorerItemByExternalIdAndType() started");
-
-        try {
-
-            FileExplorerItem fId = getFileExplorerItemsByExternalIdAndType(externalFilesid, externalType);
-
-            if (fId == null) {
-            	throw new Exception("externalFilesid: "+externalFilesid+" and externalType: "+externalType+" Not found");
-            }
-            
-            fId.setDeleted(true);
-            fId.setUpdated(new Date());
-
-            update(fId);
-        } catch (Exception ex2) {
-            log.error("[deleteFileExplorerItemByExternalIdAndType]: ", ex2);
-        }
-    }
-
-    /**
-     * @param fileId
-     * @param fileName
-     */
-    public void updateFileOrFolderName(Long fileId, String fileName) {
-        log.debug(".updateFileOrFolderName() started");
-
-        try {
-
-            FileExplorerItem fId = get(fileId);
-
-            fId.setFileName(fileName);
-            fId.setUpdated(new Date());
-
-            update(fId);
-        } catch (Exception ex2) {
-            log.error("[updateFileOrFolderName]: ", ex2);
-        }
-    }
+				f = query.getSingleResult();
+			} catch (NoResultException ex) {
+			}
+
+		} catch (Exception ex2) {
+			log.error("[get]: ", ex2);
+		}
+		return f;
+	}
+
+	public List<FileExplorerItem> get() {
+		log.debug("get started");
+
+		return em.createNamedQuery("getAllFiles", FileExplorerItem.class).getResultList();
+	}
+
+	public void delete(FileExplorerItem f) {
+		f.setDeleted(true);
+		f.setUpdated(new Date());
+
+		update(f);
+	}
 
-    public FileExplorerItem update(FileExplorerItem f) {
-        // fId.setUpdated(new Date());
+	public void delete(String externalId, String externalType) {
+		log.debug("delete started");
+
+		delete(get(externalId, externalType));
+	}
+
+	/**
+	 * @param id
+	 * @param name
+	 */
+	public void updateFileOrFolderName(Long id, String name) {
+		log.debug(".updateFileOrFolderName() started");
+
+		try {
+
+			FileExplorerItem fId = get(id);
+
+			fId.setName(name);
+			fId.setUpdated(new Date());
+
+			update(fId);
+		} catch (Exception ex2) {
+			log.error("[updateFileOrFolderName]: ", ex2);
+		}
+	}
+
+	public FileExplorerItem update(FileExplorerItem f) {
+		// fId.setUpdated(new Date());
 
 		if (f.getId() == null) {
 			em.persist(f);
-	    } else {
-	    	if (!em.contains(f)) {
-	    		f = em.merge(f);
-		    }
+		} else {
+			if (!em.contains(f)) {
+				f = em.merge(f);
+			}
 		}
 		return f;
-    }
+	}
 
-    /**
-     * @param fileId
-     * @param newParentFileExplorerItemId
-     * @param isOwner
-     */
-    public void moveFile(Long fileId, Long parentId, Long roomId, Boolean isOwner, Long ownerId) {
-        log.debug(".moveFile() started");
-        try {
-
-            FileExplorerItem fId = get(fileId);
-
-            fId.setParentItemId(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);
-            }
+	/**
+	 * @param fileId
+	 * @param newParentFileExplorerItemId
+	 * @param isOwner
+	 */
+	public void moveFile(Long fileId, Long parentId, Long roomId, Boolean isOwner, Long ownerId) {
+		log.debug(".moveFile() started");
+		try {
+
+			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());
+			fId.setUpdated(new Date());
 
 			if (fId.getId() == null) {
 				em.persist(fId);
-		    } else {
-		    	if (!em.contains(fId)) {
-		    		em.merge(fId);
-			    }
+			} else {
+				if (!em.contains(fId)) {
+					em.merge(fId);
+				}
 			}
-        } catch (Exception ex2) {
-            log.error("[updateFileOrFolderName]: ", ex2);
-        }
-    }
+		} catch (Exception ex2) {
+			log.error("[updateFileOrFolderName]: ", ex2);
+		}
+	}
 
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java Wed Nov 25 04:08:02 2015
@@ -77,7 +77,7 @@ public class RecordingDao {
 	public Recording getByHash(String hash) {
 		try {
 			TypedQuery<Recording> query = em.createNamedQuery("getRecordingByHash", Recording.class);
-			query.setParameter("fileHash", hash);
+			query.setParameter("hash", hash);
 
 			try {
 				return query.getSingleResult();
@@ -85,7 +85,7 @@ public class RecordingDao {
 				// noop
 			}
 		} catch (Exception ex2) {
-			log.error("[getRecordingByHash]: ", ex2);
+			log.error("[getByHash]: ", ex2);
 		}
 		return null;
 	}
@@ -280,8 +280,8 @@ public class RecordingDao {
 	private long getSize(Recording r) {
 		long size = 0;
 
-		if (isRecordingExists(r.getFileHash())) {
-			size += getRecording(r.getFileHash()).length();
+		if (isRecordingExists(r.getHash())) {
+			size += getRecording(r.getHash()).length();
 		}
 		if (isRecordingExists(r.getAlternateDownload())) {
 			size += getRecording(r.getAlternateDownload()).length();
@@ -289,11 +289,11 @@ public class RecordingDao {
 		if (isRecordingExists(r.getPreviewImage())) {
 			size += getRecording(r.getPreviewImage()).length();
 		}
-		if (isRecordingExists(r.getFileHash() + MP4_EXTENSION)) {
-			size += getMp4Recording(r.getFileHash()).length();
+		if (isRecordingExists(r.getHash() + MP4_EXTENSION)) {
+			size += getMp4Recording(r.getHash()).length();
 		}
-		if (isRecordingExists(r.getFileHash() + OGG_EXTENSION)) {
-			size += getOggRecording(r.getFileHash()).length();
+		if (isRecordingExists(r.getHash() + OGG_EXTENSION)) {
+			size += getOggRecording(r.getHash()).length();
 		}
 		for (Recording rec : getByParent(r.getId())) {
 			size += getSize(rec);

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java Wed Nov 25 04:08:02 2015
@@ -240,17 +240,13 @@ public class UserDao implements IDataPro
 		return u;
 	}
 	
-	public void delete(User u, Long userId) {
-		deleteUserID(u.getId());
-	}
-
 	public User get(long id) {
 		return get(id, false);
 	}
 	
-	private User get(long id, boolean force) {
+	private User get(Long id, boolean force) {
 		User u = null;
-		if (id > 0) {
+		if (id != null && id > 0) {
 			OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
 			boolean qrce = oem.getFetchPlan().getQueryResultCacheEnabled();
 			oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
@@ -273,35 +269,22 @@ public class UserDao implements IDataPro
 		return u;
 	}
 
-	public Long deleteUserID(long userId) {
-		try {
-			if (userId != 0) {
-				User us = get(userId);
-				for (GroupUser ou : us.getGroupUsers()){
-					em.remove(ou);
-				}
-				us.setGroupUsers(null);
-				us.setDeleted(true);
-				us.setUpdated(new Date());
-				us.setSipUser(null);
-				Address adr = us.getAddress();
-				if (adr != null) {
-					adr.setDeleted(true);
-				}
-
-				if (us.getId() == null) {
-					em.persist(us);
-				} else {
-					if (!em.contains(us)) {
-						em.merge(us);
-					}
-				}
-				return us.getId();
+	public void delete(User u, Long userId) {
+		if (u != null && u.getId() != null) {
+			for (GroupUser ou : u.getGroupUsers()){
+				em.remove(ou);
+			}
+			u.setGroupUsers(null);
+			u.setDeleted(true);
+			u.setUpdated(new Date());
+			u.setSipUser(null);
+			Address adr = u.getAddress();
+			if (adr != null) {
+				adr.setDeleted(true);
 			}
-		} catch (Exception ex2) {
-			log.error("[deleteUserID]", ex2);
+
+			update(u, userId);
 		}
-		return null;
 	}
 
 	public List<User> get(Collection<Long> ids) {

Copied: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java (from r1716294, openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FilesObject.java)
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java?p2=openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java&p1=openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FilesObject.java&r1=1716294&r2=1716295&rev=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FilesObject.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java Wed Nov 25 04:08:02 2015
@@ -18,58 +18,132 @@
  */
 package org.apache.openmeetings.db.dto.file;
 
+import java.io.Serializable;
+import java.util.ArrayList;
+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;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
+
 /**
  * This Object will represent a File on the File-System
+ * 
  * @author sebastianwagner
  *
  */
-public class FilesObject {
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class FileExplorerItemDTO implements Serializable {
+	private static final long serialVersionUID = 1L;
+	private Long id;
+	private String name;
+	private Long parentId;
+	private Long roomId;
+	private Long size;
+	private String externalId;
+	private String externalType;
+	private Type type;
+
+	public FileExplorerItemDTO() {}
+
+	public FileExplorerItemDTO(FileExplorerItem f) {
+		id = f.getId();
+		name = f.getName();
+		parentId = f.getParentId();
+		roomId = f.getRoomId();
+		size = f.getSize();
+		externalId = f.getExternalId();
+		externalType = f.getExternalType();
+		type = f.getType();
+	}
 	
-	private String fileName;
-	private String fileNamePure;
-	private String fileNameExt;
-	private String lastModified;
-	private String fileBytes;
-	private String isimage;
+	public FileExplorerItem get() {
+		FileExplorerItem f = new FileExplorerItem();
+		f.setId(id);
+		f.setName(name);
+		f.setParentId(parentId);
+		f.setRoomId(roomId);
+		f.setSize(size);
+		f.setExternalId(externalId);
+		f.setExternalType(externalType);
+		f.setType(type);
+		return f;
+	}
 	
-	public FilesObject() {}
+	public Long getId() {
+		return id;
+	}
 	
-	public String getFileName() {
-		return fileName;
+	public void setId(Long id) {
+		this.id = id;
+	}
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String fileName) {
+		this.name = fileName;
+	}
+
+	public Long getParentId() {
+		return parentId;
+	}
+
+	public void setParentId(Long parentId) {
+		this.parentId = parentId;
 	}
-	public void setFileName(String fileName) {
-		this.fileName = fileName;
+
+	public Long getRoomId() {
+		return roomId;
 	}
-	public String getFileNamePure() {
-		return fileNamePure;
+
+	public void setRoomId(Long roomId) {
+		this.roomId = roomId;
 	}
-	public void setFileNamePure(String fileNamePure) {
-		this.fileNamePure = fileNamePure;
+
+	public Long getSize() {
+		return size;
 	}
-	public String getFileNameExt() {
-		return fileNameExt;
+
+	public void setSize(Long size) {
+		this.size = size;
 	}
-	public void setFileNameExt(String fileNameExt) {
-		this.fileNameExt = fileNameExt;
+
+	public String getExternalId() {
+		return externalId;
 	}
-	public String getLastModified() {
-		return lastModified;
+
+	public void setExternalId(String externalId) {
+		this.externalId = externalId;
 	}
-	public void setLastModified(String lastModified) {
-		this.lastModified = lastModified;
+
+	public String getExternalType() {
+		return externalType;
 	}
-	public String getFileBytes() {
-		return fileBytes;
+
+	public void setExternalType(String externalType) {
+		this.externalType = externalType;
 	}
-	public void setFileBytes(String fileBytes) {
-		this.fileBytes = fileBytes;
+
+	public Type getType() {
+		return type;
 	}
-	public String getIsimage() {
-		return isimage;
+
+	public void setType(Type type) {
+		this.type = type;
 	}
-	public void setIsimage(String isimage) {
-		this.isimage = isimage;
+
+	public static List<FileExplorerItemDTO> list(List<FileExplorerItem> l) {
+		List<FileExplorerItemDTO> list = new ArrayList<>();
+		if (l != null) {
+			for (FileExplorerItem f : l) {
+				list.add(new FileExplorerItemDTO(f));
+			}
+		}
+		return list;
 	}
-	
-	
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/LiberaryObject.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/LiberaryObject.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/LiberaryObject.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/LiberaryObject.java Wed Nov 25 04:08:02 2015
@@ -29,17 +29,17 @@ public class LiberaryObject {
 	//These Objects here should only be initialized if needed, 
 	//an empty LinkedList thorws a ServiceInvokationTarget-Exception (makes no sense to me but it
 	//is the way in Axis2 1.3
-	private LinkedList<FilesObject> filesList;
+	private LinkedList<FileExplorerItemDTO> filesList;
 	private LinkedList<FoldersObject> foldersList;
 	private PresentationObject presentationObject;
 	private String error;
 	
 	public LiberaryObject() {}
 	
-	public LinkedList<FilesObject> getFilesList() {
+	public LinkedList<FileExplorerItemDTO> getFilesList() {
 		return filesList;
 	}
-	public void setFilesList(LinkedList<FilesObject> filesList) {
+	public void setFilesList(LinkedList<FileExplorerItemDTO> filesList) {
 		this.filesList = filesList;
 	}
 	public LinkedList<FoldersObject> getFoldersList() {

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/LibraryPresentation.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/LibraryPresentation.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/LibraryPresentation.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/LibraryPresentation.java Wed Nov 25 04:08:02 2015
@@ -19,37 +19,42 @@
 package org.apache.openmeetings.db.dto.file;
 
 public class LibraryPresentation {
-
 	private LibraryPresentationFile originalDocument = null;
 	private LibraryPresentationFile pdfDocument = null;
 	private LibraryPresentationFile swfDocument = null;
 	private LibraryPresenationThumbs thumbs = null;
-	
+
 	public LibraryPresentation() {}
-	
+
 	public LibraryPresentationFile getOriginalDocument() {
 		return originalDocument;
 	}
+
 	public void setOriginalDocument(LibraryPresentationFile originalDocument) {
 		this.originalDocument = originalDocument;
 	}
+
 	public LibraryPresentationFile getPdfDocument() {
 		return pdfDocument;
 	}
+
 	public void setPdfDocument(LibraryPresentationFile pdfDocument) {
 		this.pdfDocument = pdfDocument;
 	}
+
 	public LibraryPresentationFile getSwfDocument() {
 		return swfDocument;
 	}
+
 	public void setSwfDocument(LibraryPresentationFile swfDocument) {
 		this.swfDocument = swfDocument;
 	}
+
 	public LibraryPresenationThumbs getThumbs() {
 		return thumbs;
 	}
+
 	public void setThumbs(LibraryPresenationThumbs thumbs) {
 		this.thumbs = thumbs;
 	}
-	
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/PresentationObject.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/PresentationObject.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/PresentationObject.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/PresentationObject.java Wed Nov 25 04:08:02 2015
@@ -26,35 +26,35 @@ import java.util.LinkedList;
  */
 public class PresentationObject {
 	
-	private FilesObject originalDocument;
-	private FilesObject pdfDocument;
-	private FilesObject swfDocument;
-	LinkedList<FilesObject> thumbs;
+	private FileExplorerItemDTO originalDocument;
+	private FileExplorerItemDTO pdfDocument;
+	private FileExplorerItemDTO swfDocument;
+	LinkedList<FileExplorerItemDTO> thumbs;
 
 	public PresentationObject() {}
 	
-	public FilesObject getOriginalDocument() {
+	public FileExplorerItemDTO getOriginalDocument() {
 		return originalDocument;
 	}
-	public void setOriginalDocument(FilesObject originalDocument) {
+	public void setOriginalDocument(FileExplorerItemDTO originalDocument) {
 		this.originalDocument = originalDocument;
 	}
-	public FilesObject getPdfDocument() {
+	public FileExplorerItemDTO getPdfDocument() {
 		return pdfDocument;
 	}
-	public void setPdfDocument(FilesObject pdfDocument) {
+	public void setPdfDocument(FileExplorerItemDTO pdfDocument) {
 		this.pdfDocument = pdfDocument;
 	}
-	public FilesObject getSwfDocument() {
+	public FileExplorerItemDTO getSwfDocument() {
 		return swfDocument;
 	}
-	public void setSwfDocument(FilesObject swfDocument) {
+	public void setSwfDocument(FileExplorerItemDTO swfDocument) {
 		this.swfDocument = swfDocument;
 	}
-	public LinkedList<FilesObject> getThumbs() {
+	public LinkedList<FileExplorerItemDTO> getThumbs() {
 		return thumbs;
 	}
-	public void setThumbs(LinkedList<FilesObject> thumbs) {
+	public void setThumbs(LinkedList<FileExplorerItemDTO> thumbs) {
 		this.thumbs = thumbs;
 	}
 	

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java Wed Nov 25 04:08:02 2015
@@ -49,8 +49,8 @@ public class RecordingDTO implements Ser
 	
 	public RecordingDTO(Recording r) {
 		this.id = r.getId();
-		this.name = r.getFileName();
-		this.flvName = r.getFileHash();
+		this.name = r.getName();
+		this.flvName = r.getHash();
 		this.aviName = r.getAlternateDownload();
 		this.roomId = r.getRoomId();
 		this.status = r.getStatus().name();
@@ -150,12 +150,12 @@ public class RecordingDTO implements Ser
 	}
 	
 	public static List<RecordingDTO> list(List<Recording> l) {
-		List<RecordingDTO> rList = new ArrayList<RecordingDTO>();
+		List<RecordingDTO> list = new ArrayList<>();
 		if (l != null) {
 			for (Recording r : l) {
-				rList.add(new RecordingDTO(r));
+				list.add(new RecordingDTO(r));
 			}
 		}
-		return rList;
+		return list;
 	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java Wed Nov 25 04:08:02 2015
@@ -23,10 +23,10 @@ import java.util.Map;
 
 public class WhiteboardObjectList {
 	private Long roomId;
-	private Map<Long,WhiteboardObject> whiteboardObjects = new HashMap<Long,WhiteboardObject>();
-	
+	private Map<Long, WhiteboardObject> whiteboardObjects = new HashMap<Long, WhiteboardObject>();
+
 	public WhiteboardObjectList() {}
-	
+
 	public Long getRoomId() {
 		return roomId;
 	}

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java Wed Nov 25 04:08:02 2015
@@ -34,17 +34,16 @@ import org.simpleframework.xml.Root;
 @NamedQueries({
 	@NamedQuery(name = "getAllFiles", query = "SELECT c FROM FileExplorerItem c ORDER BY c.id")
 	, @NamedQuery(name = "getFileById", query = "SELECT c FROM FileExplorerItem c WHERE c.id = :id")
-	, @NamedQuery(name = "getFileByHash", query = "SELECT c FROM FileExplorerItem c WHERE c.fileHash = :fileHash")
+	, @NamedQuery(name = "getFileByHash", query = "SELECT c FROM FileExplorerItem c WHERE c.hash = :hash")
 	, @NamedQuery(name = "getFilesByRoomAndOwner", query = "SELECT c FROM FileExplorerItem c WHERE c.deleted = false "
-			+ " AND c.roomId = :roomId AND c.ownerId = :ownerId ORDER BY c.type ASC, c.fileName ")
+			+ " AND c.roomId = :roomId AND c.ownerId = :ownerId ORDER BY c.type ASC, c.name ")
 	, @NamedQuery(name = "getFilesByRoom", query = "SELECT c FROM FileExplorerItem c WHERE c.deleted = false AND c.roomId = :roomId " +
-			"AND c.ownerId IS NULL AND c.parentItemId IS NULL ORDER BY c.type ASC, c.fileName ")
+			"AND c.ownerId IS NULL AND c.parentId IS NULL ORDER BY c.type ASC, c.name ")
 	, @NamedQuery(name = "getFilesByOwner", query = "SELECT c FROM FileExplorerItem c WHERE c.deleted = false AND c.ownerId = :ownerId "
-			+ "AND c.parentItemId IS NULL ORDER BY c.type ASC, c.fileName ")
+			+ "AND c.parentId IS NULL ORDER BY c.type ASC, c.name ")
 	, @NamedQuery(name = "getFilesByParent", query = "SELECT c FROM FileExplorerItem c WHERE c.deleted = false "
-			+ "AND c.parentItemId = :parentItemId ORDER BY c.type ASC, c.fileName ")
-	, @NamedQuery(name = "getFileExternal", query = "SELECT c FROM FileExplorerItem c WHERE c.externalFileId = :externalFileId "
-			+ "AND c.externalType LIKE :externalType")
+			+ "AND c.parentId = :parentId ORDER BY c.type ASC, c.name ")
+	, @NamedQuery(name = "getFileExternal", query = "SELECT c FROM FileExplorerItem c WHERE c.externalId = :externalId AND c.externalType LIKE :externalType")
 })
 @Table(name = "fileexploreritem")
 @Root
@@ -58,14 +57,14 @@ public class FileExplorerItem extends Fi
 
 	@Column(name = "filesize")
 	@Element(data = true, required = false)
-	private Long fileSize;
+	private Long size;
 
 	@Column(name = "wml_file_path")
 	@Element(data = true, required = false)
 	private String wmlFilePath;
 
-	@Column(name = "external_file_id")
-	private Long externalId;
+	@Column(name = "external_id")
+	private String externalId;
 
 	@Column(name = "external_type")
 	private String externalType;
@@ -78,12 +77,12 @@ public class FileExplorerItem extends Fi
 		this.id = id;
 	}
 
-	public Long getFileSize() {
-		return fileSize;
+	public Long getSize() {
+		return size;
 	}
 
-	public void setFileSize(Long fileSize) {
-		this.fileSize = fileSize;
+	public void setSize(Long fileSize) {
+		this.size = fileSize;
 	}
 
 	public String getWmlFilePath() {
@@ -94,11 +93,11 @@ public class FileExplorerItem extends Fi
 		this.wmlFilePath = wmlFilePath;
 	}
 
-	public Long getExternalId() {
+	public String getExternalId() {
 		return externalId;
 	}
 
-	public void setExternalId(Long externalId) {
+	public void setExternalId(String externalId) {
 		this.externalId = externalId;
 	}
 

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java?rev=1716295&r1=1716294&r2=1716295&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java Wed Nov 25 04:08:02 2015
@@ -39,17 +39,17 @@ public abstract class FileItem implement
 		Folder, Image, PollChart, Presentation, Recording, Video, WmlFile
 	}
 
-	@Column(name = "filename")
-	@Element(data = true, required = false)
-	private String fileName;
-
-	@Column(name = "filehash")
-	@Element(data = true, required = false)
-	private String fileHash;
+	@Column(name = "name")
+	@Element(name = "fileName", data = true, required = false)
+	private String name;
+
+	@Column(name = "hash")
+	@Element(name = "fileHash", data = true, required = false)
+	private String hash;
 
-	@Column(name = "parent_fileexploreritem_id")
+	@Column(name = "parent_item_id")
 	@Element(data = true, name = "parentFileExplorerItemId", required = false)
-	private Long parentItemId;
+	private Long parentId;
 
 	@Column(name = "room_id")
 	@Element(data = true, required = false, name = "room_id")
@@ -94,28 +94,28 @@ public abstract class FileItem implement
 	@Enumerated(EnumType.STRING)
 	private Type type;
 
-	public String getFileName() {
-		return fileName;
+	public String getName() {
+		return name;
 	}
 
-	public void setFileName(String fileName) {
-		this.fileName = fileName;
+	public void setName(String name) {
+		this.name = name;
 	}
 
-	public String getFileHash() {
-		return fileHash;
+	public String getHash() {
+		return hash;
 	}
 
-	public void setFileHash(String fileHash) {
-		this.fileHash = fileHash;
+	public void setHash(String hash) {
+		this.hash = hash;
 	}
 
-	public Long getParentItemId() {
-		return parentItemId;
+	public Long getParentId() {
+		return parentId;
 	}
 
-	public void setParentItemId(Long parentItemId) {
-		this.parentItemId = parentItemId;
+	public void setParentId(Long parentId) {
+		this.parentId = parentId;
 	}
 
 	public Long getRoomId() {