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=1712911&r1=1712910&r2=1712911&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 Fri Nov 6 06:18:44 2015 @@ -26,7 +26,14 @@ import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.util.LinkedHashMap; +import java.util.List; +import javax.jws.WebService; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import org.apache.cxf.feature.Features; import org.apache.openmeetings.core.data.file.FileProcessor; import org.apache.openmeetings.core.data.file.FileUtils; import org.apache.openmeetings.core.documents.LoadLibraryPresentation; @@ -56,7 +63,12 @@ import org.springframework.beans.factory * @webservice FileService * */ +@WebService(serviceName="org.apache.openmeetings.webservice.FileWebService") +@Features(features = "org.apache.cxf.feature.LoggingFeature") +@Produces({MediaType.APPLICATION_JSON}) +@Path("/file") public class FileWebService { + private static final Logger log = Red5LoggerFactory.getLogger(FileWebService.class, webAppRootKey); @Autowired private SessiondataDao sessiondataDao; @@ -73,76 +85,65 @@ public class FileWebService { * * 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 room_id = 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 room_id = openmeetings - * room id isOwner = 1 parentFolderId = -2 + * 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 * - * @param SID The logged in session id with minimum webservice level + * 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 => If the file should goto a private - * section of any user, this number needs to be set + * the external user id => 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 room_id - * the room Id, if the file goes to the private folder of an - * user, you can set a random number here + * @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 + * 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 + * 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 + * specify a parentFolderId==-2 AND isOwner == 1/true AND to make the file goto the private section * @param fileSystemName * the filename => Important WITH file extension! - * + * * @return - array of file import errors * @throws ServiceException */ - public FileImportError[] importFile(String SID, String externalUserId, - Long externalFileId, String externalType, Long room_id, - boolean isOwner, String path, Long parentFolderId, - String fileSystemName) 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 users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) { + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { URL url = new URL(path); URLConnection uc = url.openConnection(); - InputStream inputstream = new BufferedInputStream( - uc.getInputStream()); + 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.getUser_id(), room_id, - isOwner, inputstream, parentFolderId, - fileSystemName, - externalFileId, externalType); + 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 - .getFileExplorerItemsById(returnError.getFileExplorerItemId())); + 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 + + // FIXME: Send event to UI that there is a new file return returnError.convertToFileImportErrors(); @@ -156,77 +157,65 @@ public class FileWebService { /** * 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 room_id = 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 room_id = openmeetings - * room id isOwner = 1 parentFolderId = -2 + * 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 => If the file should goto a private - * section of any user, this number needs to be se + * the openmeetings user id => 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 room_id - * the room Id, if the file goes to the private folder of an - * user, you can set a random number here + * @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 + * 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 + * 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 + * specify a parentFolderId==-2 AND isOwner == 1/true AND to make the file goto the private section * @param fileSystemName * the filename => Important WITH file extension! - * + * * @return - array of file import errors * @throws ServiceException */ - public FileImportError[] importFileByInternalUserId(String SID, - Long internalUserId, Long externalFileId, String externalType, - Long room_id, boolean isOwner, String path, Long parentFolderId, - String fileSystemName) 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 users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) { + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { URL url = new URL(path); URLConnection uc = url.openConnection(); - InputStream inputstream = new BufferedInputStream( - uc.getInputStream()); + 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.getUser_id(), room_id, - isOwner, inputstream, parentFolderId, - fileSystemName, - externalFileId, externalType); + 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 - .getFileExplorerItemsById(returnError.getFileExplorerItemId())); + hs.put("fileExplorerItem", fileExplorerItemDao.get(returnError.getFileExplorerItemId())); hs.put("error", returnError); hs.put("fileName", returnError.getCompleteName()); - - //FIXME: Notificate UI of clients of new file + + // FIXME: Notificate UI of clients of new file return returnError.convertToFileImportErrors(); @@ -238,54 +227,49 @@ 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 + * 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 * 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 parentFileExplorerItemId + * @param parentId * @param folderName * the name of the folder - * @param room_id - * the room Id, if the file goes to the private folder of an - * user, you can set a random number here + * @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 + * 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 * @throws ServiceException */ - public Long addFolderByExternalUserIdAndType(String SID, - String externalUserId, Long parentFileExplorerItemId, - String folderName, Long room_id, Boolean isOwner, - Long externalFilesid, String externalType) throws ServiceException { + public Long addFolderByExternalUserIdAndType(String SID, String externalUserId, Long parentId, String folderName, + Long roomId, Boolean isOwner, Long externalFilesid, String externalType) throws ServiceException { try { - Long users_id = sessiondataDao.checkSession(SID); + Long authUserId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) { + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) { User userExternal = userDao.getExternalUser(externalUserId, externalType); - Long userId = userExternal.getUser_id(); + Long userId = userExternal.getId(); - log.debug("addFolder " + parentFileExplorerItemId); + log.debug("addFolder " + parentId); - if (parentFileExplorerItemId == -2 && isOwner) { - // users_id (OwnerID) => only set if its directly root in + 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, - room_id, userId, true, // isFolder + return fileExplorerItemDao.add(folderName, "", 0L, userId, roomId, userId, true, // isFolder false, // isImage false, // isPresentation "", // WML Path @@ -293,9 +277,7 @@ public class FileWebService { false, // isXmlFile externalFilesid, externalType); } else { - return fileExplorerItemDao.add(folderName, "", - parentFileExplorerItemId, null, room_id, userId, - true, // isFolder + return fileExplorerItemDao.add(folderName, "", parentId, null, roomId, userId, true, // isFolder false, // isImage false, // isPresentation "", // WML Path @@ -312,41 +294,46 @@ public class FileWebService { } /** - * to add a folder to the private drive, set parentFileExplorerItemId = 0 - * and isOwner to 1/true and userId to a valid user + * 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 * - * @param SID The SID of the User. This SID must be marked as logged in - * @param userId the openmeetings user id - * @param parentFileExplorerItemId 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 room_id 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 parentFileExplorerItemId, String folderName, Long room_id, - Boolean isOwner, Long externalFilesid, String externalType) - 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 users_id = sessiondataDao.checkSession(SID); + Long authUserId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) { + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) { - log.debug("addFolder " + parentFileExplorerItemId); + log.debug("addFolder " + parentId); - if (parentFileExplorerItemId == -2 && isOwner) { + 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, - room_id, userId, true, // isFolder + return fileExplorerItemDao.add(folderName, "", 0L, userId, roomId, userId, true, // isFolder false, // isImage false, // isPresentation "", // WML Path @@ -354,9 +341,7 @@ public class FileWebService { false, // isXmlFile externalFilesid, externalType); } else { - return fileExplorerItemDao.add(folderName, "", - parentFileExplorerItemId, null, room_id, userId, - true, // isFolder + return fileExplorerItemDao.add(folderName, "", parentId, null, roomId, userId, true, // isFolder false, // isImage false, // isPresentation "", // WML Path @@ -378,32 +363,30 @@ public class FileWebService { * * @param SID * The SID of the User. This SID must be marked as logged in - * @param parentFileExplorerItemId + * @param parentId * parent folder id * @param fileName * the file name - * @param room_id + * @param roomId * the room id * @param isOwner * @return - id of the folder */ - public Long addFolderSelf(String SID, Long parentFileExplorerItemId, - String fileName, Long room_id, Boolean isOwner) throws ServiceException { + public Long addFolderSelf(String SID, Long parentId, String fileName, Long roomId, Boolean isOwner) + throws ServiceException { try { - Long users_id = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) { + Long userId = sessiondataDao.checkSession(SID); + if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) { - log.debug("addFolder " + parentFileExplorerItemId); + log.debug("addFolder " + parentId); - if (parentFileExplorerItemId == 0 && isOwner) { + 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, "", - parentFileExplorerItemId, users_id, room_id, - users_id, true, // isFolder + return fileExplorerItemDao.add(fileName, "", parentId, userId, roomId, userId, true, // isFolder false, // isImage false, // isPresentation "", // WML Path @@ -411,9 +394,7 @@ public class FileWebService { false // isXmlFile , 0L, ""); } else { - return fileExplorerItemDao.add(fileName, "", - parentFileExplorerItemId, null, room_id, users_id, - true, // isFolder + return fileExplorerItemDao.add(fileName, "", parentId, null, roomId, userId, true, // isFolder false, // isImage false, // isPresentation "", // WML Paht @@ -440,17 +421,16 @@ public class FileWebService { * the externalType * @return - null */ - public Long deleteFileOrFolderByExternalIdAndType(String SID, - Long externalFilesid, String externalType) throws ServiceException { + public Long deleteFileOrFolderByExternalIdAndType(String SID, Long externalFilesid, String externalType) + throws ServiceException { try { - Long users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) { + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { - fileExplorerItemDao.deleteFileExplorerItemByExternalIdAndType( - externalFilesid, externalType); + fileExplorerItemDao.deleteFileExplorerItemByExternalIdAndType(externalFilesid, externalType); } @@ -466,20 +446,19 @@ public class FileWebService { * * @param SID * The SID of the User. This SID must be marked as logged in - * @param fileExplorerItemId + * @param fileId * the id of the file or folder * @return - null */ - public Long deleteFileOrFolder(String SID, Long fileExplorerItemId) - throws ServiceException { + public Long deleteFileOrFolder(String SID, Long fileId) throws ServiceException { try { - Long users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) { + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { - fileExplorerItemDao.deleteFileExplorerItem(fileExplorerItemId); + fileExplorerItemDao.delete(fileId); } @@ -495,22 +474,21 @@ public class FileWebService { * * @param SID * The SID of the User. This SID must be marked as logged in - * @param fileExplorerItemId + * @param fileId * the id of the file or folder * @return - null */ - public Long deleteFileOrFolderSelf(String SID, Long fileExplorerItemId) - throws ServiceException { + public Long deleteFileOrFolderSelf(String SID, Long fileId) throws ServiceException { try { - Long users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) { + if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) { // TODO: Check if user has access or not to the file - fileExplorerItemDao.deleteFileExplorerItem(fileExplorerItemId); + fileExplorerItemDao.delete(fileId); } @@ -546,14 +524,14 @@ public class FileWebService { * @return - LibraryPresentation-Object for a certain file * @throws ServiceException */ - public LibraryPresentation getPresentationPreviewFileExplorer(String SID, - String parentFolder) throws ServiceException { + public LibraryPresentation getPresentationPreviewFileExplorer(String SID, String parentFolder) + throws ServiceException { try { - Long users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) { + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { File working_dir = new File(OmFileHelper.getUploadProfilesDir(), parentFolder); log.debug("############# working_dir : " + working_dir); @@ -584,53 +562,46 @@ public class FileWebService { * * @param SID * The SID of the User. This SID must be marked as logged in - * @param room_id + * @param roomId * Room id - * @param owner_id + * @param ownerId * Owner id * @return - File Explorer Object by a given Room and owner id * @throws ServiceException */ - public FileExplorerObject getFileExplorerByRoom(String SID, Long room_id, - Long owner_id) throws ServiceException { + public FileExplorerObject getFileExplorerByRoom(String SID, Long roomId, Long ownerId) throws ServiceException { try { - Long webservice_users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(webservice_users_id))) { + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { - log.debug("room_id " + room_id); + log.debug("roomId " + roomId); FileExplorerObject fileExplorerObject = new FileExplorerObject(); // Home File List - FileExplorerItem[] fList = fileExplorerItemDao - .getFileExplorerItemsByOwner(owner_id, 0L); + List<FileExplorerItem> fList = fileExplorerItemDao.getByOwner(ownerId); long homeFileSize = 0; for (FileExplorerItem homeChildExplorerItem : fList) { - log.debug("FileExplorerItem fList " - + homeChildExplorerItem.getFileName()); - homeFileSize += fileUtils - .getSizeOfDirectoryAndSubs(homeChildExplorerItem); + log.debug("FileExplorerItem fList " + homeChildExplorerItem.getFileName()); + homeFileSize += fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem); } fileExplorerObject.setUserHome(fList); fileExplorerObject.setUserHomeSize(homeFileSize); // Public File List - FileExplorerItem[] rList = fileExplorerItemDao - .getFileExplorerItemsByRoom(room_id, 0L); + List<FileExplorerItem> rList = fileExplorerItemDao.getByRoom(roomId); long roomFileSize = 0; for (FileExplorerItem homeChildExplorerItem : rList) { - log.debug("FileExplorerItem rList " - + homeChildExplorerItem.getFileName()); - roomFileSize += fileUtils - .getSizeOfDirectoryAndSubs(homeChildExplorerItem); + log.debug("FileExplorerItem rList " + homeChildExplorerItem.getFileName()); + roomFileSize += fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem); } fileExplorerObject.setRoomHome(rList); @@ -655,51 +626,44 @@ public class FileWebService { * * @param SID * The SID of the User. This SID must be marked as logged in - * @param room_id + * @param roomId * Room Id * @return - File Explorer Object by a given Room * @throws ServiceException */ - public FileExplorerObject getFileExplorerByRoomSelf(String SID, Long room_id) - throws ServiceException { + public FileExplorerObject getFileExplorerByRoomSelf(String SID, Long roomId) throws ServiceException { try { - Long users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) { + if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) { - log.debug("room_id " + room_id); + log.debug("roomId " + roomId); FileExplorerObject fileExplorerObject = new FileExplorerObject(); // Home File List - FileExplorerItem[] fList = fileExplorerItemDao - .getFileExplorerItemsByOwner(users_id, 0L); + List<FileExplorerItem> fList = fileExplorerItemDao.getByOwner(userId); long homeFileSize = 0; for (FileExplorerItem homeChildExplorerItem : fList) { - log.debug("FileExplorerItem fList " - + homeChildExplorerItem.getFileName()); - homeFileSize += fileUtils - .getSizeOfDirectoryAndSubs(homeChildExplorerItem); + log.debug("FileExplorerItem fList " + homeChildExplorerItem.getFileName()); + homeFileSize += fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem); } fileExplorerObject.setUserHome(fList); fileExplorerObject.setUserHomeSize(homeFileSize); // Public File List - FileExplorerItem[] rList = fileExplorerItemDao - .getFileExplorerItemsByRoom(room_id, 0L); + List<FileExplorerItem> rList = fileExplorerItemDao.getByRoom(roomId); long roomFileSize = 0; for (FileExplorerItem homeChildExplorerItem : rList) { - log.debug("FileExplorerItem rList " - + homeChildExplorerItem.getFileName()); - roomFileSize += fileUtils - .getSizeOfDirectoryAndSubs(homeChildExplorerItem); + log.debug("FileExplorerItem rList " + homeChildExplorerItem.getFileName()); + roomFileSize += fileUtils.getSizeOfDirectoryAndSubs(homeChildExplorerItem); } fileExplorerObject.setRoomHome(rList); @@ -724,41 +688,36 @@ public class FileWebService { * * @param SID * The SID of the User. This SID must be marked as logged in - * @param parentFileExplorerItemId + * @param parentId * the parent folder id - * @param room_id + * @param roomId * the room id * @param isOwner * true if its a private drive - * @param owner_id + * @param ownerId * the owner id * @return - FileExplorerItem list by parent folder * @throws ServiceException */ - public FileExplorerItem[] getFileExplorerByParent(String SID, - Long parentFileExplorerItemId, Long room_id, Boolean isOwner, - Long owner_id) throws ServiceException { + public FileExplorerItem[] getFileExplorerByParent(String SID, Long parentId, Long roomId, Boolean isOwner, + Long ownerId) throws ServiceException { try { - Long webservice_users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(webservice_users_id))) { + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { - log.debug("parentFileExplorerItemId " - + parentFileExplorerItemId); + log.debug("parentFileExplorerItemId " + parentId); - if (parentFileExplorerItemId == 0) { + if (parentId == 0) { if (isOwner) { - return fileExplorerItemDao.getFileExplorerItemsByOwner( - owner_id, parentFileExplorerItemId); + return fileExplorerItemDao.getByOwner(ownerId).toArray(new FileExplorerItem[0]); } else { - return fileExplorerItemDao.getFileExplorerItemsByRoom( - room_id, parentFileExplorerItemId); + return fileExplorerItemDao.getByRoom(roomId).toArray(new FileExplorerItem[0]); } } else { - return fileExplorerItemDao - .getFileExplorerItemsByParent(parentFileExplorerItemId); + return fileExplorerItemDao.getByParent(parentId).toArray(new FileExplorerItem[0]); } } @@ -774,41 +733,35 @@ public class FileWebService { * * @param SID * SID The SID of the User. This SID must be marked as logged in - * @param parentFileExplorerItemId + * @param parentId * the parent folder id - * @param room_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 parentFileExplorerItemId, Long room_id, Boolean isOwner) + public FileExplorerItem[] getFileExplorerByParentSelf(String SID, Long parentId, Long roomId, Boolean isOwner) throws ServiceException { try { - Long users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) { + if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) { - log.debug("parentFileExplorerItemId " - + parentFileExplorerItemId); + log.debug("parentFileExplorerItemId " + parentId); - if (parentFileExplorerItemId == 0) { + if (parentId == 0) { if (isOwner) { - return fileExplorerItemDao.getFileExplorerItemsByOwner( - users_id, parentFileExplorerItemId); + return fileExplorerItemDao.getByOwner(userId).toArray(new FileExplorerItem[0]); } else { - return fileExplorerItemDao.getFileExplorerItemsByRoom( - room_id, parentFileExplorerItemId); + return fileExplorerItemDao.getByRoom(roomId).toArray(new FileExplorerItem[0]); } } else { - return fileExplorerItemDao - .getFileExplorerItemsByParent(parentFileExplorerItemId); + return fileExplorerItemDao.getByParent(parentId).toArray(new FileExplorerItem[0]); } - } } catch (Exception err) { log.error("[getFileExplorerByParentSelf] ", err); @@ -821,26 +774,24 @@ public class FileWebService { * * @param SID * SID The SID of the User. This SID must be marked as logged in - * @param fileExplorerItemId + * @param fileId * file or folder id * @param fileName * new file or folder name * @return - null * @throws ServiceException */ - public Long updateFileOrFolderName(String SID, Long fileExplorerItemId, - String fileName) throws ServiceException { + public Long updateFileOrFolderName(String SID, Long fileId, String fileName) throws ServiceException { try { - Long webservice_users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(webservice_users_id))) { + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { - log.debug("deleteFileOrFolder " + fileExplorerItemId); + log.debug("deleteFileOrFolder " + fileId); - fileExplorerItemDao.updateFileOrFolderName(fileExplorerItemId, - fileName); + fileExplorerItemDao.updateFileOrFolderName(fileId, fileName); } } catch (Exception err) { @@ -855,39 +806,32 @@ public class FileWebService { * * @param SID * SID The SID of the User. This SID must be marked as logged in - * @param fileExplorerItemId + * @param fileId * file or folder id * @param fileName * new file or folder name * @return - null * @throws ServiceException */ - public Long updateFileOrFolderNameSelf(String SID, Long fileExplorerItemId, - String fileName) throws ServiceException { + public Long updateFileOrFolderNameSelf(String SID, Long fileId, String fileName) throws ServiceException { try { - Long users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) { + if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) { // TODO: check if this user is allowed to change this file /* - * FileExplorerItem fileExItem = - * fileExplorerItemDao.getFileExplorerItemsById - * (fileExplorerItemId); + * FileExplorerItem fileExItem = fileExplorerItemDao.getFileExplorerItemsById (fileExplorerItemId); * - * if (fileExItem.getOwnerId() != null && - * !fileExItem.getOwnerId().equals(users_id)) { throw new - * Exception( - * "This user is not the owner of the file and not allowed to edit its name" - * ); } + * if (fileExItem.getOwnerId() != null && !fileExItem.getOwnerId().equals(users_id)) { throw new + * Exception( "This user is not the owner of the file and not allowed to edit its name" ); } */ - log.debug("deleteFileOrFolder " + fileExplorerItemId); + log.debug("deleteFileOrFolder " + fileId); - fileExplorerItemDao.updateFileOrFolderName(fileExplorerItemId, - fileName); + fileExplorerItemDao.updateFileOrFolderName(fileId, fileName); } } catch (Exception err) { @@ -901,50 +845,43 @@ public class FileWebService { * * @param SID * SID The SID of the User. This SID must be marked as logged in - * @param fileExplorerItemId + * @param fileId * current file or folder id to be moved - * @param newParentFileExplorerItemId + * @param newParentId * new parent folder id - * @param room_id + * @param roomId * room id * @param isOwner * if true owner id will be set * @param moveToHome * if true move to private drive - * @param owner_id + * @param ownerId * owner id * @return - null * @throws ServiceException */ - public Long moveFile(String SID, Long fileExplorerItemId, - Long newParentFileExplorerItemId, Long room_id, Boolean isOwner, - Boolean moveToHome, Long owner_id) throws ServiceException { + public Long moveFile(String SID, Long fileId, Long newParentId, Long roomId, Boolean isOwner, Boolean moveToHome, + Long ownerId) throws ServiceException { try { - Long webservice_users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(webservice_users_id))) { + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { - log.debug("deleteFileOrFolder " + fileExplorerItemId); + log.debug("deleteFileOrFolder " + fileId); - fileExplorerItemDao - .moveFile(fileExplorerItemId, - newParentFileExplorerItemId, room_id, isOwner, - owner_id); + fileExplorerItemDao.moveFile(fileId, newParentId, roomId, isOwner, ownerId); - FileExplorerItem fileExplorerItem = fileExplorerItemDao - .getFileExplorerItemsById(fileExplorerItemId); + FileExplorerItem fileExplorerItem = fileExplorerItemDao.get(fileId); if (moveToHome) { // set this file and all subfiles and folders the ownerId - fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, - owner_id, null); + fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, ownerId, null); } else { - // set this file and all subfiles and folders the room_id - fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, - null, room_id); + // set this file and all subfiles and folders the roomId + fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, null, roomId); } @@ -960,11 +897,11 @@ public class FileWebService { * * @param SID * SID The SID of the User. This SID must be marked as logged in - * @param fileExplorerItemId + * @param fileId * current file or folder id to be moved - * @param newParentFileExplorerItemId + * @param newParentId * new parent folder id - * @param room_id + * @param roomId * room id * @param isOwner * if true owner id will be set @@ -973,37 +910,30 @@ public class FileWebService { * @return - null * @throws ServiceException */ - public Long moveFileSelf(String SID, Long fileExplorerItemId, - Long newParentFileExplorerItemId, Long room_id, Boolean isOwner, + public Long moveFileSelf(String SID, Long fileId, Long newParentId, Long roomId, Boolean isOwner, Boolean moveToHome) throws ServiceException { try { - Long users_id = sessiondataDao.checkSession(SID); + Long userId = sessiondataDao.checkSession(SID); + + if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) { - if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) { - // A test is required that checks if the user is allowed to move the file - log.debug("moveFileSelf " + fileExplorerItemId); + log.debug("moveFileSelf " + fileId); - fileExplorerItemDao - .moveFile(fileExplorerItemId, - newParentFileExplorerItemId, room_id, isOwner, - users_id); + fileExplorerItemDao.moveFile(fileId, newParentId, roomId, isOwner, userId); - FileExplorerItem fileExplorerItem = fileExplorerItemDao - .getFileExplorerItemsById(fileExplorerItemId); + FileExplorerItem fileExplorerItem = fileExplorerItemDao.get(fileId); if (moveToHome) { // set this file and all subfiles and folders the ownerId - fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, - users_id, null); + fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, userId, null); } else { - // set this file and all subfiles and folders the room_id - fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, - null, room_id); + // set this file and all subfiles and folders the roomId + fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem, null, roomId); }
Added: openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java?rev=1712911&view=auto ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java (added) +++ openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java Fri Nov 6 06:18:44 2015 @@ -0,0 +1,240 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.openmeetings.webservice; + +import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; + +import java.util.ArrayList; + +import javax.jws.WebParam; +import javax.jws.WebService; +import javax.ws.rs.GET; +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.db.dao.room.RoomDao; +import org.apache.openmeetings.db.dao.server.SessiondataDao; +import org.apache.openmeetings.db.dao.user.OrganisationDao; +import org.apache.openmeetings.db.dao.user.OrganisationUserDao; +import org.apache.openmeetings.db.dao.user.UserDao; +import org.apache.openmeetings.db.dto.basic.SearchResult; +import org.apache.openmeetings.db.dto.basic.ServiceResult; +import org.apache.openmeetings.db.dto.basic.ServiceResult.Type; +import org.apache.openmeetings.db.dto.user.UserSearchResult; +import org.apache.openmeetings.db.entity.room.Room; +import org.apache.openmeetings.db.entity.room.RoomOrganisation; +import org.apache.openmeetings.db.entity.user.Organisation; +import org.apache.openmeetings.db.entity.user.Organisation_Users; +import org.apache.openmeetings.db.entity.user.User; +import org.apache.openmeetings.db.util.AuthLevelUtil; +import org.apache.openmeetings.webservice.error.ServiceException; +import org.red5.logging.Red5LoggerFactory; +import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * The Service contains methods to login and create hash to directly enter + * conference rooms, recordings or the application in general + * + * @author sebawagner + * @webservice GroupService + * + */ +@WebService(serviceName="org.apache.openmeetings.webservice.GroupWebService") +@Features(features = "org.apache.cxf.feature.LoggingFeature") +@Produces({MediaType.APPLICATION_JSON}) +@Path("/group") +public class GroupWebService { + private static final Logger log = Red5LoggerFactory.getLogger(GroupWebService.class, webAppRootKey); + + @Autowired + private OrganisationDao groupDao; + @Autowired + private OrganisationUserDao groupUserDao; + @Autowired + private UserDao userDao; + @Autowired + private RoomDao roomDao; + @Autowired + private SessiondataDao sessionDao; + + /** + * add a new group + * + * @param sid + * The SID from getSession + * @param name + * the name of the org + * @return the new id of the org or -1 in case an error happened + * @throws ServiceException + */ + @POST + @Path("/") + public ServiceResult add(@QueryParam("sid") @WebParam(name="sid") String sid, @QueryParam("name") @WebParam(name="name") String name) throws ServiceException { + Long userId = sessionDao.checkSession(sid); + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { + Organisation o = new Organisation(); + o.setName(name); + return new ServiceResult(groupDao.update(o, userId).getId(), "Success", Type.SUCCESS); + } else { + log.error("Could not create group"); + return new ServiceResult(-26L, "Insufficient permissins", Type.ERROR); + } + } + + /** + * + * Add a user to a certain group + * + * @param sid + * The SID from getSession + * @param userid + * the user id + * @param id + * the group id + * @return - id of the user added, or error id in case of the error + */ + @POST + @Path("/{id}/users/add/{userid}") + public ServiceResult addUser( + @QueryParam("sid") @WebParam(name="sid") String sid + , @PathParam("id") @WebParam(name="id") Long id + , @PathParam("userid") @WebParam(name="userid") Long userid + ) throws ServiceException + { + try { + Long authUserId = sessionDao.checkSession(sid); + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) { + if (!groupUserDao.isUserInOrganization(id, userid)) { + User u = userDao.get(userid); + u.getOrganisation_users().add(new Organisation_Users(groupDao.get(id))); + userDao.update(u, authUserId); + } + return new ServiceResult(userid, "Success", Type.SUCCESS); + } else { + return new ServiceResult(-26L, "Insufficient permissins", Type.ERROR); + } + } catch (Exception err) { + log.error("addUser", err); + throw new ServiceException(err.getMessage()); + } + } + + /** + * Adds a room to an group + * + * @param sid - The SID of the User. This SID must be marked as Loggedin + * @param id - Id of group that the room is being paired with + * @param roomid - Id of room to be added + * + * @return Id of the relation created, null or -1 in case of the error + */ + @POST + @Path("/{id}/rooms/add/{roomId}") + public ServiceResult addRoom( + @QueryParam("sid") @WebParam(name="sid") String sid + , @PathParam("id") @WebParam(name="id") Long id + , @PathParam("roomid") @WebParam(name="roomid") Long roomid + ) throws ServiceException + { + try { + Long userId = sessionDao.checkSession(sid); + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { + Room r = roomDao.get(roomid); + if (r != null) { + if (r.getRoomOrganisations() == null) { + r.setRoomOrganisations(new ArrayList<RoomOrganisation>()); + } + boolean found = false; + for (RoomOrganisation ro : r.getRoomOrganisations()) { + if (ro.getOrganisation().getId().equals(id)) { + found = true; + } + } + if (!found) { + r.getRoomOrganisations().add(new RoomOrganisation(groupDao.get(id), r)); + roomDao.update(r, userId); + return new ServiceResult(1L, "Success", Type.SUCCESS); + } + } + return new ServiceResult(0L, "Not added", Type.SUCCESS); + } else { + return new ServiceResult(-26L, "Insufficient permissins", Type.ERROR); + } + } catch (Exception err) { + log.error("[addRoom]", err); + throw new ServiceException(err.getMessage()); + } + } + + /** + * Search users and return them + * + * @param sid + * The SID from getSession + * @param id + * the group id + * @param start + * first record + * @param max + * max records + * @param orderby + * orderby clause + * @param asc + * asc or desc + * @return - users found + */ + @GET + @Path("/users/{id}") + public UserSearchResult getUsers( + @QueryParam("sid") @WebParam(name="sid") String sid + , @PathParam("id") @WebParam(name="id") long id + , @QueryParam("start") @WebParam(name="start") int start + , @QueryParam("max") @WebParam(name="max") int max + , @QueryParam("orderby") @WebParam(name="orderby") String orderby + , @QueryParam("asc") @WebParam(name="asc") boolean asc + ) throws ServiceException + { + try { + Long userId = sessionDao.checkSession(sid); + SearchResult<User> result = new SearchResult<User>(); + result.setObjectName(User.class.getName()); + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { + result.setRecords(groupUserDao.count(id)); + result.setResult(new ArrayList<User>()); + for (Organisation_Users ou : groupUserDao.get(id, null, start, max, orderby + " " + (asc ? "ASC" : "DESC"))) { + result.getResult().add(ou.getUser()); + } + } else { + log.error("Need Administration Account"); + result.setErrorId(-26L); + } + return new UserSearchResult(result); + } catch (Exception err) { + log.error("getUsers", err); + throw new ServiceException(err.getMessage()); + } + } +} Added: openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java?rev=1712911&view=auto ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java (added) +++ openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java Fri Nov 6 06:18:44 2015 @@ -0,0 +1,190 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.openmeetings.webservice; + +import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; + +import java.util.List; + +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.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.db.dao.record.RecordingDao; +import org.apache.openmeetings.db.dao.server.SessiondataDao; +import org.apache.openmeetings.db.dao.user.UserDao; +import org.apache.openmeetings.db.dto.record.RecordingDTO; +import org.apache.openmeetings.db.util.AuthLevelUtil; +import org.apache.openmeetings.webservice.error.ServiceException; +import org.red5.logging.Red5LoggerFactory; +import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * The Service contains methods to work with recordings + * + * @author solomax + * @webservice RecordingService + * + */ +@WebService(serviceName="org.apache.openmeetings.webservice.RecordingWebService") +@Features(features = "org.apache.cxf.feature.LoggingFeature") +@Produces({MediaType.APPLICATION_JSON}) +@Path("/record") +public class RecordingWebService { + private static final Logger log = Red5LoggerFactory.getLogger(RecordingWebService.class, webAppRootKey); + @Autowired + private SessiondataDao sessionDao; + @Autowired + private UserDao userDao; + @Autowired + private RecordingDao recordingDao; + + /** + * Deletes a flv recording + * + * @param sid + * The SID of the User. This SID must be marked as Loggedin + * @param id + * the id of the recording + * + * @throws {@link ServiceException} in case of any error + */ + @DELETE + @Path("/{id}") + public void delete(@QueryParam("sid") @WebParam(name="sid") String sid, @PathParam("id") @WebParam(name="id") Long id) throws ServiceException { + try { + Long userId = sessionDao.checkSession(sid); + + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { + recordingDao.delete(id); + } else { + throw new ServiceException("Not allowed to preform that action, Authenticate the SID first"); + } + } catch (ServiceException err) { + throw err; + } catch (Exception err) { + log.error("[delete] ", err); + throw new ServiceException(err.getMessage()); + } + } + + /** + * Gets a list of flv recordings + * + * @param sid The SID of the User. This SID must be marked as Loggedin + * @param externalId the externalUserId + * @param externalType the externalUserType + * + * @return - list of flv recordings + * @throws ServiceException + */ + @WebMethod + @GET + @Path("/{externaltype}/{externalid}") + public List<RecordingDTO> getExternal(@WebParam(name="sid") @QueryParam("sid") String sid + , @PathParam("externaltype") @WebParam(name="externaltype") String externalType + , @PathParam("externalid") @WebParam(name="externalid") String externalId) throws ServiceException { + try { + Long userId = sessionDao.checkSession(sid); + + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { + return RecordingDTO.list(recordingDao.getByExternalId(externalId, externalType)); + } else { + throw new ServiceException("Not allowed to preform that action, Authenticate the SID first"); + } + } catch (ServiceException err) { + throw err; + } catch (Exception err) { + log.error("[getExternal] ", err); + throw new ServiceException(err.getMessage()); + } + } + + /** + * Gets a list of flv recordings + * + * @param sid + * The SID of the User. This SID must be marked as Loggedin + * @param externalType + * externalRoomType specified when creating the room + * @return - list of flv recordings + * @throws ServiceException + */ + @WebMethod + @GET + @Path("/{externaltype}") + public List<RecordingDTO> getExternalByType(@WebParam(name="sid") @QueryParam("sid") String sid + , @PathParam("externaltype") @WebParam(name="externaltype") String externalType) throws ServiceException { + try { + Long userId = sessionDao.checkSession(sid); + + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { + return RecordingDTO.list(recordingDao.getByExternalType(externalType)); + } else { + throw new ServiceException("Not allowed to preform that action, Authenticate the SID first"); + } + } catch (ServiceException err) { + throw err; + } catch (Exception err) { + log.error("[getByExternalTypeByList] ", err); + throw new ServiceException(err.getMessage()); + } + } + + /** + * Get list of recordings + * + * @param sid + * The SID of the User. This SID must be marked as Loggedin + * @param roomId + * the room id + * @return - list of recordings + * @throws ServiceException + */ + @WebMethod + @GET + @Path("/room/{id}") + public List<RecordingDTO> getExternalByRoom(@WebParam(name="sid") @QueryParam("sid") String sid + , @PathParam("id") @WebParam(name="id") Long roomId) throws ServiceException { + try { + Long userId = sessionDao.checkSession(sid); + + if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) { + return RecordingDTO.list(recordingDao.getByRoomId(roomId)); + } else { + throw new ServiceException("Not allowed to preform that action, Authenticate the SID first"); + } + } catch (ServiceException err) { + throw err; + } catch (Exception err) { + log.error("[getByRoomId] ", err); + throw new ServiceException(err.getMessage()); + } + } +}
