You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2013/10/03 18:31:54 UTC

svn commit: r1528921 [2/2] - in /openmeetings: branches/2.x/src/org/apache/openmeetings/data/flvrecord/listener/ branches/2.x/src/org/apache/openmeetings/data/flvrecord/listener/async/ branches/2.x/src/org/apache/openmeetings/remote/ trunk/singlewebapp...

Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java?rev=1528921&r1=1528920&r2=1528921&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java Thu Oct  3 16:31:53 2013
@@ -18,11 +18,12 @@
  */
 package org.apache.openmeetings.data.flvrecord.listener.async;
 
+import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
+
 import java.io.IOException;
 import java.util.Date;
 
 import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
 import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDeltaDao;
 import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
@@ -31,61 +32,56 @@ import org.red5.io.ITag;
 import org.red5.io.flv.impl.Tag;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.scope.IScope;
+import org.red5.server.net.rtmp.event.VideoData.FrameType;
 import org.slf4j.Logger;
 
 public class StreamAudioWriter extends BaseStreamWriter {
-
-	private static final Logger log = Red5LoggerFactory.getLogger(
-			StreamAudioWriter.class, OpenmeetingsVariables.webAppRootKey);
+	private static final Logger log = Red5LoggerFactory.getLogger(StreamAudioWriter.class, webAppRootKey);
 
 	private int duration = 0;
 
 	private int startTimeStamp = -1;
 
-	private long initialDelta = 0;
-
 	private Integer lastTimeStamp = -1;
 	private Date lastcurrentTime = null;
 
 	private int lastStreamPacketTimeStamp = -1;
 
 	private long byteCount = 0;
-	
+
 	// Autowire is not possible
-	protected final FlvRecordingMetaDeltaDao flvRecordingMetaDeltaDao;
-	protected final FlvRecordingMetaDataDao flvRecordingMetaDataDao;
+	protected final FlvRecordingMetaDeltaDao metaDeltaDao;
+	protected final FlvRecordingMetaDataDao metaDataDao;
 
 	private boolean isInterview = false;
-	
-	public StreamAudioWriter(String streamName, IScope scope,
-			Long flvRecordingMetaDataId, boolean isScreenData,
-			boolean isInterview,
-			FlvRecordingMetaDeltaDao flvRecordingMetaDeltaDao,
-			FlvRecordingMetaDataDao flvRecordingMetaDataDao) {
+
+	public StreamAudioWriter(String streamName, IScope scope, Long flvRecordingMetaDataId, boolean isScreenData,
+			boolean isInterview, FlvRecordingMetaDataDao metaDataDao, FlvRecordingMetaDeltaDao metaDeltaDao) {
 		super(streamName, scope, flvRecordingMetaDataId, isScreenData);
-		
-		this.flvRecordingMetaDeltaDao = flvRecordingMetaDeltaDao;
-		this.flvRecordingMetaDataDao = flvRecordingMetaDataDao;
-		this.isInterview  = isInterview;
-		
-		FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDao.
-								getFlvRecordingMetaDataById(flvRecordingMetaDataId);
-		flvRecordingMetaData.setStreamReaderThreadComplete(false);
-		flvRecordingMetaDataDao.updateFlvRecordingMetaData(flvRecordingMetaData);
-		
+
+		this.metaDeltaDao = metaDeltaDao;
+		this.metaDataDao = metaDataDao;
+		this.isInterview = isInterview;
+
+		FlvRecordingMetaData metaData = metaDataDao.get(flvRecordingMetaDataId);
+		metaData.setStreamReaderThreadComplete(false);
+		metaDataDao.update(metaData);
+
 	}
 
 	@Override
 	public void packetReceived(CachedEvent streampacket) {
 		try {
-
 			// We only care about audio at this moment
-			if (this.isInterview || streampacket.getDataType() == 8) {
-
+			if (isInterview || streampacket.getDataType() == 8) {
 				if (streampacket.getTimestamp() <= 0) {
 					log.warn("Negative TimeStamp");
 					return;
 				}
+				if (isInterview && startTimeStamp == -1 && FrameType.KEYFRAME != streampacket.getFrameType()) {
+					// skip until keyframe
+					return;
+				}
 
 				IoBuffer data = streampacket.getData().asReadOnlyBuffer();
 
@@ -93,120 +89,91 @@ public class StreamAudioWriter extends B
 					return;
 				}
 
-				this.byteCount += data.limit();
-				
+				byteCount += data.limit();
+
 				lastcurrentTime = streampacket.getCurrentTime();
 				int timeStamp = streampacket.getTimestamp();
 				Date virtualTime = streampacket.getCurrentTime();
 
+				// TODO seems like this copy/pasted block need to be refactored
 				if (startTimeStamp == -1) {
+					// Calculate the delta between the initial start and the first audio-packet data
+
+					initialDelta = virtualTime.getTime() - startedSessionTimeDate.getTime();
 
-					// Calculate the delta between the initial start and the
-					// first audio-packet data
+					FlvRecordingMetaDelta metaDelta = new FlvRecordingMetaDelta();
 
-					this.initialDelta = virtualTime.getTime()
-							- this.startedSessionTimeDate.getTime();
+					metaDelta.setDeltaTime(initialDelta);
+					metaDelta.setFlvRecordingMetaDataId(flvRecordingMetaDataId);
+					metaDelta.setTimeStamp(0);
+					metaDelta.setDebugStatus("INIT AUDIO");
+					metaDelta.setIsStartPadding(true);
+					metaDelta.setIsEndPadding(false);
+					metaDelta.setDataLengthPacket(data.limit());
+					metaDelta.setReceivedAudioDataLength(byteCount);
+					metaDelta.setStartTime(startedSessionTimeDate);
+					metaDelta.setPacketTimeStamp(streampacket.getTimestamp());
 
-					FlvRecordingMetaDelta flvRecordingMetaDelta = new FlvRecordingMetaDelta();
+					Long deltaTimeStamp = virtualTime.getTime() - startedSessionTimeDate.getTime();
 
-					flvRecordingMetaDelta.setDeltaTime(this.initialDelta);
-					flvRecordingMetaDelta
-							.setFlvRecordingMetaDataId(this.flvRecordingMetaDataId);
-					flvRecordingMetaDelta.setTimeStamp(0);
-					flvRecordingMetaDelta.setDebugStatus("INIT AUDIO");
-					flvRecordingMetaDelta.setIsStartPadding(true);
-					flvRecordingMetaDelta.setIsEndPadding(false);
-					flvRecordingMetaDelta.setDataLengthPacket(data.limit());
-					flvRecordingMetaDelta
-							.setReceivedAudioDataLength(this.byteCount);
-					flvRecordingMetaDelta
-							.setStartTime(this.startedSessionTimeDate);
-					flvRecordingMetaDelta.setPacketTimeStamp(streampacket
-							.getTimestamp());
-
-					Long deltaTimeStamp = virtualTime.getTime()
-							- this.startedSessionTimeDate.getTime();
-
-					// this.duration = Math.max(this.duration, 0 +
-					// this.writer.getOffset());
-					flvRecordingMetaDelta.setDuration(0);
+					metaDelta.setDuration(0);
 
 					Long missingTime = deltaTimeStamp - 0;
 
-					flvRecordingMetaDelta.setMissingTime(missingTime);
+					metaDelta.setMissingTime(missingTime);
 
-					flvRecordingMetaDelta.setCurrentTime(virtualTime);
-					flvRecordingMetaDelta.setDeltaTimeStamp(deltaTimeStamp);
-					flvRecordingMetaDelta.setStartTimeStamp(startTimeStamp);
+					metaDelta.setCurrentTime(virtualTime);
+					metaDelta.setDeltaTimeStamp(deltaTimeStamp);
+					metaDelta.setStartTimeStamp(startTimeStamp);
 
-					flvRecordingMetaDeltaDao
-							.addFlvRecordingMetaDelta(flvRecordingMetaDelta);
+					metaDeltaDao.addFlvRecordingMetaDelta(metaDelta);
 
 					// That will be not bigger then long value
-					this.startTimeStamp = (streampacket.getTimestamp());
-
-					// We have to set that to bypass the initial delta
-					// lastTimeStamp = startTimeStamp;
+					startTimeStamp = streampacket.getTimestamp();
 				}
 
-				
+				lastStreamPacketTimeStamp = streampacket.getTimestamp();
 
-				this.lastStreamPacketTimeStamp = streampacket.getTimestamp();
+				timeStamp -= startTimeStamp;
 
-				timeStamp -= this.startTimeStamp;
-
-				long deltaTime = 0;
-				if (lastTimeStamp == -1) {
-					deltaTime = 0; // Offset at the beginning is calculated
-									// above
-				} else {
-					deltaTime = timeStamp - lastTimeStamp;
-				}
+				// Offset at the beginning is calculated above
+				long deltaTime = lastTimeStamp == -1 ? 0 : timeStamp - lastTimeStamp;
 
-				Long preLastTimeStamp = Long
-						.parseLong(lastTimeStamp.toString());
+				Long preLastTimeStamp = Long.parseLong(lastTimeStamp.toString());
 
 				lastTimeStamp = timeStamp;
 
 				if (deltaTime > 75) {
 
-					FlvRecordingMetaDelta flvRecordingMetaDelta = new FlvRecordingMetaDelta();
+					FlvRecordingMetaDelta metaDelta = new FlvRecordingMetaDelta();
 
-					flvRecordingMetaDelta.setDeltaTime(deltaTime);
-					flvRecordingMetaDelta
-							.setFlvRecordingMetaDataId(this.flvRecordingMetaDataId);
-					flvRecordingMetaDelta.setTimeStamp(timeStamp);
-					flvRecordingMetaDelta.setDebugStatus("RUN AUDIO");
-					flvRecordingMetaDelta.setIsStartPadding(false);
-					flvRecordingMetaDelta.setLastTimeStamp(preLastTimeStamp);
-					flvRecordingMetaDelta.setIsEndPadding(false);
-					flvRecordingMetaDelta.setDataLengthPacket(data.limit());
-					flvRecordingMetaDelta
-							.setReceivedAudioDataLength(this.byteCount);
-					flvRecordingMetaDelta
-							.setStartTime(this.startedSessionTimeDate);
-					flvRecordingMetaDelta.setPacketTimeStamp(streampacket
-							.getTimestamp());
+					metaDelta.setDeltaTime(deltaTime);
+					metaDelta.setFlvRecordingMetaDataId(flvRecordingMetaDataId);
+					metaDelta.setTimeStamp(timeStamp);
+					metaDelta.setDebugStatus("RUN AUDIO");
+					metaDelta.setIsStartPadding(false);
+					metaDelta.setLastTimeStamp(preLastTimeStamp);
+					metaDelta.setIsEndPadding(false);
+					metaDelta.setDataLengthPacket(data.limit());
+					metaDelta.setReceivedAudioDataLength(byteCount);
+					metaDelta.setStartTime(startedSessionTimeDate);
+					metaDelta.setPacketTimeStamp(streampacket.getTimestamp());
 
 					Date current_date = new Date();
-					Long deltaTimeStamp = current_date.getTime()
-							- this.startedSessionTimeDate.getTime();
+					Long deltaTimeStamp = current_date.getTime() - startedSessionTimeDate.getTime();
 
-					this.duration = Math.max(this.duration, timeStamp
-							+ this.writer.getOffset());
-					flvRecordingMetaDelta.setDuration(this.duration);
+					duration = Math.max(duration, timeStamp + writer.getOffset());
+					metaDelta.setDuration(duration);
 
 					Long missingTime = deltaTimeStamp - timeStamp;
 
-					flvRecordingMetaDelta.setMissingTime(missingTime);
+					metaDelta.setMissingTime(missingTime);
 
-					flvRecordingMetaDelta.setCurrentTime(current_date);
-					flvRecordingMetaDelta.setDeltaTimeStamp(deltaTimeStamp);
-					flvRecordingMetaDelta.setStartTimeStamp(startTimeStamp);
-
-					flvRecordingMetaDeltaDao
-							.addFlvRecordingMetaDelta(flvRecordingMetaDelta);
+					metaDelta.setCurrentTime(current_date);
+					metaDelta.setDeltaTimeStamp(deltaTimeStamp);
+					metaDelta.setStartTimeStamp(startTimeStamp);
 
+					metaDeltaDao.addFlvRecordingMetaDelta(metaDelta);
 				}
 
 				ITag tag = new Tag();
@@ -239,12 +206,13 @@ public class StreamAudioWriter extends B
 		try {
 			// We do not add any End Padding or count the gaps for the
 			// Screen Data, cause there is no!
-			
+
 			Date virtualTime = lastcurrentTime;
 			log.debug("virtualTime: " + virtualTime);
 			log.debug("startedSessionTimeDate: " + startedSessionTimeDate);
-			
-			long deltaRecordingTime = virtualTime == null ? 0 : virtualTime.getTime() - startedSessionTimeDate.getTime();
+
+			long deltaRecordingTime = virtualTime == null ? 0 : virtualTime.getTime()
+					- startedSessionTimeDate.getTime();
 
 			log.debug("lastTimeStamp :closeStream: " + lastTimeStamp);
 			log.debug("lastStreamPacketTimeStamp :closeStream: " + lastStreamPacketTimeStamp);
@@ -254,28 +222,25 @@ public class StreamAudioWriter extends B
 
 			log.debug("deltaTimePaddingEnd :: " + deltaTimePaddingEnd);
 
-			FlvRecordingMetaDelta flvRecordingMetaDelta = new FlvRecordingMetaDelta();
+			FlvRecordingMetaDelta metaDelta = new FlvRecordingMetaDelta();
+
+			metaDelta.setDeltaTime(deltaTimePaddingEnd);
+			metaDelta.setFlvRecordingMetaDataId(flvRecordingMetaDataId);
+			metaDelta.setTimeStamp(lastTimeStamp);
+			metaDelta.setDebugStatus("END AUDIO");
+			metaDelta.setIsStartPadding(false);
+			metaDelta.setIsEndPadding(true);
+			metaDelta.setDataLengthPacket(null);
+			metaDelta.setReceivedAudioDataLength(byteCount);
+			metaDelta.setStartTime(startedSessionTimeDate);
+			metaDelta.setCurrentTime(new Date());
+
+			metaDeltaDao.addFlvRecordingMetaDelta(metaDelta);
 
-			flvRecordingMetaDelta.setDeltaTime(deltaTimePaddingEnd);
-			flvRecordingMetaDelta
-					.setFlvRecordingMetaDataId(flvRecordingMetaDataId);
-			flvRecordingMetaDelta.setTimeStamp(lastTimeStamp);
-			flvRecordingMetaDelta.setDebugStatus("END AUDIO");
-			flvRecordingMetaDelta.setIsStartPadding(false);
-			flvRecordingMetaDelta.setIsEndPadding(true);
-			flvRecordingMetaDelta.setDataLengthPacket(null);
-			flvRecordingMetaDelta
-					.setReceivedAudioDataLength(byteCount);
-			flvRecordingMetaDelta.setStartTime(startedSessionTimeDate);
-			flvRecordingMetaDelta.setCurrentTime(new Date());
-
-			flvRecordingMetaDeltaDao
-					.addFlvRecordingMetaDelta(flvRecordingMetaDelta);
-			
-			//Write the complete Bit to the meta data, the converter task will wait for this bit!
-			FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDao.getFlvRecordingMetaDataById(flvRecordingMetaDataId);
+			// Write the complete Bit to the meta data, the converter task will wait for this bit!
+			FlvRecordingMetaData flvRecordingMetaData = metaDataDao.get(flvRecordingMetaDataId);
 			flvRecordingMetaData.setStreamReaderThreadComplete(true);
-			flvRecordingMetaDataDao.updateFlvRecordingMetaData(flvRecordingMetaData);
+			metaDataDao.update(flvRecordingMetaData);
 
 		} catch (Exception err) {
 			log.error("[closeStream]", err);

Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java?rev=1528921&r1=1528920&r2=1528921&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java Thu Oct  3 16:31:53 2013
@@ -18,11 +18,12 @@
  */
 package org.apache.openmeetings.data.flvrecord.listener.async;
 
+import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
+
 import java.io.IOException;
 import java.util.Date;
 
 import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
 import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
 import org.red5.io.ITag;
@@ -32,60 +33,38 @@ import org.red5.server.api.scope.IScope;
 import org.slf4j.Logger;
 
 public class StreamVideoWriter extends BaseStreamWriter {
-	
-	private int startTimeStamp = -1;
-
+	private static final Logger log = Red5LoggerFactory.getLogger(StreamVideoWriter.class, webAppRootKey);
 	private Date startedSessionScreenTimeDate = null;
 
-	private long initialDelta = 0;
-	
-	private final FlvRecordingMetaDataDao flvRecordingMetaDataDao;
-
-	private static final Logger log = Red5LoggerFactory.getLogger(
-			StreamVideoWriter.class, OpenmeetingsVariables.webAppRootKey);
-	
-	public StreamVideoWriter(String streamName, IScope scope,
-			Long flvRecordingMetaDataId, boolean isScreenData,
-			boolean isInterview,
-			FlvRecordingMetaDataDao flvRecordingMetaDataDao) {
-		
+	private final FlvRecordingMetaDataDao metaDataDao;
+
+	public StreamVideoWriter(String streamName, IScope scope, Long flvRecordingMetaDataId, boolean isScreenData,
+			boolean isInterview, FlvRecordingMetaDataDao metaDataDao) {
+
 		super(streamName, scope, flvRecordingMetaDataId, isScreenData);
-		
-		this.flvRecordingMetaDataDao = flvRecordingMetaDataDao;
-		
-		FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDao.
-				getFlvRecordingMetaDataById(flvRecordingMetaDataId);
-		flvRecordingMetaData.setStreamReaderThreadComplete(false);
-		flvRecordingMetaDataDao.updateFlvRecordingMetaData(flvRecordingMetaData);
+
+		this.metaDataDao = metaDataDao;
+
+		FlvRecordingMetaData metaData = metaDataDao.get(flvRecordingMetaDataId);
+		metaData.setStreamReaderThreadComplete(false);
+		metaDataDao.update(metaData);
 	}
-	
+
 	@Override
 	public void packetReceived(CachedEvent streampacket) {
 		try {
-
-			// We only are concerned about video at this moment
-			// if (streampacket.getDataType() == 9) {
-			
 			int timeStamp = streampacket.getTimestamp();
 			Date virtualTime = streampacket.getCurrentTime();
 
-			if (this.startedSessionScreenTimeDate == null) {
-
-				this.startedSessionScreenTimeDate = virtualTime;
+			if (startedSessionScreenTimeDate == null) {
+				startedSessionScreenTimeDate = virtualTime;
 
-				// Calculate the delta between the initial start and the first
-				// packet data
-
-				this.initialDelta = this.startedSessionScreenTimeDate.getTime()
-						- this.startedSessionTimeDate.getTime();
-
-				// This is important for the Interview Post Processing to get
-				// the time between starting the stream and the actual Access to
-				// the
-				// webcam by the Flash Security Dialog
-				flvRecordingMetaDataDao.updateFlvRecordingMetaDataInitialGap(
-						flvRecordingMetaDataId, this.initialDelta);
+				// Calculate the delta between the initial start and the first packet data
+				initialDelta = startedSessionScreenTimeDate.getTime() - startedSessionTimeDate.getTime();
 
+				// This is important for the Interview Post Processing to get the time between starting the stream and
+				// the actual Access to the webcam by the Flash Security Dialog
+				metaDataDao.updateFlvRecordingMetaDataInitialGap(flvRecordingMetaDataId, initialDelta);
 			}
 
 			if (streampacket.getTimestamp() <= 0) {
@@ -109,21 +88,11 @@ public class StreamVideoWriter extends B
 			ITag tag = new Tag();
 			tag.setDataType(streampacket.getDataType());
 
-			// log.debug("data.limit() :: "+data.limit());
 			tag.setBodySize(data.limit());
 			tag.setTimestamp(timeStamp);
 			tag.setBody(data);
 
-//			if (this.isInterview) {
-//				if (timeStamp <= 500) {
-//					// We will cut the first 0.5 seconds
-//					// The First seconds seem to break the Recording Video often
-//					return;
-//				}
-//			}
-			
 			writer.writeTag(tag);
-
 		} catch (IOException e) {
 			log.error("[packetReceived]", e);
 		} catch (Exception e) {
@@ -134,29 +103,19 @@ public class StreamVideoWriter extends B
 	@Override
 	public void closeStream() {
 		try {
-			
 			writer.close();
 
-			// Add Delta in the beginning, this Delta is the Gap between the
-			// device chosen and when the User hits the button in the Flash
-			// Security Warning
-			FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDao
-					.getFlvRecordingMetaDataById(this.flvRecordingMetaDataId);
-
-			flvRecordingMetaData.setRecordStart(new Date(
-					flvRecordingMetaData.getRecordStart().getTime()
-							+ this.initialDelta));
-			
-			flvRecordingMetaData.setStreamReaderThreadComplete(true);
-			
-			flvRecordingMetaDataDao
-					.updateFlvRecordingMetaData(flvRecordingMetaData);
-			
-			
+			// Add Delta in the beginning, this Delta is the Gap between the device chosen and when the User hits the
+			// button in the Flash Security Warning
+			FlvRecordingMetaData metaData = metaDataDao.get(flvRecordingMetaDataId);
 
+			metaData.setRecordStart(new Date(metaData.getRecordStart().getTime() + initialDelta));
+
+			metaData.setStreamReaderThreadComplete(true);
+
+			metaDataDao.update(metaData);
 		} catch (Exception err) {
 			log.error("[closeStream]", err);
 		}
 	}
-
 }

Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java?rev=1528921&r1=1528920&r2=1528921&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java Thu Oct  3 16:31:53 2013
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.db.dao.record;
 
+import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
+
 import java.util.Date;
 import java.util.List;
 
@@ -26,7 +28,6 @@ import javax.persistence.NoResultExcepti
 import javax.persistence.PersistenceContext;
 import javax.persistence.TypedQuery;
 
-import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.db.entity.record.FlvRecording;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -34,32 +35,30 @@ import org.springframework.transaction.a
 
 /**
  * @author sebastianwagner
- *
+ * 
  */
 @Transactional
 public class FlvRecordingDao {
-	private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingDao.class,
-			OpenmeetingsVariables.webAppRootKey);
+	private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingDao.class, webAppRootKey);
 	@PersistenceContext
 	private EntityManager em;
-	
-	public FlvRecording getFlvRecordingById(Long flvRecordingId) {
-		try { 
-			
-			String hql = "SELECT c FROM FlvRecording c " +
-					"WHERE c.flvRecordingId = :flvRecordingId";
-			
+
+	public FlvRecording get(Long flvRecordingId) {
+		try {
+
+			String hql = "SELECT c FROM FlvRecording c WHERE c.flvRecordingId = :flvRecordingId";
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
 			query.setParameter("flvRecordingId", flvRecordingId);
-			
+
 			FlvRecording flvRecording = null;
 			try {
 				flvRecording = query.getSingleResult();
-		    } catch (NoResultException ex) {
-		    }
+			} catch (NoResultException ex) {
+			}
 			return flvRecording;
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordingById]: ",ex2);
+			log.error("[getFlvRecordingById]: ", ex2);
 		}
 		return null;
 	}
@@ -68,267 +67,251 @@ public class FlvRecordingDao {
 		try {
 			TypedQuery<FlvRecording> query = em.createNamedQuery("getRecordingByHash", FlvRecording.class);
 			query.setParameter("fileHash", hash);
-			
+
 			try {
 				return query.getSingleResult();
-		    } catch (NoResultException ex) {
-		    	//noop
-		    }
+			} catch (NoResultException ex) {
+				// noop
+			}
 		} catch (Exception ex2) {
-			log.error("[getRecordingByHash]: ",ex2);
+			log.error("[getRecordingByHash]: ", ex2);
 		}
 		return null;
 	}
 
 	public List<FlvRecording> getFlvRecordings() {
-		try { 
-			
-			String hql = "SELECT c FROM FlvRecording c " +
-							"WHERE c.deleted <> :deleted ";
-			
+		try {
+
+			String hql = "SELECT c FROM FlvRecording c WHERE c.deleted <> :deleted ";
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
 			query.setParameter("deleted", true);
-			
+
 			List<FlvRecording> flvRecordings = query.getResultList();
-			
+
 			return flvRecordings;
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordings]: ",ex2);
+			log.error("[getFlvRecordings]: ", ex2);
 		}
 		return null;
 	}
-	
-	
+
 	public List<FlvRecording> getFlvRecordingByExternalUserId(String externalUserId) {
-		try { 
-			
-			log.debug("getFlvRecordingByExternalUserId :externalUserId: "+externalUserId);
-			
-			String hql = "SELECT c FROM FlvRecording c, Room r, User u " +
-					"WHERE c.room_id = r.rooms_id " +
-					"AND c.insertedBy = u.user_id " +
-					"AND u.externalUserId LIKE :externalUserId " +
-					"AND c.deleted <> :deleted ";
-			
+		try {
+
+			log.debug("getFlvRecordingByExternalUserId :externalUserId: " + externalUserId);
+
+			String hql = "SELECT c FROM FlvRecording c, Room r, User u WHERE c.room_id = r.rooms_id "
+					+ "AND c.insertedBy = u.user_id AND u.externalUserId LIKE :externalUserId "
+					+ "AND c.deleted <> :deleted ";
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
 			query.setParameter("externalUserId", externalUserId);
 			query.setParameter("deleted", true);
-			
+
 			List<FlvRecording> flvRecordingList = query.getResultList();
-						
-			log.debug("getFlvRecordingByExternalRoomType :: "+flvRecordingList.size());
-			
+
+			log.debug("getFlvRecordingByExternalRoomType :: " + flvRecordingList.size());
+
 			return flvRecordingList;
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordingByExternalRoomType]: ",ex2);
+			log.error("[getFlvRecordingByExternalRoomType]: ", ex2);
 		}
 		return null;
 	}
-	
+
 	public List<FlvRecording> getFlvRecordingByExternalRoomTypeAndCreator(String externalRoomType, Long insertedBy) {
-		try { 
-			
-			log.debug("getFlvRecordingByExternalRoomType :externalRoomType: "+externalRoomType);
-			
-			String hql = "SELECT c FROM FlvRecording c, Room r " +
-					"WHERE c.room_id = r.rooms_id " +
-					"AND r.externalRoomType LIKE :externalRoomType " +
-					"AND c.insertedBy LIKE :insertedBy " +
-					"AND c.deleted <> :deleted ";
-			
+		try {
+
+			log.debug("getFlvRecordingByExternalRoomType :externalRoomType: " + externalRoomType);
+
+			String hql = "SELECT c FROM FlvRecording c, Room r WHERE c.room_id = r.rooms_id "
+					+ "AND r.externalRoomType LIKE :externalRoomType AND c.insertedBy LIKE :insertedBy "
+					+ "AND c.deleted <> :deleted ";
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
 			query.setParameter("externalRoomType", externalRoomType);
 			query.setParameter("insertedBy", insertedBy);
 			query.setParameter("deleted", true);
-			
+
 			List<FlvRecording> flvRecordingList = query.getResultList();
-						
-			log.debug("getFlvRecordingByExternalRoomType :: "+flvRecordingList.size());
-			
+
+			log.debug("getFlvRecordingByExternalRoomType :: " + flvRecordingList.size());
+
 			return flvRecordingList;
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordingByExternalRoomType]: ",ex2);
+			log.error("[getFlvRecordingByExternalRoomType]: ", ex2);
 		}
 		return null;
 	}
-	
+
 	public List<FlvRecording> getAllFlvRecordings() {
-		try { 
+		try {
 			String hql = "SELECT c FROM FlvRecording c LEFT JOIN FETCH c.flvRecordingMetaData";
-			
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
-			
+
 			return query.getResultList();
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordings]: ",ex2);
+			log.error("[getFlvRecordings]: ", ex2);
 		}
 		return null;
 	}
-	
+
 	public List<FlvRecording> getFlvRecordingByExternalRoomType(String externalRoomType) {
-		try { 
-			
-			log.debug("getFlvRecordingByExternalRoomType :externalRoomType: "+externalRoomType);
-			
-			String hql = "SELECT c FROM FlvRecording c, Room r " +
-					"WHERE c.room_id = r.rooms_id " +
-					"AND r.externalRoomType LIKE :externalRoomType " +
-					"AND c.deleted <> :deleted ";
-			
+		try {
+
+			log.debug("getFlvRecordingByExternalRoomType :externalRoomType: " + externalRoomType);
+
+			String hql = "SELECT c FROM FlvRecording c, Room r " + "WHERE c.room_id = r.rooms_id "
+					+ "AND r.externalRoomType LIKE :externalRoomType " + "AND c.deleted <> :deleted ";
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
 			query.setParameter("externalRoomType", externalRoomType);
 			query.setParameter("deleted", true);
-			
+
 			List<FlvRecording> flvRecordingList = query.getResultList();
-			
-			log.debug("getFlvRecordingByExternalRoomType :: "+flvRecordingList.size());
-			
+
+			log.debug("getFlvRecordingByExternalRoomType :: " + flvRecordingList.size());
+
 			return flvRecordingList;
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordingByExternalRoomType]: ",ex2);
+			log.error("[getFlvRecordingByExternalRoomType]: ", ex2);
 		}
 		return null;
 	}
-	
+
 	public List<FlvRecording> getFlvRecordingsPublic() {
 		try {
-			
-			String hql = "SELECT c FROM FlvRecording c " +
-					"WHERE c.deleted <> :deleted " +
-					"AND (c.ownerId IS NULL OR c.ownerId = 0)  " +
-					"AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) " +
-					"ORDER BY c.isFolder DESC, c.fileName ";
-			
+
+			String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted "
+					+ "AND (c.ownerId IS NULL OR c.ownerId = 0)  "
+					+ "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) "
+					+ "ORDER BY c.isFolder DESC, c.fileName ";
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
 			query.setParameter("deleted", true);
-			
+
 			List<FlvRecording> flvRecordingList = query.getResultList();
 			return flvRecordingList;
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordingsPublic]: ",ex2);
+			log.error("[getFlvRecordingsPublic]: ", ex2);
 		}
 		return null;
 	}
-	
+
 	public List<FlvRecording> getFlvRecordingRootByPublic(Long organization_id) {
 		try {
-			
-			String hql = "SELECT c FROM FlvRecording c " +
-					"WHERE c.deleted <> :deleted " +
-					"AND c.ownerId IS NULL " +
-					"AND c.organization_id = :organization_id " +
-					"AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) " +
-					"ORDER BY c.isFolder DESC, c.fileName ";
-			
+
+			String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted " + "AND c.ownerId IS NULL "
+					+ "AND c.organization_id = :organization_id "
+					+ "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) "
+					+ "ORDER BY c.isFolder DESC, c.fileName ";
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
 			query.setParameter("organization_id", organization_id);
 			query.setParameter("deleted", true);
-			
+
 			List<FlvRecording> flvRecordingList = query.getResultList();
-			
+
 			return flvRecordingList;
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordingRootByPublic]: ",ex2);
+			log.error("[getFlvRecordingRootByPublic]: ", ex2);
 		}
 		return null;
 	}
-	
+
 	public List<FlvRecording> getFlvRecordingRootByOwner(Long ownerId) {
 		try {
-			
-			String hql = "SELECT c FROM FlvRecording c " +
-					"WHERE c.deleted <> :deleted " +
-					"AND c.ownerId = :ownerId " +
-					"AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) " +
-					"ORDER BY c.isFolder DESC, c.fileName ";
-			
+
+			String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted " + "AND c.ownerId = :ownerId "
+					+ "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) "
+					+ "ORDER BY c.isFolder DESC, c.fileName ";
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
 			query.setParameter("deleted", true);
-			query.setParameter("ownerId",ownerId);
-			
+			query.setParameter("ownerId", ownerId);
+
 			List<FlvRecording> flvRecordingList = query.getResultList();
-			
+
 			return flvRecordingList;
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordingByOwner]: ",ex2);
+			log.error("[getFlvRecordingByOwner]: ", ex2);
 		}
 		return null;
 	}
-	
+
 	public List<FlvRecording> getFlvRecordingByOwner(Long ownerId, Long parentFileExplorerItemId) {
 		try {
-			
-			String hql = "SELECT c FROM FlvRecording c " +
-					"WHERE c.deleted <> :deleted " +
-					"AND c.ownerId = :ownerId " +
-					"AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = :parentFileExplorerItemId)" +
-					"ORDER BY c.isFolder DESC, c.fileName ";
-			
+
+			String hql = "SELECT c FROM FlvRecording c "
+					+ "WHERE c.deleted <> :deleted "
+					+ "AND c.ownerId = :ownerId "
+					+ "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = :parentFileExplorerItemId)"
+					+ "ORDER BY c.isFolder DESC, c.fileName ";
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
 			query.setParameter("deleted", true);
-			query.setParameter("ownerId",ownerId);
+			query.setParameter("ownerId", ownerId);
 			query.setParameter("parentFileExplorerItemId", parentFileExplorerItemId);
-			
+
 			List<FlvRecording> flvRecordingList = query.getResultList();
-			
+
 			return flvRecordingList;
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordingByOwner]: ",ex2);
+			log.error("[getFlvRecordingByOwner]: ", ex2);
 		}
 		return null;
 	}
-	
+
 	public List<FlvRecording> getFlvRecordingByRoomId(Long room_id) {
 		try {
-			
-			String hql = "SELECT c FROM FlvRecording c " +
-					"WHERE c.deleted <> :deleted " +
-					"AND c.room_id = :room_id " +
-					"ORDER BY c.isFolder DESC, c.fileName ";
-			
+
+			String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted " + "AND c.room_id = :room_id "
+					+ "ORDER BY c.isFolder DESC, c.fileName ";
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
 			query.setParameter("deleted", true);
-			query.setParameter("room_id",room_id);
-			
+			query.setParameter("room_id", room_id);
+
 			List<FlvRecording> flvRecordingList = query.getResultList();
-			
+
 			return flvRecordingList;
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordingByOwner]: ",ex2);
+			log.error("[getFlvRecordingByOwner]: ", ex2);
 		}
 		return null;
 	}
 
 	public List<FlvRecording> getFlvRecordingByParent(Long parentFileExplorerItemId) {
 		try {
-			
-			String hql = "SELECT c FROM FlvRecording c " +
-					"WHERE c.deleted <> :deleted " +
-					"AND c.parentFileExplorerItemId = :parentFileExplorerItemId " +
-					"ORDER BY c.isFolder DESC, c.fileName ";
-			
+
+			String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted "
+					+ "AND c.parentFileExplorerItemId = :parentFileExplorerItemId "
+					+ "ORDER BY c.isFolder DESC, c.fileName ";
+
 			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
 			query.setParameter("deleted", true);
 			query.setParameter("parentFileExplorerItemId", parentFileExplorerItemId);
-			
+
 			List<FlvRecording> flvRecordingList = query.getResultList();
-			
+
 			return flvRecordingList;
 		} catch (Exception ex2) {
-			log.error("[getFlvRecordingByParent]: ",ex2);
+			log.error("[getFlvRecordingByParent]: ", ex2);
 		}
 		return null;
 	}
-	
-	public Long addFlvFolderRecording(String fileHash, String fileName, Long fileSize, Long user_id, 
-			Long room_id, Date recordStart, Date recordEnd, Long ownerId, String comment, 
-			Long  parentFileExplorerItemId, Long organization_id) {
-		try { 
-			
+
+	public Long addFlvFolderRecording(String fileHash, String fileName, Long fileSize, Long user_id, Long room_id,
+			Date recordStart, Date recordEnd, Long ownerId, String comment, Long parentFileExplorerItemId,
+			Long organization_id) {
+		try {
+
 			FlvRecording flvRecording = new FlvRecording();
-			
+
 			flvRecording.setParentFileExplorerItemId(parentFileExplorerItemId);
-			
+
 			flvRecording.setDeleted(false);
 			flvRecording.setFileHash(fileHash);
 			flvRecording.setFileName(fileName);
@@ -341,30 +324,30 @@ public class FlvRecordingDao {
 			flvRecording.setIsRecording(true);
 			flvRecording.setComment(comment);
 			flvRecording.setOrganization_id(organization_id);
-			
+
 			flvRecording.setRoom_id(room_id);
 			flvRecording.setRecordStart(recordStart);
 			flvRecording.setRecordEnd(recordEnd);
-			
+
 			flvRecording.setOwnerId(ownerId);
-			
+
 			flvRecording = em.merge(flvRecording);
 			Long flvRecordingId = flvRecording.getFlvRecordingId();
-			
+
 			return flvRecordingId;
 		} catch (Exception ex2) {
-			log.error("[addFlvRecording]: ",ex2);
+			log.error("[addFlvRecording]: ", ex2);
 		}
 		return null;
 	}
-	
-	public Long addFlvRecording(String fileHash, String fileName, Long fileSize, Long user_id, 
-			Long room_id, Date recordStart, Date recordEnd, Long ownerId, String comment, 
-			String recorderStreamId, Integer width, Integer height, Boolean isInterview) {
-		try { 
-			
+
+	public Long addFlvRecording(String fileHash, String fileName, Long fileSize, Long user_id, Long room_id,
+			Date recordStart, Date recordEnd, Long ownerId, String comment, String recorderStreamId, Integer width,
+			Integer height, Boolean isInterview) {
+		try {
+
 			FlvRecording flvRecording = new FlvRecording();
-			
+
 			flvRecording.setDeleted(false);
 			flvRecording.setFileHash(fileHash);
 			flvRecording.setFileName(fileName);
@@ -377,130 +360,130 @@ public class FlvRecordingDao {
 			flvRecording.setIsRecording(true);
 			flvRecording.setComment(comment);
 			flvRecording.setIsInterview(isInterview);
-			
+
 			flvRecording.setRoom_id(room_id);
 			flvRecording.setRecordStart(recordStart);
 			flvRecording.setRecordEnd(recordEnd);
-			
+
 			flvRecording.setWidth(width);
 			flvRecording.setHeight(height);
-			
+
 			flvRecording.setOwnerId(ownerId);
-			
+
 			flvRecording = em.merge(flvRecording);
 			Long flvRecordingId = flvRecording.getFlvRecordingId();
-			
+
 			return flvRecordingId;
 		} catch (Exception ex2) {
-			log.error("[addFlvRecording]: ",ex2);
+			log.error("[addFlvRecording]: ", ex2);
 		}
 		return null;
 	}
-	
+
 	public Long addFlvRecordingObj(FlvRecording flvRecording) {
-		try { 
-			
+		try {
+
 			flvRecording = em.merge(flvRecording);
 			Long flvRecordingId = flvRecording.getFlvRecordingId();
-			
+
 			return flvRecordingId;
 		} catch (Exception ex2) {
-			log.error("[addFlvRecording]: ",ex2);
+			log.error("[addFlvRecording]: ", ex2);
 		}
 		return null;
 	}
-	
+
 	public void updateFlvRecordingOrganization(Long flvRecordingId, Long organization_id) {
 		try {
-			
-			FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
-			
+
+			FlvRecording fId = get(flvRecordingId);
+
 			fId.setOrganization_id(organization_id);
-			
+
 			if (fId.getFlvRecordingId() == 0) {
 				em.persist(fId);
-		    } else {
-		    	if (!em.contains(fId)) {
-		    		em.merge(fId);
-			    }
+			} else {
+				if (!em.contains(fId)) {
+					em.merge(fId);
+				}
 			}
-			
+
 		} catch (Exception ex2) {
-			log.error("[deleteFileExplorerItem]: ",ex2);
+			log.error("[deleteFileExplorerItem]: ", ex2);
 		}
 	}
-	
+
 	public void updateFlvRecordingEndTime(Long flvRecordingId, Date recordEnd, Long organization_id) {
 		try {
-			
-			FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
-			
+
+			FlvRecording fId = get(flvRecordingId);
+
 			fId.setProgressPostProcessing(0);
 			fId.setRecordEnd(recordEnd);
 			fId.setOrganization_id(organization_id);
-			
+
 			if (fId.getFlvRecordingId() == 0) {
 				em.persist(fId);
-		    } else {
-		    	if (!em.contains(fId)) {
-		    		em.merge(fId);
-			    }
+			} else {
+				if (!em.contains(fId)) {
+					em.merge(fId);
+				}
 			}
-			
+
 		} catch (Exception ex2) {
-			log.error("[deleteFileExplorerItem]: ",ex2);
+			log.error("[deleteFileExplorerItem]: ", ex2);
 		}
 	}
-	
+
 	public void updateFlvRecordingProgress(Long flvRecordingId, Integer progress) {
 		try {
-			
-			FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
-			
+
+			FlvRecording fId = get(flvRecordingId);
+
 			fId.setProgressPostProcessing(progress);
-			
+
 			if (fId.getFlvRecordingId() == 0) {
 				em.persist(fId);
-		    } else {
-		    	if (!em.contains(fId)) {
-		    		em.merge(fId);
-			    }
+			} else {
+				if (!em.contains(fId)) {
+					em.merge(fId);
+				}
 			}
-			
+
 		} catch (Exception ex2) {
-			log.error("[deleteFileExplorerItem]: ",ex2);
+			log.error("[deleteFileExplorerItem]: ", ex2);
 		}
 	}
-	
+
 	/**
 	 * @param fileExplorerItemId
 	 */
 	public boolean deleteFlvRecording(Long flvRecordingId) {
 		try {
-			
-			FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
-			
+
+			FlvRecording fId = get(flvRecordingId);
+
 			if (fId == null) {
 				return false;
 			}
-			
+
 			fId.setDeleted(true);
 			fId.setUpdated(new Date());
-			
+
 			if (fId.getFlvRecordingId() == 0) {
 				em.persist(fId);
-		    } else {
-		    	if (!em.contains(fId)) {
-		    		em.merge(fId);
-			    }
+			} else {
+				if (!em.contains(fId)) {
+					em.merge(fId);
+				}
 			}
-			
+
 			return true;
-			
+
 		} catch (Exception ex2) {
-			log.error("[deleteFileExplorerItem]: ",ex2);
+			log.error("[deleteFileExplorerItem]: ", ex2);
 		}
-		
+
 		return false;
 	}
 
@@ -510,38 +493,38 @@ public class FlvRecordingDao {
 	 */
 	public void updateFileOrFolderName(Long flvRecordingId, String fileName) {
 		try {
-			
-			FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
-			
+
+			FlvRecording fId = get(flvRecordingId);
+
 			fId.setFileName(fileName);
 			fId.setUpdated(new Date());
-			
+
 			if (fId.getFlvRecordingId() == 0) {
 				em.persist(fId);
-		    } else {
-		    	if (!em.contains(fId)) {
-		    		em.merge(fId);
-			    }
+			} else {
+				if (!em.contains(fId)) {
+					em.merge(fId);
+				}
 			}
-			
+
 		} catch (Exception ex2) {
-			log.error("[updateFileOrFolderName]: ",ex2);
+			log.error("[updateFileOrFolderName]: ", ex2);
 		}
 	}
-	
+
 	public void updateFlvRecording(FlvRecording fId) {
 		try {
-			
+
 			if (fId.getFlvRecordingId() == 0) {
 				em.persist(fId);
-		    } else {
-		    	if (!em.contains(fId)) {
-		    		em.merge(fId);
-			    }
+			} else {
+				if (!em.contains(fId)) {
+					em.merge(fId);
+				}
 			}
-			
+
 		} catch (Exception ex2) {
-			log.error("[updateFileOrFolderName]: ",ex2);
+			log.error("[updateFileOrFolderName]: ", ex2);
 		}
 	}
 
@@ -550,38 +533,37 @@ public class FlvRecordingDao {
 	 * @param newParentFileExplorerItemId
 	 * @param isOwner
 	 */
-	public void moveFile(Long flvRecordingId, Long parentFileExplorerItemId, 
-				Boolean isOwner, Long ownerId) {
+	public void moveFile(Long flvRecordingId, Long parentFileExplorerItemId, Boolean isOwner, Long ownerId) {
 		try {
-			
-			FlvRecording fId = this.getFlvRecordingById(flvRecordingId);
-			
+
+			FlvRecording fId = get(flvRecordingId);
+
 			fId.setParentFileExplorerItemId(parentFileExplorerItemId);
-			
+
 			if (parentFileExplorerItemId == 0) {
 				if (isOwner) {
-					//move to personal Folder
+					// move to personal Folder
 					fId.setOwnerId(ownerId);
 				} else {
-					//move to public room folder
+					// move to public room folder
 					fId.setOwnerId(null);
 				}
 			} else {
 				fId.setOwnerId(null);
 			}
-			
+
 			fId.setUpdated(new Date());
-			
+
 			if (fId.getFlvRecordingId() == 0) {
 				em.persist(fId);
-		    } else {
-		    	if (!em.contains(fId)) {
-		    		em.merge(fId);
-			    }
+			} else {
+				if (!em.contains(fId)) {
+					em.merge(fId);
+				}
 			}
 		} catch (Exception ex2) {
-			log.error("[moveFile]: ",ex2);
+			log.error("[moveFile]: ", ex2);
 		}
 	}
-	
+
 }

Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java?rev=1528921&r1=1528920&r2=1528921&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java Thu Oct  3 16:31:53 2013
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.db.dao.record;
 
+import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
+
 import java.util.Date;
 import java.util.List;
 
@@ -26,7 +28,6 @@ import javax.persistence.NoResultExcepti
 import javax.persistence.PersistenceContext;
 import javax.persistence.TypedQuery;
 
-import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -35,15 +36,14 @@ import org.springframework.transaction.a
 
 @Transactional
 public class FlvRecordingMetaDataDao {
-
 	private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingMetaDataDao.class,
-			OpenmeetingsVariables.webAppRootKey);
+			webAppRootKey);
 	@PersistenceContext
 	private EntityManager em;
 	@Autowired
 	private FlvRecordingDao flvRecordingDao;
 	
-	public FlvRecordingMetaData getFlvRecordingMetaDataById(Long flvRecordingMetaDataId) {
+	public FlvRecordingMetaData get(Long flvRecordingMetaDataId) {
 		try { 
 			
 			String hql = "SELECT c FROM FlvRecordingMetaData c " +
@@ -142,7 +142,7 @@ public class FlvRecordingMetaDataDao {
 			
 			flvRecordingMetaData.setDeleted(false);
 			
-			flvRecordingMetaData.setFlvRecording(flvRecordingDao.getFlvRecordingById(flvRecordingId));
+			flvRecordingMetaData.setFlvRecording(flvRecordingDao.get(flvRecordingId));
 			flvRecordingMetaData.setFreeTextUserName(freeTextUserName);
 			flvRecordingMetaData.setInserted(new Date());
 			
@@ -185,14 +185,14 @@ public class FlvRecordingMetaDataDao {
 										Date recordEnd) {
 		try { 
 			
-			FlvRecordingMetaData flvRecordingMetaData = this.getFlvRecordingMetaDataById(flvRecordingMetaDataId);
+			FlvRecordingMetaData flvRecordingMetaData = get(flvRecordingMetaDataId);
 			
 			flvRecordingMetaData.setRecordEnd(recordEnd);
 			
 			log.debug("updateFlvRecordingMetaDataEndDate :: Start Date :"+flvRecordingMetaData.getRecordStart());
 			log.debug("updateFlvRecordingMetaDataEndDate :: End Date :"+flvRecordingMetaData.getRecordEnd());
 			
-			this.updateFlvRecordingMetaData(flvRecordingMetaData);
+			this.update(flvRecordingMetaData);
 			
 			return flvRecordingMetaDataId;
 			
@@ -206,11 +206,11 @@ public class FlvRecordingMetaDataDao {
 										long initalGap) {
 		try { 
 			
-			FlvRecordingMetaData flvRecordingMetaData = this.getFlvRecordingMetaDataById(flvRecordingMetaDataId);
+			FlvRecordingMetaData flvRecordingMetaData = get(flvRecordingMetaDataId);
 			
 			flvRecordingMetaData.setInitialGapSeconds(Long.valueOf(initalGap).intValue());
 			
-			this.updateFlvRecordingMetaData(flvRecordingMetaData);
+			this.update(flvRecordingMetaData);
 			
 			return flvRecordingMetaDataId;
 			
@@ -220,7 +220,7 @@ public class FlvRecordingMetaDataDao {
 		return null;
 	}
 
-	public Long updateFlvRecordingMetaData(FlvRecordingMetaData flvRecordingMetaData) {
+	public Long update(FlvRecordingMetaData flvRecordingMetaData) {
 		try { 
 			
 			if (flvRecordingMetaData.getFlvRecordingMetaDataId() == 0) {

Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java?rev=1528921&r1=1528920&r2=1528921&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java Thu Oct  3 16:31:53 2013
@@ -18,18 +18,17 @@
  */
 package org.apache.openmeetings.remote;
 
+import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
+
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.data.basic.AuthLevelUtil;
 import org.apache.openmeetings.data.flvrecord.converter.FlvInterviewConverterTask;
 import org.apache.openmeetings.data.flvrecord.converter.FlvInterviewReConverterTask;
 import org.apache.openmeetings.data.flvrecord.converter.FlvRecorderConverterTask;
-import org.apache.openmeetings.data.flvrecord.listener.BaseStreamListener;
-import org.apache.openmeetings.data.flvrecord.listener.StreamAudioListener;
-import org.apache.openmeetings.data.flvrecord.listener.StreamVideoListener;
+import org.apache.openmeetings.data.flvrecord.listener.StreamListener;
 import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
 import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
@@ -57,19 +56,14 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class FLVRecorderService implements IPendingServiceCallback {
+	private static final Logger log = Red5LoggerFactory.getLogger(FLVRecorderService.class, webAppRootKey);
 
-	private static final Logger log = Red5LoggerFactory.getLogger(
-			FLVRecorderService.class, OpenmeetingsVariables.webAppRootKey);
-	
 	/**
-	 * Stores a reference to all available listeners
-	 * we need that reference, as the internal references stored 
-	 * with the red5 stream object might be gone when the user 
-	 * closes the browser.
-	 * But each listener has an asynchronous component that needs to be closed 
-	 * no matter how the user leaves the application!
+	 * Stores a reference to all available listeners we need that reference, as the internal references stored with the
+	 * red5 stream object might be gone when the user closes the browser. But each listener has an asynchronous
+	 * component that needs to be closed no matter how the user leaves the application!
 	 */
-	private static final Map<Long,BaseStreamListener> streamListeners = new HashMap<Long,BaseStreamListener>();
+	private static final Map<Long, StreamListener> streamListeners = new HashMap<Long, StreamListener>();
 
 	// Spring Beans
 	@Autowired
@@ -101,7 +95,7 @@ public class FLVRecorderService implemen
 	@Autowired
 	private FlvRecordingMetaDeltaDao flvRecordingMetaDeltaDao;
 	@Autowired
-	private FlvRecordingMetaDataDao flvRecordingMetaDataDaoImpl = null;
+	private FlvRecordingMetaDataDao flvRecordingMetaDataDaoImpl;
 
 	public void resultReceived(IPendingServiceCall arg0) {
 	}
@@ -126,59 +120,47 @@ public class FLVRecorderService implemen
 			return null;
 
 		} catch (Exception err) {
-			err.printStackTrace();
 			log.error("[checkForRecording]", err);
 		}
 		return null;
 	}
-
-	private static String generateFileName(Long flvRecording_id, String streamid)
-			throws Exception {
-		String dateString = CalendarPatterns
-				.getTimeForStreamId(new java.util.Date());
-		return "rec_" + flvRecording_id + "_stream_" + streamid + "_"
-				+ dateString;
+	
+	private static String generateFileName(Long flvRecording_id, String streamid) throws Exception {
+		String dateString = CalendarPatterns.getTimeForStreamId(new java.util.Date());
+		return "rec_" + flvRecording_id + "_stream_" + streamid + "_" + dateString;
 
 	}
 
-	public String recordMeetingStream(String roomRecordingName, String comment,
-			Boolean isInterview) {
+	public String recordMeetingStream(String roomRecordingName, String comment, Boolean isInterview) {
 		try {
-			
+
 			log.debug(":: recordMeetingStream ::");
 
 			IConnection current = Red5.getConnectionLocal();
-			Client currentClient = this.sessionManager
-					.getClientByStreamId(current.getClient().getId(), null);
+			Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
 			Long room_id = currentClient.getRoom_id();
 
 			Date now = new Date();
 
 			// Receive flvRecordingId
-			Long flvRecordingId = this.flvRecordingDaoImpl.addFlvRecording("",
-					roomRecordingName, null, currentClient.getUser_id(),
-					room_id, now, null, currentClient.getUser_id(), comment,
-					currentClient.getStreamid(), currentClient.getVWidth(),
-					currentClient.getVHeight(), isInterview);
+			Long flvRecordingId = flvRecordingDaoImpl.addFlvRecording("", roomRecordingName, null,
+					currentClient.getUser_id(), room_id, now, null, currentClient.getUser_id(), comment,
+					currentClient.getStreamid(), currentClient.getVWidth(), currentClient.getVHeight(), isInterview);
 
 			// Update Client and set Flag
 			currentClient.setIsRecording(true);
 			currentClient.setFlvRecordingId(flvRecordingId);
-			this.sessionManager.updateClientByStreamId(current.getClient()
-					.getId(), currentClient, false, null);
+			sessionManager.updateClientByStreamId(current.getClient().getId(), currentClient, false, null);
 
 			// get all stream and start recording them
 			for (IConnection conn : current.getScope().getClientConnections()) {
 				if (conn != null) {
 					if (conn instanceof IServiceCapableConnection) {
-						Client rcl = this.sessionManager
-								.getClientByStreamId(conn.getClient()
-										.getId(), null);
+						Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
 
 						// Send every user a notification that the recording did start
 						if (!rcl.getIsAVClient()) {
-							((IServiceCapableConnection) conn).invoke(
-									"startedRecording",
+							((IServiceCapableConnection) conn).invoke("startedRecording",
 									new Object[] { currentClient }, this);
 						}
 
@@ -186,36 +168,23 @@ public class FLVRecorderService implemen
 						// of Meta Data
 						if (rcl.getIsScreenClient()) {
 
-							if (rcl.getFlvRecordingId() != null
-									&& rcl.isScreenPublishStarted()) {
+							if (rcl.getFlvRecordingId() != null && rcl.isScreenPublishStarted()) {
+
+								String streamName_Screen = generateFileName(flvRecordingId, rcl.getStreamPublishName()
+										.toString());
 
-								String streamName_Screen = generateFileName(
-										flvRecordingId, rcl
-												.getStreamPublishName()
-												.toString());
-
-								Long flvRecordingMetaDataId = this.flvRecordingMetaDataDao
-										.addFlvRecordingMetaData(
-												flvRecordingId,
-												rcl.getFirstname() + " "
-														+ rcl.getLastname(),
-												now, false, false, true,
-												streamName_Screen,
-												rcl.getInterviewPodId());
+								Long flvRecordingMetaDataId = flvRecordingMetaDataDao.addFlvRecordingMetaData(
+										flvRecordingId, rcl.getFirstname() + " " + rcl.getLastname(), now, false,
+										false, true, streamName_Screen, rcl.getInterviewPodId());
 
 								// Start FLV Recording
-								recordShow(conn,
-										rcl.getStreamPublishName(),
-										streamName_Screen,
-										flvRecordingMetaDataId, true,
-										isInterview);
+								recordShow(conn, rcl.getStreamPublishName(), streamName_Screen, flvRecordingMetaDataId,
+										true, isInterview);
 
 								// Add Meta Data
 								rcl.setFlvRecordingMetaDataId(flvRecordingMetaDataId);
 
-								this.sessionManager
-										.updateClientByStreamId(
-												rcl.getStreamid(), rcl, false, null);
+								sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
 
 							}
 
@@ -223,15 +192,12 @@ public class FLVRecorderService implemen
 						// if the user does publish av, a, v
 						// But we only record av or a, video only is not
 						// interesting
-						(rcl.getIsAVClient() &&
-								(rcl.getAvsettings().equals("av")
-								|| rcl.getAvsettings().equals("a")
-								|| rcl.getAvsettings().equals("v"))) {
-
-							String streamName = generateFileName(
-									flvRecordingId,
-									String.valueOf(rcl.getBroadCastID())
-											.toString());
+						(rcl.getIsAVClient()
+								&& (rcl.getAvsettings().equals("av") || rcl.getAvsettings().equals("a") || rcl
+										.getAvsettings().equals("v"))) {
+
+							String streamName = generateFileName(flvRecordingId, String.valueOf(rcl.getBroadCastID())
+									.toString());
 
 							// Add Meta Data
 							boolean isAudioOnly = false;
@@ -244,26 +210,17 @@ public class FLVRecorderService implemen
 								isVideoOnly = true;
 							}
 
-							Long flvRecordingMetaDataId = this.flvRecordingMetaDataDao
-									.addFlvRecordingMetaData(
-											flvRecordingId,
-											rcl.getFirstname() + " "
-													+ rcl.getLastname(),
-											now, isAudioOnly, isVideoOnly,
-											false, streamName,
-											rcl.getInterviewPodId());
+							Long flvRecordingMetaDataId = flvRecordingMetaDataDao.addFlvRecordingMetaData(
+									flvRecordingId, rcl.getFirstname() + " " + rcl.getLastname(), now, isAudioOnly,
+									isVideoOnly, false, streamName, rcl.getInterviewPodId());
 
 							rcl.setFlvRecordingMetaDataId(flvRecordingMetaDataId);
 
-							this.sessionManager.updateClientByStreamId(
-									rcl.getStreamid(), rcl, false, null);
+							sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
 
 							// Start FLV recording
-							recordShow(conn,
-									String.valueOf(rcl.getBroadCastID())
-											.toString(), streamName,
-									flvRecordingMetaDataId, false,
-									isInterview);
+							recordShow(conn, String.valueOf(rcl.getBroadCastID()).toString(), streamName,
+									flvRecordingMetaDataId, false, isInterview);
 
 						}
 
@@ -288,52 +245,37 @@ public class FLVRecorderService implemen
 	 * @param flvRecordingMetaDataId
 	 * @throws Exception
 	 */
-	private synchronized void recordShow(IConnection conn, String broadcastid,
-			String streamName, Long flvRecordingMetaDataId,
-			boolean isScreenData, Boolean isInterview) throws Exception {
+	private synchronized void recordShow(IConnection conn, String broadcastid, String streamName,
+			Long flvRecordingMetaDataId, boolean isScreenData, Boolean isInterview) throws Exception {
 		try {
 			log.debug("Recording show for: " + conn.getScope().getContextPath());
-			log.debug("Name of CLient and Stream to be recorded: "
-					+ broadcastid);
+			log.debug("Name of CLient and Stream to be recorded: " + broadcastid);
 			// log.debug("Application.getInstance()"+Application.getInstance());
 			log.debug("Scope " + conn);
 			log.debug("Scope " + conn.getScope());
 			// Get a reference to the current broadcast stream.
-			ClientBroadcastStream stream = (ClientBroadcastStream) scopeApplicationAdapter
-					.getBroadcastStream(conn.getScope(), broadcastid);
+			ClientBroadcastStream stream = (ClientBroadcastStream) scopeApplicationAdapter.getBroadcastStream(
+					conn.getScope(), broadcastid);
 
 			if (stream == null) {
 				log.debug("Unable to get stream: " + streamName);
 				return;
 			}
 			// Save the stream to disk.
-			if (isScreenData) {
-				
-				StreamVideoListener streamScreenListener = new StreamVideoListener(streamName,
-																		conn.getScope(), flvRecordingMetaDataId, isScreenData,
-																		isInterview, flvRecordingMetaDataDao);
-				
-				streamListeners.put(flvRecordingMetaDataId, streamScreenListener);
-				
-				stream.addStreamListener(streamScreenListener);
-			} else {
-
-				log.debug("### stream " + stream);
-				log.debug("### streamName " + streamName);
-				log.debug("### conn.getScope() " + conn.getScope());
-				log.debug("### flvRecordingMetaDataId "
-						+ flvRecordingMetaDataId);
-				log.debug("### isScreenData " + isScreenData);
-				log.debug("### isInterview " + isInterview);
+			log.debug("### stream " + stream);
+			log.debug("### streamName " + streamName);
+			log.debug("### conn.getScope() " + conn.getScope());
+			log.debug("### flvRecordingMetaDataId " + flvRecordingMetaDataId);
+			log.debug("### isScreenData " + isScreenData);
+			log.debug("### isInterview " + isInterview);
+
+			StreamListener streamAudioListener = new StreamListener(!isScreenData, streamName, conn.getScope(),
+					flvRecordingMetaDataId, isScreenData, isInterview, flvRecordingMetaDataDao,
+					flvRecordingMetaDeltaDao);
 
-				StreamAudioListener streamAudioListener = new StreamAudioListener(streamName,
-																	conn.getScope(), flvRecordingMetaDataId, isScreenData,
-																	isInterview, flvRecordingMetaDeltaDao, flvRecordingMetaDataDao);
+			streamListeners.put(flvRecordingMetaDataId, streamAudioListener);
 
-				streamListeners.put(flvRecordingMetaDataId, streamAudioListener);
-
-				stream.addStreamListener(streamAudioListener);
-			}
+			stream.addStreamListener(streamAudioListener);
 			// Just for Debug Purpose
 			// stream.saveAs(streamName+"_DEBUG", false);
 		} catch (Exception e) {
@@ -346,84 +288,77 @@ public class FLVRecorderService implemen
 	 * 
 	 * @param conn
 	 */
-	public synchronized void stopRecordingShow(IConnection conn, String broadcastId,
-			Long flvRecordingMetaDataId) {
+	public synchronized void stopRecordingShow(IConnection conn, String broadcastId, Long flvRecordingMetaDataId) {
 		try {
-			
+
 			if (flvRecordingMetaDataId == null) {
-				//this should be fixed, can be useful for debugging, after all this is an error
-				//but we don't want the application to completely stop the process
+				// this should be fixed, can be useful for debugging, after all this is an error
+				// but we don't want the application to completely stop the process
 				log.error("flvRecordingMetaDataId is null");
 			}
 
 			log.debug("** stopRecordingShow: " + conn);
-			log.debug("### Stop recording show for broadcastId: " + broadcastId
-					+ " || " + conn.getScope().getContextPath());
+			log.debug("### Stop recording show for broadcastId: " + broadcastId + " || "
+					+ conn.getScope().getContextPath());
+
+			Object streamToClose = scopeApplicationAdapter.getBroadcastStream(conn.getScope(), broadcastId);
 
-			Object streamToClose = scopeApplicationAdapter.getBroadcastStream(
-					conn.getScope(), broadcastId);
+			StreamListener listenerAdapter = streamListeners.get(flvRecordingMetaDataId);
 
-			BaseStreamListener listenerAdapter = streamListeners.get(flvRecordingMetaDataId);
-			
 			log.debug("Stream Closing :: " + flvRecordingMetaDataId);
-			
+
 			ClientBroadcastStream stream = (ClientBroadcastStream) streamToClose;
 
-			//the stream can be null if the user just closes the browser 
-			//without canceling the recording before leaving
+			// the stream can be null if the user just closes the browser
+			// without canceling the recording before leaving
 			if (stream != null) {
-				//Iterate through all stream listeners and stop the appropriate
+				// Iterate through all stream listeners and stop the appropriate
 				if (stream.getStreamListeners() != null) {
-	
-					for (IStreamListener iStreamListener : stream
-							.getStreamListeners()) {
+
+					for (IStreamListener iStreamListener : stream.getStreamListeners()) {
 						stream.removeStreamListener(iStreamListener);
 					}
 				}
 			}
-			
+
 			if (listenerAdapter == null) {
-				
+
 				log.debug("Stream Not Found :: " + flvRecordingMetaDataId);
-				log.debug("Available Streams :: "+streamListeners.size());
-				
+				log.debug("Available Streams :: " + streamListeners.size());
+
 				for (Long entryKey : streamListeners.keySet()) {
-					log.debug("Stored flvRecordingMetaDataId in Map: "+ entryKey);
+					log.debug("Stored flvRecordingMetaDataId in Map: " + entryKey);
 				}
-				
-				//Manually call finish on the stream so that there is no endless loop waiting  
-				//in the FlvRecorderConverter waiting for the stream to finish
-				//this would normally happen in the Listener
-				FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDaoImpl.
-							getFlvRecordingMetaDataById(flvRecordingMetaDataId);
+
+				// Manually call finish on the stream so that there is no endless loop waiting
+				// in the FlvRecorderConverter waiting for the stream to finish
+				// this would normally happen in the Listener
+				FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDaoImpl.get(flvRecordingMetaDataId);
 				flvRecordingMetaData.setStreamReaderThreadComplete(true);
-				flvRecordingMetaDataDaoImpl.updateFlvRecordingMetaData(flvRecordingMetaData);
-				
-				throw new IllegalStateException("Could not find Listener to stop! flvRecordingMetaDataId "+flvRecordingMetaDataId);
+				flvRecordingMetaDataDaoImpl.update(flvRecordingMetaData);
+
+				throw new IllegalStateException("Could not find Listener to stop! flvRecordingMetaDataId "
+						+ flvRecordingMetaDataId);
 			}
-			
+
 			listenerAdapter.closeStream();
 			streamListeners.remove(flvRecordingMetaDataId);
-			
 
 		} catch (Exception err) {
 			log.error("[stopRecordingShow]", err);
 		}
 	}
 
-	public Long stopRecordAndSave(IScope scope, Client currentClient,
-			Long storedFlvRecordingId) {
+	public Long stopRecordAndSave(IScope scope, Client currentClient, Long storedFlvRecordingId) {
 		try {
-			log.debug("stopRecordAndSave " + currentClient.getUsername() + ","
-					+ currentClient.getUserip());
+			log.debug("stopRecordAndSave " + currentClient.getUsername() + "," + currentClient.getUserip());
 
 			// get all stream and stop recording them
 			for (IConnection conn : scope.getClientConnections()) {
 				if (conn != null) {
 					if (conn instanceof IServiceCapableConnection) {
 
-						Client rcl = sessionManager.getClientByStreamId(
-										conn.getClient().getId(), null);
+						Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
 
 						// FIXME: Check if this function is really in use at
 						// the moment
@@ -437,36 +372,26 @@ public class FLVRecorderService implemen
 
 						if (rcl.getIsScreenClient()) {
 
-							if (rcl.getFlvRecordingId() != null
-									&& rcl.isScreenPublishStarted()) {
+							if (rcl.getFlvRecordingId() != null && rcl.isScreenPublishStarted()) {
 
 								// Stop FLV Recording
-								stopRecordingShow(conn,
-										rcl.getStreamPublishName(),
-										rcl.getFlvRecordingMetaDataId());
+								stopRecordingShow(conn, rcl.getStreamPublishName(), rcl.getFlvRecordingMetaDataId());
 
 								// Update Meta Data
-								this.flvRecordingMetaDataDao
-										.updateFlvRecordingMetaDataEndDate(
-												rcl.getFlvRecordingMetaDataId(),
-												new Date());
+								flvRecordingMetaDataDao.updateFlvRecordingMetaDataEndDate(
+										rcl.getFlvRecordingMetaDataId(), new Date());
 							}
 
 						} else if (rcl.getIsAVClient()
-								&& (rcl.getAvsettings().equals("av")
-								|| rcl.getAvsettings().equals("a")
-								|| rcl.getAvsettings().equals("v"))) {
-
-							stopRecordingShow(conn,
-									String.valueOf(rcl.getBroadCastID())
-											.toString(),
+								&& (rcl.getAvsettings().equals("av") || rcl.getAvsettings().equals("a") || rcl
+										.getAvsettings().equals("v"))) {
+
+							stopRecordingShow(conn, String.valueOf(rcl.getBroadCastID()).toString(),
 									rcl.getFlvRecordingMetaDataId());
 
 							// Update Meta Data
-							this.flvRecordingMetaDataDao
-									.updateFlvRecordingMetaDataEndDate(
-											rcl.getFlvRecordingMetaDataId(),
-											new Date());
+							flvRecordingMetaDataDao.updateFlvRecordingMetaDataEndDate(rcl.getFlvRecordingMetaDataId(),
+									new Date());
 
 						}
 
@@ -485,33 +410,26 @@ public class FLVRecorderService implemen
 
 			if (flvRecordingId != null) {
 
-				this.flvRecordingDaoImpl.updateFlvRecordingEndTime(
-						flvRecordingId, new Date(),
+				flvRecordingDaoImpl.updateFlvRecordingEndTime(flvRecordingId, new Date(),
 						currentClient.getOrganization_id());
 
 				// Reset values
 				currentClient.setFlvRecordingId(null);
 				currentClient.setIsRecording(false);
 
-				this.sessionManager.updateClientByStreamId(
-						currentClient.getStreamid(), currentClient, false, null);
+				sessionManager.updateClientByStreamId(currentClient.getStreamid(), currentClient, false, null);
 
-				log.debug("this.flvRecorderConverterTask ",
-						this.flvRecorderConverterTask);
+				log.debug("flvRecorderConverterTask ", flvRecorderConverterTask);
 
-				FlvRecording flvRecording = this.flvRecordingDaoImpl
-						.getFlvRecordingById(flvRecordingId);
+				FlvRecording flvRecording = flvRecordingDaoImpl.get(flvRecordingId);
 
-				if (flvRecording.getIsInterview() == null
-						|| !flvRecording.getIsInterview()) {
+				if (flvRecording.getIsInterview() == null || !flvRecording.getIsInterview()) {
 
-					this.flvRecorderConverterTask
-							.startConversionThread(flvRecordingId);
+					flvRecorderConverterTask.startConversionThread(flvRecordingId);
 
 				} else {
 
-					this.flvInterviewConverterTask
-							.startConversionThread(flvRecordingId);
+					flvInterviewConverterTask.startConversionThread(flvRecordingId);
 
 				}
 
@@ -531,8 +449,7 @@ public class FLVRecorderService implemen
 
 			log.debug("getCurrentRoomClient -2- " + streamid);
 
-			Client currentClient = this.sessionManager
-					.getClientByStreamId(streamid, null);
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
 
 			log.debug("getCurrentRoomClient -#########################- "
 					+ currentClient.getRoom_id());
@@ -560,36 +477,29 @@ public class FLVRecorderService implemen
 
 			if (rcl.getIsScreenClient()) {
 
-				if (rcl.getFlvRecordingId() != null
-						&& rcl.isScreenPublishStarted()) {
+				if (rcl.getFlvRecordingId() != null && rcl.isScreenPublishStarted()) {
 
 					// Stop FLV Recording
 					// FIXME: Is there really a need to stop it manually if the
 					// user just
 					// stops the stream?
-					stopRecordingShow(conn, rcl.getStreamPublishName(),
-							rcl.getFlvRecordingMetaDataId());
+					stopRecordingShow(conn, rcl.getStreamPublishName(), rcl.getFlvRecordingMetaDataId());
 
 					// Update Meta Data
-					this.flvRecordingMetaDataDao
-							.updateFlvRecordingMetaDataEndDate(
-									rcl.getFlvRecordingMetaDataId(), new Date());
+					flvRecordingMetaDataDao.updateFlvRecordingMetaDataEndDate(rcl.getFlvRecordingMetaDataId(),
+							new Date());
 				}
 
-			} else if (rcl.getIsAVClient() &&
-					(rcl.getAvsettings().equals("a")
-					|| rcl.getAvsettings().equals("v") 
-					|| rcl.getAvsettings().equals("av"))) {
+			} else if (rcl.getIsAVClient()
+					&& (rcl.getAvsettings().equals("a") || rcl.getAvsettings().equals("v") || rcl.getAvsettings()
+							.equals("av"))) {
 
 				// FIXME: Is there really a need to stop it manually if the user
 				// just stops the stream?
-				stopRecordingShow(conn, String.valueOf(rcl.getBroadCastID()),
-						rcl.getFlvRecordingMetaDataId());
+				stopRecordingShow(conn, String.valueOf(rcl.getBroadCastID()), rcl.getFlvRecordingMetaDataId());
 
 				// Update Meta Data
-				this.flvRecordingMetaDataDao
-						.updateFlvRecordingMetaDataEndDate(
-								rcl.getFlvRecordingMetaDataId(), new Date());
+				flvRecordingMetaDataDao.updateFlvRecordingMetaDataEndDate(rcl.getFlvRecordingMetaDataId(), new Date());
 			}
 
 		} catch (Exception err) {
@@ -597,58 +507,44 @@ public class FLVRecorderService implemen
 		}
 	}
 
-	public void addRecordingByStreamId(IConnection conn, String streamId,
-			Client rcl, Long flvRecordingId) {
+	public void addRecordingByStreamId(IConnection conn, String streamId, Client rcl, Long flvRecordingId) {
 		try {
 
-			FlvRecording flvRecording = this.flvRecordingDaoImpl
-					.getFlvRecordingById(flvRecordingId);
+			FlvRecording flvRecording = flvRecordingDaoImpl.get(flvRecordingId);
 
 			Date now = new Date();
 
 			// If its the recording client we need another type of Meta Data
 			if (rcl.getIsScreenClient()) {
 
-				if (rcl.getFlvRecordingId() != null
-						&& rcl.isScreenPublishStarted()) {
+				if (rcl.getFlvRecordingId() != null && rcl.isScreenPublishStarted()) {
 
-					String streamName_Screen = generateFileName(flvRecordingId,
-							rcl.getStreamPublishName().toString());
+					String streamName_Screen = generateFileName(flvRecordingId, rcl.getStreamPublishName().toString());
 
-					log.debug("##############  ADD SCREEN OF SHARER :: "
-							+ rcl.getStreamPublishName());
+					log.debug("##############  ADD SCREEN OF SHARER :: " + rcl.getStreamPublishName());
 
-					Long flvRecordingMetaDataId = this.flvRecordingMetaDataDao
-							.addFlvRecordingMetaData(
-									flvRecordingId,
-									rcl.getFirstname() + " "
-											+ rcl.getLastname(), now, false,
-									false, true, streamName_Screen,
-									rcl.getInterviewPodId());
+					Long flvRecordingMetaDataId = flvRecordingMetaDataDao.addFlvRecordingMetaData(flvRecordingId,
+							rcl.getFirstname() + " " + rcl.getLastname(), now, false, false, true, streamName_Screen,
+							rcl.getInterviewPodId());
 
 					// Start FLV Recording
-					recordShow(conn, rcl.getStreamPublishName(),
-							streamName_Screen, flvRecordingMetaDataId, true,
+					recordShow(conn, rcl.getStreamPublishName(), streamName_Screen, flvRecordingMetaDataId, true,
 							flvRecording.getIsInterview());
 
 					// Add Meta Data
 					rcl.setFlvRecordingMetaDataId(flvRecordingMetaDataId);
 
-					this.sessionManager.updateClientByStreamId(
-							rcl.getStreamid(), rcl, false, null);
+					sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
 
 				}
 
-			} else if
-			// if the user does publish av, a, v
-			// But we only record av or a, video only is not interesting
-			(rcl.getIsAVClient() && 
-					(rcl.getAvsettings().equals("av")
-					|| rcl.getAvsettings().equals("a")
-					|| rcl.getAvsettings().equals("v"))) {
+			} else if (rcl.getIsAVClient()
+					&& (rcl.getAvsettings().equals("av") || rcl.getAvsettings().equals("a") || rcl.getAvsettings()
+							.equals("v"))) {
+				// if the user does publish av, a, v
+				// But we only record av or a, video only is not interesting
 
-				String streamName = generateFileName(flvRecordingId, String
-						.valueOf(rcl.getBroadCastID()).toString());
+				String streamName = generateFileName(flvRecordingId, String.valueOf(rcl.getBroadCastID()).toString());
 
 				// Add Meta Data
 				boolean isAudioOnly = false;
@@ -660,21 +556,17 @@ public class FLVRecorderService implemen
 					isVideoOnly = true;
 				}
 
-				Long flvRecordingMetaDataId = this.flvRecordingMetaDataDao
-						.addFlvRecordingMetaData(flvRecordingId,
-								rcl.getFirstname() + " " + rcl.getLastname(),
-								now, isAudioOnly, isVideoOnly, false,
-								streamName, rcl.getInterviewPodId());
+				Long flvRecordingMetaDataId = flvRecordingMetaDataDao.addFlvRecordingMetaData(flvRecordingId,
+						rcl.getFirstname() + " " + rcl.getLastname(), now, isAudioOnly, isVideoOnly, false, streamName,
+						rcl.getInterviewPodId());
 
 				// Start FLV recording
-				recordShow(conn, String.valueOf(rcl.getBroadCastID())
-						.toString(), streamName, flvRecordingMetaDataId, false,
-						flvRecording.getIsInterview());
+				recordShow(conn, String.valueOf(rcl.getBroadCastID()).toString(), streamName, flvRecordingMetaDataId,
+						false, flvRecording.getIsInterview());
 
 				rcl.setFlvRecordingMetaDataId(flvRecordingMetaDataId);
 
-				this.sessionManager.updateClientByStreamId(
-						rcl.getStreamid(), rcl, false, null);
+				sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
 
 			}
 
@@ -683,9 +575,8 @@ public class FLVRecorderService implemen
 		}
 	}
 
-	public Long restartConversion(String SID, Long flvRecordingId,
-			Integer leftSideLoud, Integer rightSideLoud, Integer leftSideTime,
-			Integer rightSideTime) {
+	public Long restartConversion(String SID, Long flvRecordingId, Integer leftSideLoud, Integer rightSideLoud,
+			Integer leftSideTime, Integer rightSideTime) {
 		try {
 			Long users_id = sessiondataDao.checkSession(SID);
 			Long user_level = userManager.getUserLevelByID(users_id);
@@ -693,22 +584,19 @@ public class FLVRecorderService implemen
 
 				log.debug("updateFileOrFolderName " + flvRecordingId);
 
-				FlvRecording flvRecording = this.flvRecordingDaoImpl
-						.getFlvRecordingById(flvRecordingId);
+				FlvRecording flvRecording = flvRecordingDaoImpl.get(flvRecordingId);
 
 				flvRecording.setPreviewImage(null);
 
 				flvRecording.setProgressPostProcessing(0);
 
-				this.flvRecordingDaoImpl.updateFlvRecording(flvRecording);
+				flvRecordingDaoImpl.updateFlvRecording(flvRecording);
 
-				if (flvRecording.getIsInterview() == null
-						|| !flvRecording.getIsInterview()) {
+				if (flvRecording.getIsInterview() == null || !flvRecording.getIsInterview()) {
 					flvRecorderConverterTask.startConversionThread(flvRecordingId);
 				} else {
-					flvInterviewReConverterTask.startConversionThread(
-						flvRecordingId, leftSideLoud, rightSideLoud,
-						leftSideTime, rightSideTime);
+					flvInterviewReConverterTask.startConversionThread(flvRecordingId, leftSideLoud, rightSideLoud,
+							leftSideTime, rightSideTime);
 				}
 			}
 		} catch (Exception err) {

Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java?rev=1528921&r1=1528920&r2=1528921&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java Thu Oct  3 16:31:53 2013
@@ -169,7 +169,7 @@ public abstract class RecordingResourceR
 		PageParameters params = attributes.getParameters();
 		StringValue id = params.get("id");
 		if (WebSession.get().isSignedIn() && !id.isEmpty()) {
-			FlvRecording r = getBean(FlvRecordingDao.class).getFlvRecordingById(id.toLongObject());
+			FlvRecording r = getBean(FlvRecordingDao.class).get(id.toLongObject());
 			if (r.getOwnerId() == null || getUserId() == r.getOwnerId()) {
 				return r;
 			}