Author: solomax
Date: Wed Aug  6 17:24:26 2014
New Revision: 1616290

URL: http://svn.apache.org/r1616290
Log:
[OPENMEETINGS-998] audio-video synchronization is improved

Modified:
    
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
    
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamAudioWriter.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamVideoWriter.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java

Modified: 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
 Wed Aug  6 17:24:26 2014
@@ -45,10 +45,8 @@ public class FlvRecordingMetaDataDao {
 
        public FlvRecordingMetaData get(Long flvRecordingMetaDataId) {
                try {
-                       String hql = "SELECT c FROM FlvRecordingMetaData c 
WHERE c.flvRecordingMetaDataId = :flvRecordingMetaDataId";
-
-                       TypedQuery<FlvRecordingMetaData> query = 
em.createQuery(hql, FlvRecordingMetaData.class);
-                       query.setParameter("flvRecordingMetaDataId", 
flvRecordingMetaDataId);
+                       TypedQuery<FlvRecordingMetaData> query = 
em.createNamedQuery("getMetaById", FlvRecordingMetaData.class);
+                       query.setParameter("id", flvRecordingMetaDataId);
 
                        FlvRecordingMetaData flvRecordingMetaData = null;
                        try {
@@ -58,43 +56,30 @@ public class FlvRecordingMetaDataDao {
 
                        return flvRecordingMetaData;
                } catch (Exception ex2) {
-                       log.error("[getFlvRecordingMetaDataById]: ", ex2);
+                       log.error("[get]: ", ex2);
                }
                return null;
        }
 
-       public List<FlvRecordingMetaData> getByRecording(Long flvRecordingId) {
+       public List<FlvRecordingMetaData> getByRecording(Long recordingId) {
                try {
+                       TypedQuery<FlvRecordingMetaData> query = 
em.createNamedQuery("getMetaByRecording", FlvRecordingMetaData.class);
+                       query.setParameter("recordingId", recordingId);
 
-                       String hql = "SELECT c FROM FlvRecordingMetaData c 
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
-                                       + "AND c.deleted = false ";
-
-                       TypedQuery<FlvRecordingMetaData> query = 
em.createQuery(hql, FlvRecordingMetaData.class);
-                       query.setParameter("flvRecordingId", flvRecordingId);
-
-                       List<FlvRecordingMetaData> flvRecordingMetaDatas = 
query.getResultList();
-
-                       return flvRecordingMetaDatas;
-
+                       return query.getResultList();
                } catch (Exception ex2) {
-                       log.error("[getFlvRecordingMetaDataByRecording]: ", 
ex2);
+                       log.error("[getByRecording]: ", ex2);
                }
                return null;
        }
 
        public List<FlvRecordingMetaData> getAudioMetaDataByRecording(Long 
flvRecordingId) {
                try {
-                       String hql = "SELECT c FROM FlvRecordingMetaData c 
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
-                                       + "AND c.screenData = false AND 
c.streamStatus <> :none "
-                                       + "AND (c.isAudioOnly = true OR 
(c.isAudioOnly = false AND c.isVideoOnly = false))";
-
-                       TypedQuery<FlvRecordingMetaData> query = 
em.createQuery(hql, FlvRecordingMetaData.class);
-                       query.setParameter("flvRecordingId", flvRecordingId);
+                       TypedQuery<FlvRecordingMetaData> query = 
em.createNamedQuery("getAudioMetaByRecording", FlvRecordingMetaData.class);
+                       query.setParameter("recordingId", flvRecordingId);
                        query.setParameter("none", Status.NONE);
 
-                       List<FlvRecordingMetaData> flvRecordingMetaDatas = 
query.getResultList();
-
-                       return flvRecordingMetaDatas;
+                       return query.getResultList();
                } catch (Exception ex2) {
                        log.error("[getAudioMetaDataByRecording]: ", ex2);
                }
@@ -103,18 +88,14 @@ public class FlvRecordingMetaDataDao {
 
        public FlvRecordingMetaData getScreenMetaDataByRecording(Long 
flvRecordingId) {
                try {
-                       String hql = "SELECT c FROM FlvRecordingMetaData c 
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
-                                       + "AND c.screenData = true";
-
-                       TypedQuery<FlvRecordingMetaData> query = 
em.createQuery(hql, FlvRecordingMetaData.class);
-                       query.setParameter("flvRecordingId", flvRecordingId);
+                       TypedQuery<FlvRecordingMetaData> query = 
em.createNamedQuery("getScreenMetaByRecording", FlvRecordingMetaData.class);
+                       query.setParameter("recordingId", flvRecordingId);
 
                        List<FlvRecordingMetaData> flvRecordingMetaDatas = 
query.getResultList();
 
                        if (flvRecordingMetaDatas.size() > 0) {
                                return flvRecordingMetaDatas.get(0);
                        }
-
                } catch (Exception ex2) {
                        log.error("[getScreenMetaDataByRecording]: ", ex2);
                }
@@ -154,45 +135,18 @@ public class FlvRecordingMetaDataDao {
                return null;
        }
 
-       public Long addFlvRecordingMetaDataObj(FlvRecordingMetaData 
flvRecordingMetaData) {
+       public Long updateFlvRecordingMetaDataEndDate(Long metaId, Date 
recordEnd) {
                try {
+                       FlvRecordingMetaData meta = get(metaId);
 
-                       flvRecordingMetaData = em.merge(flvRecordingMetaData);
-                       Long flvRecordingMetaDataId = 
flvRecordingMetaData.getFlvRecordingMetaDataId();
-
-                       return flvRecordingMetaDataId;
-
-               } catch (Exception ex2) {
-                       log.error("[addFlvRecordingMetaDataObj]: ", ex2);
-               }
-               return null;
-       }
-
-       public Long updateFlvRecordingMetaDataEndDate(Long 
flvRecordingMetaDataId, Date recordEnd) {
-               try {
-                       FlvRecordingMetaData flvRecordingMetaData = 
get(flvRecordingMetaDataId);
-
-                       flvRecordingMetaData.setRecordEnd(recordEnd);
+                       meta.setRecordEnd(recordEnd);
                        
-                       log.debug("updateFlvRecordingMetaDataEndDate :: Start 
Date :"+flvRecordingMetaData.getRecordStart());
-                       log.debug("updateFlvRecordingMetaDataEndDate :: End 
Date :"+flvRecordingMetaData.getRecordEnd());
+                       log.debug("updateFlvRecordingMetaDataEndDate :: Start 
Date :" + meta.getRecordStart());
+                       log.debug("updateFlvRecordingMetaDataEndDate :: End 
Date :" + meta.getRecordEnd());
                        
-                       this.update(flvRecordingMetaData);
+                       update(meta);
                        
-                       return flvRecordingMetaDataId;
-               } catch (Exception ex2) {
-                       log.error("[updateFlvRecordingMetaDataEndDate]: ", ex2);
-               }
-               return null;
-       }
-
-       public Long updateFlvRecordingMetaDataInitialGap(Long 
flvRecordingMetaDataId, long initalGap) {
-               try {
-                       FlvRecordingMetaData flvRecordingMetaData = 
get(flvRecordingMetaDataId);
-
-                       
flvRecordingMetaData.setInitialGapSeconds(Long.valueOf(initalGap).intValue());
-                       this.update(flvRecordingMetaData);
-                       return flvRecordingMetaDataId;
+                       return metaId;
                } catch (Exception ex2) {
                        log.error("[updateFlvRecordingMetaDataEndDate]: ", ex2);
                }
@@ -209,7 +163,7 @@ public class FlvRecordingMetaDataDao {
                                }
                        }
                } catch (Exception ex2) {
-                       log.error("[updateFlvRecordingMetaData]: ", ex2);
+                       log.error("[update]: ", ex2);
                }
                return null;
        }

Modified: 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
 Wed Aug  6 17:24:26 2014
@@ -31,6 +31,8 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
@@ -47,6 +49,14 @@ import org.simpleframework.xml.Root;
  * @author sebawagner
  */
 @Entity
+@NamedQueries({ 
+       @NamedQuery(name = "getMetaById", query = "SELECT c FROM 
FlvRecordingMetaData c WHERE c.flvRecordingMetaDataId = :id")
+       , @NamedQuery(name = "getMetaByRecording", query = "SELECT c FROM 
FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :recordingId AND 
c.deleted = false")
+       , @NamedQuery(name = "getAudioMetaByRecording", query = "SELECT c FROM 
FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :recordingId "
+                       + "AND c.screenData = false AND c.streamStatus <> :none 
AND (c.isAudioOnly = true OR (c.isAudioOnly = false AND c.isVideoOnly = 
false))")
+       , @NamedQuery(name = "getScreenMetaByRecording", query = "SELECT c FROM 
FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :recordingId"
+                       + " AND c.screenData = true")
+})
 @Table(name = "flvrecording_metadata")
 @Root(name = "flvrecordingmetadata")
 public class FlvRecordingMetaData implements Serializable {
@@ -128,10 +138,6 @@ public class FlvRecordingMetaData implem
        @Element(data = true, required = false)
        private Integer interiewPodId;
 
-       @Column(name = "initial_gap_seconds")
-       @Element(data = true, required = false)
-       private Integer initialGapSeconds;
-
        /**
         * this is only STOPPED when the asynchronous stream writer's have 
completed to write packets to the file.
         * @see BaseStreamWriter#closeStream()
@@ -276,14 +282,6 @@ public class FlvRecordingMetaData implem
                this.interiewPodId = interiewPodId;
        }
 
-       public Integer getInitialGapSeconds() {
-               return initialGapSeconds;
-       }
-
-       public void setInitialGapSeconds(Integer initialGapSeconds) {
-               this.initialGapSeconds = initialGapSeconds;
-       }
-
        public Status getStreamStatus() {
                return streamStatus;
        }

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
 Wed Aug  6 17:24:26 2014
@@ -250,7 +250,8 @@ public abstract class BaseConverter {
        
                                metaData.setAudioIsValid(false);
                                if (inputFlvFile.exists()) {
-                                       String[] argv = new String[] 
{getPathToFFMPEG(), "-y", "-async", "1", "-i", inputFlvFile.getCanonicalPath(), 
outputWav};
+                                       String[] argv = new String[] 
{getPathToFFMPEG(), "-y", "-i", inputFlvFile.getCanonicalPath()
+                                                       , "-af", 
"aresample=32k", outputWav};
        
                                        
returnLog.add(ProcessHelper.executeScript("stripAudioFromFLVs", argv));
        

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java
 Wed Aug  6 17:24:26 2014
@@ -27,6 +27,7 @@ import java.util.Date;
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
 import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDeltaDao;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
 import org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta;
 import org.red5.io.ITag;
 import org.red5.io.flv.impl.Tag;
@@ -120,6 +121,10 @@ public class StreamAudioWriter extends B
 
                                        // That will be not bigger then long 
value
                                        startTimeStamp = 
streampacket.getTimestamp();
+                               
+                                       FlvRecordingMetaData metaData = 
metaDataDao.get(metaDataId);
+                                       metaData.setRecordStart(virtualTime);
+                                       metaDataDao.update(metaData);
                                }
 
                                lastStreamPacketTimeStamp = 
streampacket.getTimestamp();

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java
 Wed Aug  6 17:24:26 2014
@@ -65,12 +65,10 @@ public class StreamVideoWriter extends B
 
                        if (startedSessionScreenTimeDate == null) {
                                startedSessionScreenTimeDate = virtualTime;
-                               // 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(metaDataId, initialDelta);
+                               FlvRecordingMetaData metaData = 
metaDataDao.get(metaDataId);
+                               metaData.setRecordStart(virtualTime);
+                               metaDataDao.update(metaData);
                        }
 
                        if (startTimeStamp == -1) {
@@ -96,14 +94,5 @@ public class StreamVideoWriter extends B
 
        @Override
        protected void internalCloseStream() {
-               try {
-                       // 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(metaDataId);
-                       metaData.setRecordStart(new 
Date(metaData.getRecordStart().getTime() + initialDelta));
-                       metaDataDao.update(metaData);
-               } catch (Exception err) {
-                       log.error("[internalCloseStream]", err);
-               }
        }
 }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 Wed Aug  6 17:24:26 2014
@@ -250,7 +250,8 @@ public abstract class BaseConverter {
        
                                metaData.setAudioIsValid(false);
                                if (inputFlvFile.exists()) {
-                                       String[] argv = new String[] 
{getPathToFFMPEG(), "-y", "-async", "1", "-i", inputFlvFile.getCanonicalPath(), 
outputWav};
+                                       String[] argv = new String[] 
{getPathToFFMPEG(), "-y", "-i", inputFlvFile.getCanonicalPath()
+                                                       , "-af", 
"aresample=32k", outputWav};
        
                                        
returnLog.add(ProcessHelper.executeScript("stripAudioFromFLVs", argv));
        

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamAudioWriter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamAudioWriter.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamAudioWriter.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamAudioWriter.java
 Wed Aug  6 17:24:26 2014
@@ -27,6 +27,7 @@ import java.util.Date;
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
 import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDeltaDao;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
 import org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta;
 import org.red5.io.ITag;
 import org.red5.io.flv.impl.Tag;
@@ -120,6 +121,10 @@ public class StreamAudioWriter extends B
 
                                        // That will be not bigger then long 
value
                                        startTimeStamp = 
streampacket.getTimestamp();
+                               
+                                       FlvRecordingMetaData metaData = 
metaDataDao.get(metaDataId);
+                                       metaData.setRecordStart(virtualTime);
+                                       metaDataDao.update(metaData);
                                }
 
                                lastStreamPacketTimeStamp = 
streampacket.getTimestamp();

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamVideoWriter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamVideoWriter.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamVideoWriter.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/listener/async/StreamVideoWriter.java
 Wed Aug  6 17:24:26 2014
@@ -65,12 +65,10 @@ public class StreamVideoWriter extends B
 
                        if (startedSessionScreenTimeDate == null) {
                                startedSessionScreenTimeDate = virtualTime;
-                               // 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(metaDataId, initialDelta);
+                               FlvRecordingMetaData metaData = 
metaDataDao.get(metaDataId);
+                               metaData.setRecordStart(virtualTime);
+                               metaDataDao.update(metaData);
                        }
 
                        if (startTimeStamp == -1) {
@@ -96,14 +94,5 @@ public class StreamVideoWriter extends B
 
        @Override
        protected void internalCloseStream() {
-               try {
-                       // 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(metaDataId);
-                       metaData.setRecordStart(new 
Date(metaData.getRecordStart().getTime() + initialDelta));
-                       metaDataDao.update(metaData);
-               } catch (Exception err) {
-                       log.error("[internalCloseStream]", err);
-               }
        }
 }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
 Wed Aug  6 17:24:26 2014
@@ -43,12 +43,10 @@ public class FlvRecordingMetaDataDao {
        @Autowired
        private FlvRecordingDao flvRecordingDao;
 
-       public FlvRecordingMetaData get(Long flvRecordingMetaDataId) {
+       public FlvRecordingMetaData get(Long id) {
                try {
-                       String hql = "SELECT c FROM FlvRecordingMetaData c 
WHERE c.flvRecordingMetaDataId = :flvRecordingMetaDataId";
-
-                       TypedQuery<FlvRecordingMetaData> query = 
em.createQuery(hql, FlvRecordingMetaData.class);
-                       query.setParameter("flvRecordingMetaDataId", 
flvRecordingMetaDataId);
+                       TypedQuery<FlvRecordingMetaData> query = 
em.createNamedQuery("getMetaById", FlvRecordingMetaData.class);
+                       query.setParameter("id", id);
 
                        FlvRecordingMetaData flvRecordingMetaData = null;
                        try {
@@ -58,43 +56,30 @@ public class FlvRecordingMetaDataDao {
 
                        return flvRecordingMetaData;
                } catch (Exception ex2) {
-                       log.error("[getFlvRecordingMetaDataById]: ", ex2);
+                       log.error("[get]: ", ex2);
                }
                return null;
        }
 
-       public List<FlvRecordingMetaData> getByRecording(Long flvRecordingId) {
+       public List<FlvRecordingMetaData> getByRecording(Long recordingId) {
                try {
+                       TypedQuery<FlvRecordingMetaData> query = 
em.createNamedQuery("getMetaByRecording", FlvRecordingMetaData.class);
+                       query.setParameter("recordingId", recordingId);
 
-                       String hql = "SELECT c FROM FlvRecordingMetaData c 
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
-                                       + "AND c.deleted = false ";
-
-                       TypedQuery<FlvRecordingMetaData> query = 
em.createQuery(hql, FlvRecordingMetaData.class);
-                       query.setParameter("flvRecordingId", flvRecordingId);
-
-                       List<FlvRecordingMetaData> flvRecordingMetaDatas = 
query.getResultList();
-
-                       return flvRecordingMetaDatas;
-
+                       return query.getResultList();
                } catch (Exception ex2) {
-                       log.error("[getFlvRecordingMetaDataByRecording]: ", 
ex2);
+                       log.error("[getByRecording]: ", ex2);
                }
                return null;
        }
 
-       public List<FlvRecordingMetaData> getAudioMetaDataByRecording(Long 
flvRecordingId) {
+       public List<FlvRecordingMetaData> getAudioMetaDataByRecording(Long 
recordingId) {
                try {
-                       String hql = "SELECT c FROM FlvRecordingMetaData c 
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
-                                       + "AND c.screenData = false AND 
c.streamStatus <> :none "
-                                       + "AND (c.isAudioOnly = true OR 
(c.isAudioOnly = false AND c.isVideoOnly = false))";
-
-                       TypedQuery<FlvRecordingMetaData> query = 
em.createQuery(hql, FlvRecordingMetaData.class);
-                       query.setParameter("flvRecordingId", flvRecordingId);
+                       TypedQuery<FlvRecordingMetaData> query = 
em.createNamedQuery("getAudioMetaByRecording", FlvRecordingMetaData.class);
+                       query.setParameter("recordingId", recordingId);
                        query.setParameter("none", Status.NONE);
 
-                       List<FlvRecordingMetaData> flvRecordingMetaDatas = 
query.getResultList();
-
-                       return flvRecordingMetaDatas;
+                       return query.getResultList();
                } catch (Exception ex2) {
                        log.error("[getAudioMetaDataByRecording]: ", ex2);
                }
@@ -103,10 +88,7 @@ public class FlvRecordingMetaDataDao {
 
        public FlvRecordingMetaData getScreenMetaDataByRecording(Long 
flvRecordingId) {
                try {
-                       String hql = "SELECT c FROM FlvRecordingMetaData c 
WHERE c.flvRecording.flvRecordingId = :flvRecordingId "
-                                       + "AND c.screenData = true";
-
-                       TypedQuery<FlvRecordingMetaData> query = 
em.createQuery(hql, FlvRecordingMetaData.class);
+                       TypedQuery<FlvRecordingMetaData> query = 
em.createNamedQuery("getScreenMetaByRecording", FlvRecordingMetaData.class);
                        query.setParameter("flvRecordingId", flvRecordingId);
 
                        List<FlvRecordingMetaData> flvRecordingMetaDatas = 
query.getResultList();
@@ -114,7 +96,6 @@ public class FlvRecordingMetaDataDao {
                        if (flvRecordingMetaDatas.size() > 0) {
                                return flvRecordingMetaDatas.get(0);
                        }
-
                } catch (Exception ex2) {
                        log.error("[getScreenMetaDataByRecording]: ", ex2);
                }
@@ -154,45 +135,18 @@ public class FlvRecordingMetaDataDao {
                return null;
        }
 
-       public Long addFlvRecordingMetaDataObj(FlvRecordingMetaData 
flvRecordingMetaData) {
+       public Long updateFlvRecordingMetaDataEndDate(Long metaId, Date 
recordEnd) {
                try {
+                       FlvRecordingMetaData meta = get(metaId);
 
-                       flvRecordingMetaData = em.merge(flvRecordingMetaData);
-                       Long flvRecordingMetaDataId = 
flvRecordingMetaData.getId();
-
-                       return flvRecordingMetaDataId;
-
-               } catch (Exception ex2) {
-                       log.error("[addFlvRecordingMetaDataObj]: ", ex2);
-               }
-               return null;
-       }
-
-       public Long updateFlvRecordingMetaDataEndDate(Long 
flvRecordingMetaDataId, Date recordEnd) {
-               try {
-                       FlvRecordingMetaData flvRecordingMetaData = 
get(flvRecordingMetaDataId);
-
-                       flvRecordingMetaData.setRecordEnd(recordEnd);
+                       meta.setRecordEnd(recordEnd);
                        
-                       log.debug("updateFlvRecordingMetaDataEndDate :: Start 
Date :"+flvRecordingMetaData.getRecordStart());
-                       log.debug("updateFlvRecordingMetaDataEndDate :: End 
Date :"+flvRecordingMetaData.getRecordEnd());
+                       log.debug("updateFlvRecordingMetaDataEndDate :: Start 
Date :" + meta.getRecordStart());
+                       log.debug("updateFlvRecordingMetaDataEndDate :: End 
Date :" + meta.getRecordEnd());
                        
-                       this.update(flvRecordingMetaData);
+                       update(meta);
                        
-                       return flvRecordingMetaDataId;
-               } catch (Exception ex2) {
-                       log.error("[updateFlvRecordingMetaDataEndDate]: ", ex2);
-               }
-               return null;
-       }
-
-       public Long updateFlvRecordingMetaDataInitialGap(Long 
flvRecordingMetaDataId, long initalGap) {
-               try {
-                       FlvRecordingMetaData flvRecordingMetaData = 
get(flvRecordingMetaDataId);
-
-                       
flvRecordingMetaData.setInitialGapSeconds(Long.valueOf(initalGap).intValue());
-                       this.update(flvRecordingMetaData);
-                       return flvRecordingMetaDataId;
+                       return metaId;
                } catch (Exception ex2) {
                        log.error("[updateFlvRecordingMetaDataEndDate]: ", ex2);
                }
@@ -209,7 +163,7 @@ public class FlvRecordingMetaDataDao {
                                }
                        }
                } catch (Exception ex2) {
-                       log.error("[updateFlvRecordingMetaData]: ", ex2);
+                       log.error("[update]: ", ex2);
                }
                return null;
        }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java?rev=1616290&r1=1616289&r2=1616290&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
 Wed Aug  6 17:24:26 2014
@@ -30,6 +30,8 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 import javax.xml.bind.annotation.XmlType;
 
@@ -48,6 +50,14 @@ import org.simpleframework.xml.Root;
  * @author sebawagner
  */
 @Entity
+@NamedQueries({ 
+       @NamedQuery(name = "getMetaById", query = "SELECT c FROM 
FlvRecordingMetaData c WHERE c.id = :id")
+       , @NamedQuery(name = "getMetaByRecording", query = "SELECT c FROM 
FlvRecordingMetaData c WHERE c.flvRecording.id = :recordingId AND c.deleted = 
false")
+       , @NamedQuery(name = "getAudioMetaByRecording", query = "SELECT c FROM 
FlvRecordingMetaData c WHERE c.flvRecording.id = :recordingId "
+                       + "AND c.screenData = false AND c.streamStatus <> :none 
AND (c.isAudioOnly = true OR (c.isAudioOnly = false AND c.isVideoOnly = 
false))")
+       , @NamedQuery(name = "getScreenMetaByRecording", query = "SELECT c FROM 
FlvRecordingMetaData c WHERE c.flvRecording.id = :recordingId "
+                       + "AND c.screenData = true")
+})
 @Table(name = "flvrecording_metadata")
 @Root(name = "flvrecordingmetadata")
 public class FlvRecordingMetaData implements IDataProviderEntity {
@@ -130,10 +140,6 @@ public class FlvRecordingMetaData implem
        @Element(data = true, required = false)
        private Integer interiewPodId;
 
-       @Column(name = "initial_gap_seconds")
-       @Element(data = true, required = false)
-       private Integer initialGapSeconds;
-
        /**
         * this is only STOPPED when the asynchronous stream writer's have 
completed to write packets to the file.
         * @see BaseStreamWriter#closeStream()
@@ -278,14 +284,6 @@ public class FlvRecordingMetaData implem
                this.interiewPodId = interiewPodId;
        }
 
-       public Integer getInitialGapSeconds() {
-               return initialGapSeconds;
-       }
-
-       public void setInitialGapSeconds(Integer initialGapSeconds) {
-               this.initialGapSeconds = initialGapSeconds;
-       }
-
        public Status getStreamStatus() {
                return streamStatus;
        }


Reply via email to