Copied: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java (from r1786924, openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectListManagerById.java) URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java?p2=openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java&p1=openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectListManagerById.java&r1=1786924&r2=1786925&rev=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectListManagerById.java (original) +++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java Tue Mar 14 16:52:27 2017 @@ -22,8 +22,8 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; -import org.apache.openmeetings.db.dto.room.WhiteboardObject; -import org.apache.openmeetings.db.dto.room.WhiteboardObjectList; +import org.apache.openmeetings.db.dto.room.Whiteboard; +import org.apache.openmeetings.db.dto.room.Whiteboards; /** * Memory based cache, configured as singleton in spring configuration @@ -31,51 +31,56 @@ import org.apache.openmeetings.db.dto.ro * @author sebawagner * */ -public class WhiteBoardObjectListManagerById { - private Map<Long, WhiteboardObjectList> whiteBoardObjectList = new ConcurrentHashMap<>(); +public class WhiteboardCache { + private Map<Long, Whiteboards> cache = new ConcurrentHashMap<>(); private volatile AtomicLong whiteboardId = new AtomicLong(0); public long getNewWhiteboardId(Long roomId, String name) { long wbId = whiteboardId.getAndIncrement(); - setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, new WhiteboardObject(name), wbId); + set(roomId, new Whiteboard(name), wbId); return wbId; } /* * Room items a Whiteboard */ - public WhiteboardObjectList getWhiteBoardObjectListByRoomId(Long roomId) { - if (whiteBoardObjectList.containsKey(roomId)) { - return whiteBoardObjectList.get(roomId); + public Whiteboards get(Long roomId) { + if (roomId == null) { + return null; + } + if (cache.containsKey(roomId)) { + return cache.get(roomId); } else { - WhiteboardObjectList whiteboardObjectList = new WhiteboardObjectList(); - whiteboardObjectList.setRoomId(roomId); - return whiteboardObjectList; + Whiteboards whiteboards = new Whiteboards(); + whiteboards.setRoomId(roomId); + set(roomId, whiteboards); + return whiteboards; } } - public WhiteboardObject getWhiteBoardObjectListByRoomIdAndWhiteboard(Long roomId, Long whiteBoardId){ - WhiteboardObjectList whiteboardObjectList = getWhiteBoardObjectListByRoomId(roomId); - WhiteboardObject whiteboardObjects = whiteboardObjectList.getWhiteboardObjects().get(whiteBoardId); - if (whiteboardObjects == null) { - whiteboardObjects = new WhiteboardObject(); + public Whiteboard get(Long roomId, Long whiteBoardId) { + Whiteboards whiteboards = get(roomId); + Whiteboard wb = whiteboards.getWhiteboards().get(whiteBoardId); + if (wb == null) { + wb = new Whiteboard(); + set(roomId, wb, whiteBoardId); } - return whiteboardObjects; + return wb; } /* * Whiteboard Object List * */ - public void setWhiteBoardObjectListRoomObj(Long roomId, WhiteboardObjectList whiteboardObjectList){ - whiteBoardObjectList.put(roomId, whiteboardObjectList); + public void set(Long roomId, Whiteboards whiteboards) { + cache.put(roomId, whiteboards); } - public void setWhiteBoardObjectListRoomObjAndWhiteboardId(Long roomId, WhiteboardObject whiteboardObjects, long whiteBoardId) { - WhiteboardObjectList whiteboardObjectList = getWhiteBoardObjectListByRoomId(roomId); - whiteboardObjects.setWhiteBoardId(whiteBoardId); - whiteboardObjectList.getWhiteboardObjects().put(whiteBoardId, whiteboardObjects); - whiteBoardObjectList.put(roomId, whiteboardObjectList); + public void set(Long roomId, Whiteboard wb, long whiteBoardId) { + Whiteboards whiteboards = get(roomId); + wb.setWhiteBoardId(whiteBoardId); + whiteboards.getWhiteboards().put(whiteBoardId, wb); + cache.put(roomId, whiteboards); } }
Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java?rev=1786925&r1=1786924&r2=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java (original) +++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java Tue Mar 14 16:52:27 2017 @@ -24,21 +24,21 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import org.apache.openmeetings.db.dto.room.WhiteboardObject; +import org.apache.openmeetings.db.dto.room.Whiteboard; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; public class WhiteboardManager { private static final Logger log = Red5LoggerFactory.getLogger(WhiteboardManager.class, webAppRootKey); - + @Autowired - private WhiteBoardObjectListManagerById wbListManagerById; + private WhiteboardCache whitebardCache; @SuppressWarnings("unchecked") - public void addWhiteBoardObjectById(Long roomId, Map<Integer, Object> whiteboardObj, Long whiteBoardId) { + public void add(Long roomId, Map<Integer, Object> whiteboardObj, Long whiteBoardId) { try { - log.debug("addWhiteBoardObjectById: ", whiteboardObj); + log.debug("add: ", whiteboardObj); String action = whiteboardObj.get(2).toString(); @@ -47,16 +47,11 @@ public class WhiteboardManager { List<Object> actionObject = (List<Object>) whiteboardObj.get(3); + Whiteboard wb = whitebardCache.get(roomId, whiteBoardId); if (action.equals("moveMap")) { - WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId); - - whiteboardObject.setX(Integer.valueOf(actionObject.get(1).toString())); - whiteboardObject.setY(Integer.valueOf(actionObject.get(2).toString())); - - wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId); + wb.setX(Integer.valueOf(actionObject.get(1).toString())); + wb.setY(Integer.valueOf(actionObject.get(2).toString())); } else if (action.equals("draw") || action.equals("redo")) { - WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId); - // log.debug(actionObject); // log.debug(actionObject.size()-1); // log.debug(actionObject.get(actionObject.size()-1)); @@ -65,33 +60,26 @@ public class WhiteboardManager { if (!objectType.equals("pointerWhiteBoard")) { String objectOID = actionObject.get(actionObject.size() - 1).toString(); log.debug("objectOID: " + objectOID); - whiteboardObject.add(objectOID, actionObject); - wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId); + wb.add(objectOID, actionObject); } } } else if (action.equals("clear")) { - WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId); - whiteboardObject.clear(); - wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId); + wb.clear(); } else if (action.equals("delete") || action.equals("undo")) { - WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId); - whiteboardObject.remove(actionObject); - - wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId); + wb.remove(actionObject); } else if (action.equals("size") || action.equals("editProp") || action.equals("editTextMindMapNode") || action.equals("editText") || action.equals("swf") || action.equals("flv") || action.equals("editTextMindMapColor") || action.equals("editTextMindMapFontColor")) { - WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId); String objectOID = actionObject.get(actionObject.size() - 1).toString(); // List roomItem = roomList.get(objectOID); - List<Object> currentObject = whiteboardObject.get(objectOID); + List<Object> currentObject = wb.get(objectOID); if ("paint".equals(actionObject.get(0))) { actionObject.set(1, currentObject.get(1)); } - whiteboardObject.add(objectOID, actionObject); + wb.add(objectOID, actionObject); if (action.equals("swf")) { log.debug("actionObject " + actionObject); @@ -102,7 +90,7 @@ public class WhiteboardManager { log.debug("updateObjectsToSlideNumber :: " + baseObjectName + "," + slidesNumber); - for (Entry<String, List<Object>> me : whiteboardObject.entrySet()) { + for (Entry<String, List<Object>> me : wb.entrySet()) { List<Object> actionObjectStored = me.getValue(); if (actionObjectStored.get(0).equals("ellipse") @@ -131,28 +119,18 @@ public class WhiteboardManager { } } } - - wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId); } else if (action.equals("clearSlide")) { - WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId); - for (Object objectName : actionObject) { - whiteboardObject.remove(objectName); + wb.remove(objectName); } - - wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId); } else if (action.equals("whiteboardObj")) { - WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId); - - whiteboardObject.setFullFit((Boolean) actionObject.get(1)); - whiteboardObject.setZoom((Integer) actionObject.get(2)); - - wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId); + wb.setFullFit((Boolean) actionObject.get(1)); + wb.setZoom((Integer) actionObject.get(2)); } else { log.warn("Unkown Type: " + action + " actionObject: " + actionObject); } } catch (Exception err) { - log.error("[addWhiteBoardObject]", err); + log.error("[add]", err); } } } Copied: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardObjectSyncManager.java (from r1786924, openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java) URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardObjectSyncManager.java?p2=openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardObjectSyncManager.java&p1=openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java&r1=1786924&r2=1786925&rev=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java (original) +++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardObjectSyncManager.java Tue Mar 14 16:52:27 2017 @@ -33,11 +33,11 @@ import org.slf4j.Logger; * @author sebawagner * */ -public class WhiteBoardObjectSyncManager { +public class WhiteboardObjectSyncManager { private Map<Long, Map<String, WhiteboardSyncLockObject>> whiteBoardSyncList = new ConcurrentHashMap<>(); private Map<Long, Map<String, Map<String, WhiteboardSyncLockObject>>> whiteBoardObjectSyncList = new ConcurrentHashMap<>(); - private static final Logger log = Red5LoggerFactory.getLogger(WhiteBoardObjectSyncManager.class, webAppRootKey); + private static final Logger log = Red5LoggerFactory.getLogger(WhiteboardObjectSyncManager.class, webAppRootKey); /* * Initial Sync Process Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java?rev=1786925&r1=1786924&r2=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java (original) +++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java Tue Mar 14 16:52:27 2017 @@ -18,27 +18,22 @@ */ package org.apache.openmeetings.core.remote; -import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4; import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; -import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.io.FileUtils; import org.apache.openmeetings.core.data.whiteboard.WhiteboardManager; import org.apache.openmeetings.core.documents.LibraryChartLoader; import org.apache.openmeetings.core.documents.LibraryDocumentConverter; import org.apache.openmeetings.core.documents.LibraryWmlLoader; -import org.apache.openmeetings.core.documents.LoadLibraryPresentation; import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter; import org.apache.openmeetings.db.dao.file.FileExplorerItemDao; import org.apache.openmeetings.db.dao.server.ISessionManager; import org.apache.openmeetings.db.dao.server.SessiondataDao; import org.apache.openmeetings.db.dao.user.UserDao; -import org.apache.openmeetings.db.dto.file.LibraryPresentation; import org.apache.openmeetings.db.dto.server.ClientSessionInfo; import org.apache.openmeetings.db.entity.file.FileExplorerItem; import org.apache.openmeetings.db.entity.file.FileItem; @@ -48,8 +43,6 @@ import org.apache.openmeetings.db.entity import org.apache.openmeetings.db.util.AuthLevelUtil; import org.apache.openmeetings.util.OmFileHelper; import org.red5.logging.Red5LoggerFactory; -import org.red5.server.api.IConnection; -import org.red5.server.api.Red5; import org.red5.server.api.service.IPendingServiceCall; import org.red5.server.api.service.IPendingServiceCallback; import org.slf4j.Logger; @@ -72,35 +65,10 @@ public class ConferenceLibrary implement @Autowired private FileExplorerItemDao fileDao; @Autowired - private WhiteboardManager whiteboardManagement; + private WhiteboardManager whiteboardManager; @Autowired private ScopeApplicationAdapter scopeAdapter; - public LibraryPresentation getPresentationPreviewFileExplorer(String sid, String parentFolder) { - try { - Sessiondata sd = sessionDao.check(sid); - - log.debug("#############users_id : " + sd.getUserId()); - - if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) { - File working_dir = new File(OmFileHelper.getUploadFilesDir(), parentFolder); - log.debug("############# working_dir : " + working_dir); - - File file = new File(working_dir, OmFileHelper.libraryFileName); - - if (!file.exists()) { - throw new Exception(file.getCanonicalPath() + ": does not exist"); - } - return LoadLibraryPresentation.parseLibraryFileToObject(file); - } else { - throw new Exception("not Authenticated"); - } - } catch (Exception e) { - log.error("[getListOfFilesByAbsolutePath]", e); - return null; - } - } - /** * * Save an Object to the library and returns the file-explorer Id @@ -165,7 +133,7 @@ public class ConferenceLibrary implement wbClear.put(3, null); Long roomId = client.getRoomId(); - whiteboardManagement.addWhiteBoardObjectById(roomId, wbClear, wbId); + whiteboardManager.add(roomId, wbClear, wbId); for (int k = 0; k < roomItems.size(); k++) { List<?> actionObject = (List<?>)roomItems.get(k); @@ -174,7 +142,7 @@ public class ConferenceLibrary implement whiteboardObj.put(2, "draw"); whiteboardObj.put(3, actionObject); - whiteboardManagement.addWhiteBoardObjectById(roomId, whiteboardObj, wbId); + whiteboardManager.add(roomId, whiteboardObj, wbId); } Map<String, Object> sendObject = new HashMap<>(); @@ -206,40 +174,6 @@ public class ConferenceLibrary implement return null; } - /** - * @param sid - * @param fileId - * @return 1 in case of success, -1 otherwise - */ - public Long copyFileToCurrentRoom(String sid, Long fileId) { - try { - Sessiondata sd = sessionDao.check(sid); - if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) { - IConnection current = Red5.getConnectionLocal(); - String streamid = current.getClient().getId(); - - Client client = sessionManager.getClientByStreamId(streamid, null); - Long roomId = client.getRoomId(); - - FileExplorerItem f = fileDao.get(fileId); - if (roomId != null && f != null) { - File mp4 = f.getFile(EXTENSION_MP4); - - File targetFolder = OmFileHelper.getStreamsSubDir(roomId); - - File target = new File(targetFolder, mp4.getName()); - if (mp4.exists() && !target.exists()) { - FileUtils.copyFile(mp4, target, false); - } - return 1L; - } - } - } catch (Exception err) { - log.error("[copyFileToCurrentRoom] ", err); - } - return -1L; - } - @Override public void resultReceived(IPendingServiceCall arg0) { // TODO Auto-generated method stub Copied: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteboardService.java (from r1786924, openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java) URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteboardService.java?p2=openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteboardService.java&p1=openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java&r1=1786924&r2=1786925&rev=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java (original) +++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteboardService.java Tue Mar 14 16:52:27 2017 @@ -32,8 +32,8 @@ import java.util.LinkedList; import java.util.Map; import org.apache.commons.collections4.ComparatorUtils; -import org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectListManagerById; -import org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectSyncManager; +import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache; +import org.apache.openmeetings.core.data.whiteboard.WhiteboardObjectSyncManager; import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter; import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.label.LabelDao; @@ -41,9 +41,9 @@ import org.apache.openmeetings.db.dao.se import org.apache.openmeetings.db.dao.server.SessiondataDao; import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.dto.room.Cliparts; -import org.apache.openmeetings.db.dto.room.WhiteboardObject; -import org.apache.openmeetings.db.dto.room.WhiteboardObjectList; +import org.apache.openmeetings.db.dto.room.Whiteboard; import org.apache.openmeetings.db.dto.room.WhiteboardSyncLockObject; +import org.apache.openmeetings.db.dto.room.Whiteboards; import org.apache.openmeetings.db.entity.room.Client; import org.apache.openmeetings.db.entity.server.Sessiondata; import org.apache.openmeetings.db.entity.user.User; @@ -63,8 +63,8 @@ import org.springframework.beans.factory * @author sebastianwagner * */ -public class WhiteBoardService implements IPendingServiceCallback { - private static final Logger log = Red5LoggerFactory.getLogger(WhiteBoardService.class, webAppRootKey); +public class WhiteboardService implements IPendingServiceCallback { + private static final Logger log = Red5LoggerFactory.getLogger(WhiteboardService.class, webAppRootKey); @Autowired private UserDao userDao; @Autowired @@ -72,9 +72,9 @@ public class WhiteBoardService implement @Autowired private ISessionManager sessionManager; @Autowired - private WhiteBoardObjectSyncManager wbListManager; + private WhiteboardObjectSyncManager wbListManager; @Autowired - private WhiteBoardObjectListManagerById wbListManagerById; + private WhiteboardCache wbCache; @Autowired private SessiondataDao sessionDao; @Autowired @@ -89,7 +89,7 @@ public class WhiteBoardService implement Client currentClient = sessionManager.getClientByStreamId(streamid, null); Long roomId = currentClient.getRoomId(); - Long whiteBoardId = wbListManagerById.getNewWhiteboardId(roomId, name); + Long whiteBoardId = wbCache.getNewWhiteboardId(roomId, name); scopeAdapter.sendMessageAll(Arrays.asList("newWhiteboard", whiteBoardId, name)); } catch (Exception e) { log.error("[getNewWhiteboardId]", e); @@ -105,12 +105,12 @@ public class WhiteBoardService implement Client currentClient = sessionManager.getClientByStreamId(streamid, null); Long roomId = currentClient.getRoomId(); - WhiteboardObjectList whiteboardObjectList = wbListManagerById.getWhiteBoardObjectListByRoomId(roomId); - Object returnValue = whiteboardObjectList.getWhiteboardObjects().remove(whiteBoardId); + Whiteboards whiteboards = wbCache.get(roomId); + Object returnValue = whiteboards.getWhiteboards().remove(whiteBoardId); log.debug(" :: whiteBoardId :: " + whiteBoardId); - wbListManagerById.setWhiteBoardObjectListRoomObj(roomId, whiteboardObjectList); + wbCache.set(roomId, whiteboards); if (returnValue != null) { return true; @@ -121,8 +121,8 @@ public class WhiteBoardService implement return false; } - public Map<Long, WhiteboardObject> getRoomItemsBy() { - Map<Long, WhiteboardObject> result = new LinkedHashMap<>(); + public Map<Long, Whiteboard> getRoomItemsBy() { + Map<Long, Whiteboard> result = new LinkedHashMap<>(); try { IConnection current = Red5.getConnectionLocal(); String streamid = current.getClient().getId(); @@ -130,9 +130,9 @@ public class WhiteBoardService implement Long roomId = currentClient.getRoomId(); log.debug("getRoomItems: " + roomId); - WhiteboardObjectList whiteboardObjectList = wbListManagerById.getWhiteBoardObjectListByRoomId(roomId); + Whiteboards whiteboards = wbCache.get(roomId); - if (whiteboardObjectList.getWhiteboardObjects().size() == 0) { + if (whiteboards.getWhiteboards().isEmpty()) { Long langId = null; { Long userId = currentClient.getUserId(); @@ -142,12 +142,12 @@ public class WhiteBoardService implement User u = userDao.get(userId); langId = u == null ? cfgDao.getConfValue(CONFIG_DEFAULT_LANG_KEY, Long.class, "1") : u.getLanguageId(); } - wbListManagerById.getNewWhiteboardId(roomId, labelDao.getString("615", langId)); + wbCache.getNewWhiteboardId(roomId, labelDao.getString("615", langId)); log.debug("Init New Room List"); - whiteboardObjectList = wbListManagerById.getWhiteBoardObjectListByRoomId(roomId); + whiteboards = wbCache.get(roomId); } - whiteboardObjectList.getWhiteboardObjects().entrySet().stream() - .sorted(Map.Entry.<Long, WhiteboardObject>comparingByKey().reversed()) + whiteboards.getWhiteboards().entrySet().stream() + .sorted(Map.Entry.<Long, Whiteboard>comparingByKey().reversed()) .forEachOrdered(x -> result.put(x.getKey(), x.getValue())); } catch (Exception err) { log.error("[getRoomItemsBy]", err); @@ -162,8 +162,8 @@ public class WhiteBoardService implement Client currentClient = sessionManager.getClientByStreamId(streamid, null); Long roomId = currentClient.getRoomId(); - WhiteboardObjectList whiteboardObjectList = wbListManagerById.getWhiteBoardObjectListByRoomId(roomId); - WhiteboardObject wb = whiteboardObjectList.getWhiteboardObjects().get(wbId); + Whiteboards whiteboards = wbCache.get(roomId); + Whiteboard wb = whiteboards.getWhiteboards().get(wbId); wb.setName(name); log.debug(" :: rename whiteBoard :: id = {}, name = {}", wbId, name); Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1786925&r1=1786924&r2=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original) +++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Tue Mar 14 16:52:27 2017 @@ -18,9 +18,11 @@ */ package org.apache.openmeetings.core.remote.red5; +import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4; import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import java.awt.Point; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; @@ -34,11 +36,13 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.atomic.AtomicLong; +import org.apache.commons.io.FileUtils; import org.apache.openmeetings.IApplication; import org.apache.openmeetings.core.data.conference.RoomManager; +import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache; import org.apache.openmeetings.core.data.whiteboard.WhiteboardManager; import org.apache.openmeetings.core.remote.RecordingService; -import org.apache.openmeetings.core.remote.WhiteBoardService; +import org.apache.openmeetings.core.remote.WhiteboardService; import org.apache.openmeetings.core.remote.util.SessionVariablesUtil; import org.apache.openmeetings.core.util.WebSocketHelper; import org.apache.openmeetings.db.dao.basic.ConfigurationDao; @@ -99,9 +103,11 @@ public class ScopeApplicationAdapter ext @Autowired private ISessionManager sessionManager; @Autowired - private WhiteBoardService whiteBoardService; + private WhiteboardService whiteBoardService; @Autowired - private WhiteboardManager whiteboardManagement; + private WhiteboardManager whiteboardManager; + @Autowired + private WhiteboardCache whiteboardCache; @Autowired private RecordingService recordingService; @Autowired @@ -1160,7 +1166,6 @@ public class ScopeApplicationAdapter ext } private static List<?> getWbObject(FileItem fi, String url) { - String fuid = UUID.randomUUID().toString(); Point size = getSize(fi); String type = "n/a"; switch (fi.getType()) { @@ -1190,7 +1195,7 @@ public class ScopeApplicationAdapter ext , size.x // initwidth //14 , size.y // initheight //15 , 100 // currentzoom //16 FIXME TODO - , fuid // uniquObjectSyncName //17 + , fi.getHash() // uniquObjectSyncName //17 , fi.getName() // standardFileName //18 , true // fullFit //19 FIXME TODO , 0 // zIndex //-8 @@ -1200,18 +1205,17 @@ public class ScopeApplicationAdapter ext , 0 // posy //-4 , size.x // width //-3 , size.y // height //-2 - , fuid // this.currentlayer.name //-1 + , fi.getHash() // this.currentlayer.name //-1 ); } - private static List<?> getFlvWbObject(FileItem fi) { - String fuid = UUID.randomUUID().toString(); + private static List<?> getMp4WbObject(FileItem fi, String url) { Point size = getSize(fi); return Arrays.asList( "flv" // 0: 'flv' , fi.getId() // 1: 7 , fi.getName() // 2: 'BigBuckBunny_512kb.mp4' - , false // 3: false //playRemote + , url // 3: posterUrl , size.x // 4: 416 , size.y // 5: 240 , 0 // 6: 1 // z-index @@ -1221,10 +1225,27 @@ public class ScopeApplicationAdapter ext , 0 // 10: 0 //TODO // y , size.x // 11: 749 // width , size.y // 12: 739 // height - , fuid // 13: 'flv_1469602000351' + , fi.getHash() // 13: 'flv_1469602000351' ); } + private static void copyFileToRoom(Long roomId, FileItem f) { + try { + if (roomId != null && f != null) { + File mp4 = f.getFile(EXTENSION_MP4); + + File targetFolder = OmFileHelper.getStreamsSubDir(roomId); + + File target = new File(targetFolder, mp4.getName()); + if (mp4.exists() && !target.exists()) { + FileUtils.copyFile(mp4, target, false); + } + } + } catch (Exception err) { + log.error("[copyFileToCurrentRoom] ", err); + } + } + public void sendToWhiteboard(String uid, Long wbId, FileItem fi, String url, boolean clean) { ClientSessionInfo csi = sessionManager.getClientByPublicSIDAnyServer(uid); if (csi == null) { @@ -1242,7 +1263,9 @@ public class ScopeApplicationAdapter ext wbObject = getWbObject(fi, url); break; case Video: - wbObject = getFlvWbObject(fi); + case Recording: + wbObject = getMp4WbObject(fi, url); + copyFileToRoom(client.getRoomId(), fi); break; default: } @@ -1251,6 +1274,7 @@ public class ScopeApplicationAdapter ext wbClear.put("id", wbId); wbClear.put("param", Arrays.asList("whiteboard", new Date(), "clear", null)); + whiteboardCache.get(client.getRoomId(), wbId).clear(); sendToScope(client.getRoomId(), "sendVarsToWhiteboardById", Arrays.asList(null, wbClear)); } sendToWhiteboard(client, Arrays.asList("whiteboard", new Date(), "draw", wbObject), wbId); @@ -1300,10 +1324,10 @@ public class ScopeApplicationAdapter ext whiteboardTempObj.put(3, tempActionObject); - whiteboardManagement.addWhiteBoardObjectById(roomId, whiteboardTempObj, wbId); + whiteboardManager.add(roomId, whiteboardTempObj, wbId); } } else { - whiteboardManagement.addWhiteBoardObjectById(roomId, whiteboardObj, wbId); + whiteboardManager.add(roomId, whiteboardObj, wbId); } Map<String, Object> sendObject = new HashMap<>(); Copied: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java (from r1786924, openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java) URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java?p2=openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java&p1=openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java&r1=1786924&r2=1786925&rev=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java (original) +++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java Tue Mar 14 16:52:27 2017 @@ -30,8 +30,8 @@ import java.util.concurrent.ConcurrentHa import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; -public class WhiteboardObject { - private static final Logger log = Red5LoggerFactory.getLogger(WhiteboardObject.class, webAppRootKey); +public class Whiteboard { + private static final Logger log = Red5LoggerFactory.getLogger(Whiteboard.class, webAppRootKey); private long whiteBoardId; private Integer x = 0; private Integer y = 0; @@ -42,9 +42,9 @@ public class WhiteboardObject { private int zIndex = 1; private String name; - public WhiteboardObject() {} + public Whiteboard() {} - public WhiteboardObject(String name) { + public Whiteboard(String name) { this.name = name; } Copied: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java (from r1786924, openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java) URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java?p2=openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java&p1=openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java&r1=1786924&r2=1786925&rev=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java (original) +++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java Tue Mar 14 16:52:27 2017 @@ -19,13 +19,15 @@ package org.apache.openmeetings.db.dto.room; import java.util.Map; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; -public class WhiteboardObjectList { +public class Whiteboards { private Long roomId; - private Map<Long, WhiteboardObject> whiteboardObjects = new ConcurrentHashMap<>(); + private final String uid = UUID.randomUUID().toString(); + private Map<Long, Whiteboard> whiteboards = new ConcurrentHashMap<>(); - public WhiteboardObjectList() {} + public Whiteboards() {} public Long getRoomId() { return roomId; @@ -35,11 +37,15 @@ public class WhiteboardObjectList { this.roomId = roomId; } - public Map<Long, WhiteboardObject> getWhiteboardObjects() { - return whiteboardObjects; + public Map<Long, Whiteboard> getWhiteboards() { + return whiteboards; } - public void setWhiteboardObjects(Map<Long, WhiteboardObject> whiteboardObjects) { - this.whiteboardObjects = whiteboardObjects; + public void setWhiteboards(Map<Long, Whiteboard> whiteboards) { + this.whiteboards = whiteboards; + } + + public String getUid() { + return uid; } } Modified: openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java?rev=1786925&r1=1786924&r2=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java (original) +++ openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java Tue Mar 14 16:52:27 2017 @@ -29,11 +29,11 @@ import java.util.Map; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.math.NumberUtils; -import org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectListManagerById; +import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache; import org.apache.openmeetings.core.session.SessionManager; import org.apache.openmeetings.db.dao.server.SessiondataDao; -import org.apache.openmeetings.db.dto.room.WhiteboardObject; -import org.apache.openmeetings.db.dto.room.WhiteboardObjectList; +import org.apache.openmeetings.db.dto.room.Whiteboard; +import org.apache.openmeetings.db.dto.room.Whiteboards; import org.apache.openmeetings.util.InitializationContainer; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; @@ -50,7 +50,7 @@ public class CleanupJob extends Abstract @Autowired private SessionManager sessionManager; @Autowired - private WhiteBoardObjectListManagerById wbManager; + private WhiteboardCache wbManager; public long getSessionTimeout() { return sessionTimeout; @@ -122,8 +122,8 @@ public class CleanupJob extends Abstract Long roomId = null; if (NumberUtils.isCreatable(folder.getName())) { roomId = Long.valueOf(folder.getName()); - WhiteboardObjectList wbList = wbManager.getWhiteBoardObjectListByRoomId(roomId); - for (Map.Entry<Long, WhiteboardObject> e : wbList.getWhiteboardObjects().entrySet()) { + Whiteboards wbList = wbManager.get(roomId); + for (Map.Entry<Long, Whiteboard> e : wbList.getWhiteboards().entrySet()) { if (!e.getValue().getRoomItems().isEmpty()) { roomId = null; break; Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html?rev=1786925&r1=1786924&r2=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html Tue Mar 14 16:52:27 2017 @@ -27,7 +27,6 @@ , autoOpen: false , resizable: false }); - ADMIN_TABLE_SHIIFT = 172; }; </script> </wicket:head> Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1786925&r1=1786924&r2=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Tue Mar 14 16:52:27 2017 @@ -644,10 +644,25 @@ public class RoomPanel extends BasePanel public void sendFileToWb(FileItem fi, boolean clean) { if (activeWbId > -1 && fi.getId() != null && FileItem.Type.Folder != fi.getType()) { - if (fi.getType() == FileItem.Type.WmlFile) { + if (FileItem.Type.WmlFile == fi.getType()) { getBean(ConferenceLibrary.class).sendToWhiteboard(getClient().getUid(), activeWbId, fi); } else { - String url = urlFor(new RoomResourceReference(), new PageParameters().add("id", fi.getId())).toString(); + String url = null; + PageParameters pp = new PageParameters(); + pp.add("id", fi.getId()) + .add("ruid", getBean(WhiteboardCache.class).get(r.getId()).getUid()); + switch (fi.getType()) { + case Video: + pp.add("preview", true); + url = urlFor(new RoomResourceReference(), pp).toString(); + break; + case Recording: + url = urlFor(new JpgRecordingResourceReference(), pp).toString(); + break; + default: + url = urlFor(new RoomResourceReference(), pp).toString(); + break; + } getBean(ScopeApplicationAdapter.class).sendToWhiteboard(getClient().getUid(), activeWbId, fi, url, clean); } } Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java?rev=1786925&r1=1786924&r2=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java Tue Mar 14 16:52:27 2017 @@ -27,8 +27,13 @@ import static org.apache.openmeetings.we import static org.apache.openmeetings.web.app.Application.getOnlineClient; import java.io.File; +import java.util.Map.Entry; +import org.apache.directory.api.util.Strings; +import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache; import org.apache.openmeetings.db.dao.file.FileExplorerItemDao; +import org.apache.openmeetings.db.dto.room.Whiteboard; +import org.apache.openmeetings.db.dto.room.Whiteboards; import org.apache.openmeetings.db.entity.basic.Client; import org.apache.openmeetings.db.entity.file.FileExplorerItem; import org.apache.openmeetings.db.entity.file.FileItem; @@ -93,10 +98,16 @@ public class RoomResourceReference exten return null; } FileExplorerItem f = getBean(FileExplorerItemDao.class).get(id); - // impossible to check file permission based on client, file can be dropped on WB - // and should be accessible to whole room - //FIXME TODO ADDITIONALLY CHECK Rights !! and room !! - return f; + String ruid = params.get("ruid").toString(); + Whiteboards wbs = getBean(WhiteboardCache.class).get(c.getRoomId()); + if (!Strings.isEmpty(ruid) && ruid.equals(wbs.getUid())) { + for (Entry<Long, Whiteboard> e : wbs.getWhiteboards().entrySet()) { + if (e.getValue().getRoomItems().containsKey(f.getHash())) { + return f; // item IS on WB + } + } + } + return null; } protected File getFile(FileExplorerItem f, String ext) { Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java?rev=1786925&r1=1786924&r2=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java Tue Mar 14 16:52:27 2017 @@ -181,6 +181,7 @@ public class UploadDialog extends Abstra protected void onSubmit(AjaxRequestTarget target) { List<FileUpload> ful = uploadField.getFileUploads(); if (ful != null) { + boolean clean = cleanWb.getModelObject(); for (FileUpload fu : ful) { FileExplorerItem f = new FileExplorerItem(); f.setSize(fu.getSize()); @@ -208,7 +209,8 @@ public class UploadDialog extends Abstra form.error(getString("convert.errors.file")); } else { if (toWb.getModelObject()) { - room.sendFileToWb(f, cleanWb.getModelObject()); + room.sendFileToWb(f, clean); + clean = false; } } } catch (Exception e) { Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java?rev=1786925&r1=1786924&r2=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java Tue Mar 14 16:52:27 2017 @@ -20,14 +20,22 @@ package org.apache.openmeetings.web.user import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.web.app.Application.getBean; +import static org.apache.openmeetings.web.app.Application.getOnlineClient; import static org.apache.openmeetings.web.app.WebSession.getExternalType; import static org.apache.openmeetings.web.app.WebSession.getRecordingId; import static org.apache.openmeetings.web.app.WebSession.getUserId; import static org.red5.logging.Red5LoggerFactory.getLogger; +import java.util.Map.Entry; + +import org.apache.directory.api.util.Strings; +import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache; import org.apache.openmeetings.db.dao.record.RecordingDao; import org.apache.openmeetings.db.dao.user.GroupUserDao; import org.apache.openmeetings.db.dao.user.UserDao; +import org.apache.openmeetings.db.dto.room.Whiteboard; +import org.apache.openmeetings.db.dto.room.Whiteboards; +import org.apache.openmeetings.db.entity.basic.Client; import org.apache.openmeetings.db.entity.file.FileItem.Type; import org.apache.openmeetings.db.entity.record.Recording; import org.apache.openmeetings.db.entity.user.User; @@ -50,13 +58,15 @@ public abstract class RecordingResourceR public String getMimeType(Recording r) { return getMimeType(); } - + public abstract String getMimeType(); - + @Override protected Recording getFileItem(Attributes attributes) { PageParameters params = attributes.getParameters(); StringValue _id = params.get("id"); + String ruid = params.get("ruid").toString(); + String uid = params.get("uid").toString(); Long id = null; try { id = _id.toOptionalLong(); @@ -68,12 +78,12 @@ public abstract class RecordingResourceR id = getRecordingId(); } if (id != null && ws.isSignedIn()) { - return getRecording(id); + return getRecording(id, ruid, uid); } return null; } - - private static Recording getRecording(Long id) { + + private static Recording getRecording(Long id, String ruid, String uid) { log.debug("Recording with id {} is requested", id); Recording r = getBean(RecordingDao.class).get(id); if (r == null || r.getType() == Type.Folder || r.isDeleted()) { @@ -82,6 +92,17 @@ public abstract class RecordingResourceR if (id.equals(getRecordingId())) { return r; } + Client c = getOnlineClient(uid); + if (c != null) { + Whiteboards wbs = getBean(WhiteboardCache.class).get(c.getRoomId()); + if (wbs != null && !Strings.isEmpty(ruid) && ruid.equals(wbs.getUid())) { + for (Entry<Long, Whiteboard> e : wbs.getWhiteboards().entrySet()) { + if (e.getValue().getRoomItems().containsKey(r.getHash())) { + return r; // item IS on WB + } + } + } + } //TODO should we check parentId here if (r.getOwnerId() == null && r.getGroupId() == null) { //public Modified: openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1786925&r1=1786924&r2=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Tue Mar 14 16:52:27 2017 @@ -64,9 +64,9 @@ <!-- Database cache --> <bean id="openmeetings.DatabaseStore" class="org.apache.openmeetings.core.session.store.DatabaseStore" /> - <bean id="whiteBoardObjectListManagerById" scope="singleton" class="org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectListManagerById" /> - <!-- WhiteBoardObjectSyncManager can stay in the memory, even on cluster! --> - <bean id="whiteBoardObjectSyncManager" scope="singleton" class="org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectSyncManager" /> + <bean id="whiteboardCache" scope="singleton" class="org.apache.openmeetings.core.data.whiteboard.WhiteboardCache" /> + <!-- WhiteboardObjectSyncManager can stay in the memory, even on cluster! --> + <bean id="whiteboardObjectSyncManager" scope="singleton" class="org.apache.openmeetings.core.data.whiteboard.WhiteboardObjectSyncManager" /> <!-- Cluster related config start --> <bean id="openmeetings.ServerUtil" scope="singleton" class="org.apache.openmeetings.core.session.ServerUtil"> @@ -77,7 +77,7 @@ <!-- Start of Services --> <bean id="xmlcrm.service" class="org.apache.openmeetings.core.remote.MainService" /> - <bean id="whiteboardservice.service" class="org.apache.openmeetings.core.remote.WhiteBoardService" /> + <bean id="whiteboardservice.service" class="org.apache.openmeetings.core.remote.WhiteboardService" /> <bean id="userservice.service" class="org.apache.openmeetings.core.remote.UserService" /> <bean id="fileservice.service" class="org.apache.openmeetings.core.remote.ConferenceLibrary" /> <bean id="openmeetings.FileProcessor" class="org.apache.openmeetings.core.data.file.FileProcessor" /> @@ -209,7 +209,7 @@ <bean id="generateSWF" class="org.apache.openmeetings.core.converter.GenerateSWF" /> <bean id="ldapLoginManagement" class="org.apache.openmeetings.core.ldap.LdapLoginManagement" /> <bean id="timezoneUtil" class="org.apache.openmeetings.db.util.TimezoneUtil" /> - <bean id="whiteboardManagement" class="org.apache.openmeetings.core.data.whiteboard.WhiteboardManager" /> + <bean id="whiteboardManager" class="org.apache.openmeetings.core.data.whiteboard.WhiteboardManager" /> <bean id="backupExport" class="org.apache.openmeetings.backup.BackupExport" /> <bean id="backupImport" class="org.apache.openmeetings.backup.BackupImport" /> <bean id="appointmentManager" class="org.apache.openmeetings.service.calendar.caldav.AppointmentManager" destroy-method="destroy"/> Modified: openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java?rev=1786925&r1=1786924&r2=1786925&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java (original) +++ openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java Tue Mar 14 16:52:27 2017 @@ -21,7 +21,6 @@ package org.apache.openmeetings.webservi import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import static org.apache.openmeetings.webservice.Constants.TNS; -import java.io.File; import java.io.InputStream; import java.util.ArrayList; import java.util.List; @@ -43,7 +42,6 @@ import javax.ws.rs.core.MediaType; import org.apache.cxf.feature.Features; import org.apache.cxf.jaxrs.ext.multipart.Multipart; import org.apache.openmeetings.core.data.file.FileProcessor; -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; @@ -51,12 +49,10 @@ import org.apache.openmeetings.db.dto.ba 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.server.Sessiondata; 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.process.ConverterProcessResultList; import org.apache.openmeetings.webservice.error.ServiceException; import org.red5.logging.Red5LoggerFactory; @@ -216,44 +212,6 @@ public class FileWebService { } } - /** - * Get a LibraryPresentation-Object for a certain file - * - * @param sid - * The SID of the User. This SID must be marked as logged in - * @param parentFolder - * - * @return - LibraryPresentation-Object for a certain file - * @throws ServiceException - */ - public LibraryPresentation getPresentationPreviewFileExplorer(String sid, String parentFolder) - throws ServiceException { - - try { - Sessiondata sd = sessionDao.check(sid); - if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) { - - File working_dir = new File(OmFileHelper.getUploadProfilesDir(), parentFolder); - log.debug("############# working_dir : " + working_dir); - - File file = new File(working_dir, OmFileHelper.libraryFileName); - - if (!file.exists()) { - throw new ServiceException(file.getCanonicalPath() + ": does not exist "); - } - - return LoadLibraryPresentation.parseLibraryFileToObject(file); - } else { - throw new ServiceException("not Authenticated"); - } - } catch (ServiceException e) { - throw e; - } catch (Exception e) { - log.error("[getListOfFilesByAbsolutePath]", e); - return null; - } - } - /** * Get a File Explorer Object by a given Room *
