Author: solomax
Date: Fri Jul 11 18:33:44 2014
New Revision: 1609764

URL: http://svn.apache.org/r1609764
Log:
[OPENMEETINGS-1039] interview recording stop-on-close is fixed

Modified:
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java?rev=1609764&r1=1609763&r2=1609764&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
 Fri Jul 11 18:33:44 2014
@@ -509,7 +509,6 @@ public class FLVRecorderService implemen
                try {
                        Long users_id = sessiondataDao.checkSession(SID);
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
-
                                log.debug("updateFileOrFolderName " + 
flvRecordingId);
 
                                FlvRecording flvRecording = 
flvRecordingDaoImpl.get(flvRecordingId);

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java?rev=1609764&r1=1609763&r2=1609764&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
 Fri Jul 11 18:33:44 2014
@@ -33,7 +33,6 @@ import java.util.Set;
 
 import org.apache.openmeetings.data.calendar.management.AppointmentLogic;
 import org.apache.openmeetings.data.conference.RoomManager;
-import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.data.whiteboard.EmoticonsManager;
 import org.apache.openmeetings.data.whiteboard.WhiteboardManager;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
@@ -98,8 +97,6 @@ public class ScopeApplicationAdapter ext
        @Autowired
        private SessiondataDao sessiondataDao;
        @Autowired
-       private UserManager userManager;
-       @Autowired
        private RoomManager roomManager;
        @Autowired
        private ConferenceLogDao conferenceLogDao;
@@ -527,11 +524,9 @@ public class ScopeApplicationAdapter ext
         * @param currentClient
         * @param currentScope
         */
-       public synchronized void roomLeaveByScope(Client currentClient,
-                       IScope currentScope, boolean removeUserFromSessionList) 
{
+       public synchronized void roomLeaveByScope(Client currentClient, IScope 
currentScope, boolean removeUserFromSessionList) {
                try {
                        log.debug("currentClient " + currentClient);
-
                        Long room_id = currentClient.getRoom_id();
 
                        // Log the User
@@ -557,7 +552,7 @@ public class ScopeApplicationAdapter ext
                                log.debug("*** roomLeave Current Client is 
Recording - stop that");
                                if (currentClient.getInterviewPodId() != null) {
                                        //interview, TODO need better check
-                                       stopInterviewRecording();
+                                       _stopInterviewRecording(currentClient, 
currentScope);
                                } else {
                                        
flvRecorderService.stopRecordAndSave(currentScope, currentClient, null);
 
@@ -2431,14 +2426,22 @@ public class ScopeApplicationAdapter ext
         * @return true if interview was found
         */
        public synchronized Boolean stopInterviewRecording() {
+               IConnection current = Red5.getConnectionLocal();
+               Client currentClient = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
+               return _stopInterviewRecording(currentClient, 
current.getScope());
+       }
+       
+       /**
+        * Stop the recording of the streams and send event to connected users 
of scope
+        * 
+        * @return true if interview was found
+        */
+       private synchronized Boolean _stopInterviewRecording(Client 
currentClient, IScope currentScope) {
                try {
                        log.debug("-----------  stopInterviewRecording");
-                       IConnection current = Red5.getConnectionLocal();
-
-                       Long flvRecordingId = checkRecordingClient(current);
+                       Long flvRecordingId = currentClient.getFlvRecordingId();
 
-                       Set<IConnection> conset = 
current.getScope().getClientConnections();
-                       for (IConnection conn : conset) {
+                       for (IConnection conn : 
currentScope.getClientConnections()) {
                                Long recordingId = checkRecordingClient(conn);
                                if (recordingId != null) {
                                        flvRecordingId = recordingId;
@@ -2449,14 +2452,12 @@ public class ScopeApplicationAdapter ext
                                return false;
                        }
 
-                       Client currentClient = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
-
                        flvRecorderService.stopRecordAndSave(scope, 
currentClient, flvRecordingId);
 
                        Map<String, String> interviewStatus = new 
HashMap<String, String>();
                        interviewStatus.put("action", "stop");
 
-                       for (IConnection conn : conset) {
+                       for (IConnection conn : 
currentScope.getClientConnections()) {
                                if (conn != null) {
                                        IClient client = conn.getClient();
                                        if 
(SessionVariablesUtil.isScreenClient(client)) {
@@ -2466,9 +2467,7 @@ public class ScopeApplicationAdapter ext
                                                // AVClients or potential 
AVClients do not receive events
                                                continue;
                                        }
-                                       ((IServiceCapableConnection) 
conn).invoke(
-                                                       "interviewStatus",
-                                                       new Object[] { 
interviewStatus }, this);
+                                       ((IServiceCapableConnection) 
conn).invoke("interviewStatus", new Object[] { interviewStatus }, this);
                                }
                        }
                        return true;

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java?rev=1609764&r1=1609763&r2=1609764&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java
 Fri Jul 11 18:33:44 2014
@@ -37,7 +37,6 @@ import org.apache.openmeetings.db.dao.re
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dao.user.IUserManager;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.FlvRecording;
@@ -90,8 +89,6 @@ public class FLVRecorderService implemen
        @Autowired
        private SessiondataDao sessiondataDao;
        @Autowired
-       private IUserManager userManager;
-       @Autowired
        private ScopeApplicationAdapter scopeApplicationAdapter;
        @Autowired
        private FlvRecordingMetaDeltaDao metaDeltaDao;
@@ -510,7 +507,6 @@ public class FLVRecorderService implemen
                try {
                        Long users_id = sessiondataDao.checkSession(SID);
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
-
                                log.debug("updateFileOrFolderName " + 
flvRecordingId);
 
                                FlvRecording flvRecording = 
flvRecordingDaoImpl.get(flvRecordingId);

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1609764&r1=1609763&r2=1609764&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 Fri Jul 11 18:33:44 2014
@@ -46,7 +46,6 @@ import org.apache.openmeetings.db.dao.ro
 import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.server.ServerDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dao.user.IUserManager;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.room.BrowserStatus;
 import org.apache.openmeetings.db.dto.room.RoomStatus;
@@ -98,8 +97,6 @@ public class ScopeApplicationAdapter ext
        @Autowired
        private SessiondataDao sessiondataDao;
        @Autowired
-       private IUserManager userManager;
-       @Autowired
        private RoomManager roomManager;
        @Autowired
        private ConferenceLogDao conferenceLogDao;
@@ -527,11 +524,9 @@ public class ScopeApplicationAdapter ext
         * @param currentClient
         * @param currentScope
         */
-       public synchronized void roomLeaveByScope(Client currentClient,
-                       IScope currentScope, boolean removeUserFromSessionList) 
{
+       public synchronized void roomLeaveByScope(Client currentClient, IScope 
currentScope, boolean removeUserFromSessionList) {
                try {
                        log.debug("currentClient " + currentClient);
-
                        Long room_id = currentClient.getRoom_id();
 
                        // Log the User
@@ -557,7 +552,7 @@ public class ScopeApplicationAdapter ext
                                log.debug("*** roomLeave Current Client is 
Recording - stop that");
                                if (currentClient.getInterviewPodId() != null) {
                                        //interview, TODO need better check
-                                       stopInterviewRecording();
+                                       _stopInterviewRecording(currentClient, 
currentScope);
                                } else {
                                        
flvRecorderService.stopRecordAndSave(currentScope, currentClient, null);
 
@@ -2431,14 +2426,22 @@ public class ScopeApplicationAdapter ext
         * @return true if interview was found
         */
        public synchronized Boolean stopInterviewRecording() {
+               IConnection current = Red5.getConnectionLocal();
+               Client currentClient = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
+               return _stopInterviewRecording(currentClient, 
current.getScope());
+       }
+       
+       /**
+        * Stop the recording of the streams and send event to connected users 
of scope
+        * 
+        * @return true if interview was found
+        */
+       private synchronized Boolean _stopInterviewRecording(Client 
currentClient, IScope currentScope) {
                try {
                        log.debug("-----------  stopInterviewRecording");
-                       IConnection current = Red5.getConnectionLocal();
-
-                       Long flvRecordingId = checkRecordingClient(current);
+                       Long flvRecordingId = currentClient.getFlvRecordingId();
 
-                       Set<IConnection> conset = 
current.getScope().getClientConnections();
-                       for (IConnection conn : conset) {
+                       for (IConnection conn : 
currentScope.getClientConnections()) {
                                Long recordingId = checkRecordingClient(conn);
                                if (recordingId != null) {
                                        flvRecordingId = recordingId;
@@ -2449,14 +2452,12 @@ public class ScopeApplicationAdapter ext
                                return false;
                        }
 
-                       Client currentClient = 
sessionManager.getClientByStreamId(current.getClient().getId(), null);
-
                        flvRecorderService.stopRecordAndSave(scope, 
currentClient, flvRecordingId);
 
                        Map<String, String> interviewStatus = new 
HashMap<String, String>();
                        interviewStatus.put("action", "stop");
 
-                       for (IConnection conn : conset) {
+                       for (IConnection conn : 
currentScope.getClientConnections()) {
                                if (conn != null) {
                                        IClient client = conn.getClient();
                                        if 
(SessionVariablesUtil.isScreenClient(client)) {
@@ -2466,9 +2467,7 @@ public class ScopeApplicationAdapter ext
                                                // AVClients or potential 
AVClients do not receive events
                                                continue;
                                        }
-                                       ((IServiceCapableConnection) 
conn).invoke(
-                                                       "interviewStatus",
-                                                       new Object[] { 
interviewStatus }, this);
+                                       ((IServiceCapableConnection) 
conn).invoke("interviewStatus", new Object[] { interviewStatus }, this);
                                }
                        }
                        return true;


Reply via email to