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 2015/01/18 20:18:50 UTC

svn commit: r1652836 [1/2] - in /openmeetings: branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/ branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/ branches/3.0.x/src/main/java/org/apache/openmeetings/converter/ branch...

Author: solomax
Date: Sun Jan 18 19:18:48 2015
New Revision: 1652836

URL: http://svn.apache.org/r1652836
Log:
[OPENMEETINGS-547] Deferred recordings converting possibility is added

Removed:
    openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/flvrecord/converter/FlvInterviewReConverterTask.java
    openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/flvrecord/converter/FlvInterviewReConverterTask.java
Modified:
    openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java
    openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.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/converter/FlvInterviewConverter.java
    openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
    openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/arabic.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/bulgarian.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/catalan.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/chinese simplified.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/chinese traditional.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/czech.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/danish.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/deutsch (studIP).xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/deutsch.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/dutch.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/english.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/finnish.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/french.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/galician.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/greek.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/hebrew.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/hungarian.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/indonesian.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/italian.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/japanese.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/korean.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/persian.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/polish.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/portugues brazil.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/portugues.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/russian.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/slovak.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/spanish.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/swedish.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/thai.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/turkish.xml
    openmeetings/branches/3.0.x/src/main/webapp/languages/ukrainian.xml
    openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/OmFileHelper.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.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/converter/FlvInterviewConverter.java
    openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java
    openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java
    openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
    openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.html
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/arabic.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/bulgarian.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/catalan.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/chinese simplified.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/chinese traditional.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/czech.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/danish.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/deutsch (studIP).xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/deutsch.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/dutch.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/english.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/finnish.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/french.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/galician.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/greek.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/hebrew.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/hungarian.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/indonesian.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/italian.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/japanese.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/korean.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/persian.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/polish.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/portugues brazil.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/portugues.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/russian.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/slovak.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/spanish.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/swedish.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/thai.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/turkish.xml
    openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/ukrainian.xml

Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java Sun Jan 18 19:18:48 2015
@@ -49,18 +49,8 @@ public class FlvRecordingLogDao {
 				.setParameter("recId", recordingId).getResultList();
 	}	
 	
-	public void deleteByRecordingId(Long flvRecordingId) {
-		try {
-			List<FlvRecordingLog> flvRecordingLogs = getByRecordingId(flvRecordingId);
-			
-			for (FlvRecordingLog flvRecordingLog : flvRecordingLogs) {
-				flvRecordingLog = em.find(FlvRecordingLog.class, flvRecordingLog.getFlvRecordingLogId());
-				em.remove(flvRecordingLog);
-			}
-			
-		} catch (Exception ex2) {
-			log.error("[deleteFLVRecordingLogByRecordingId] ", ex2);
-		}
+	public void deleteByRecordingId(Long recordingId) {
+		em.createNamedQuery("deleteErrorRecordingLogsByRecording").setParameter("recId", recordingId).executeUpdate();
 	}
 	
 	public Long addFLVRecordingLog(String msgType, FlvRecording flvRecording, ConverterProcessResult returnMap) {

Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java Sun Jan 18 19:18:48 2015
@@ -35,8 +35,9 @@ import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 @Entity
 @NamedQueries({ 
-	@NamedQuery(name = "getRecordingLogsByRecording", query = "SELECT fl FROM FlvRecordingLog fl WHERE fl.flvRecording.flvRecordingId = :recId")
+	@NamedQuery(name = "getRecordingLogsByRecording", query = "SELECT fl FROM FlvRecordingLog fl WHERE fl.flvRecording.flvRecordingId = :recId ORDER BY fl.inserted")
 	, @NamedQuery(name = "countErrorRecordingLogsByRecording", query = "SELECT COUNT(fl) FROM FlvRecordingLog fl WHERE fl.flvRecording.flvRecordingId = :recId AND fl.exitValue <> '0'")
+	, @NamedQuery(name = "deleteErrorRecordingLogsByRecording", query = "DELETE FROM FlvRecordingLog fl WHERE fl.flvRecording.flvRecordingId = :recId")
 })
 @Table(name = "flvrecording_log")
 public class FlvRecordingLog implements Serializable {
@@ -96,8 +97,7 @@ public class FlvRecordingLog implements
 		return fullMessage;
 	}
 	public void setFullMessage(String fullMessage) {
-		this.fullMessage = 
-				fullMessage == null || fullMessage.length() < MAX_LOG_SIZE ? fullMessage : fullMessage.substring(0,  MAX_LOG_SIZE);
+		this.fullMessage = fullMessage == null || fullMessage.length() < MAX_LOG_SIZE ? fullMessage : fullMessage.substring(0,  MAX_LOG_SIZE);
 	}
 	
 	public String getExitValue() {

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=1652836&r1=1652835&r2=1652836&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 Sun Jan 18 19:18:48 2015
@@ -22,6 +22,7 @@ import static org.apache.openmeetings.da
 import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.OGG_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsSubDir;
 import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -147,11 +148,6 @@ public abstract class BaseConverter {
 		return argv;
 	}
 	
-	private static File getMetaFlv(FlvRecordingMetaData metaData) {
-		File metaDir = getStreamsSubDir(metaData.getFlvRecording().getRoom_id());
-		return new File(metaDir, metaData.getStreamName() + ".flv");
-	}
-	
 	private static File getMetaFlvSer(FlvRecordingMetaData metaData) {
 		File metaDir = getStreamsSubDir(metaData.getFlvRecording().getRoom_id());
 		return new File(metaDir, metaData.getStreamName() + ".flv.ser");
@@ -161,7 +157,7 @@ public abstract class BaseConverter {
 		if (log.isDebugEnabled()) {
 			log.debug(String.format("### %s:: recording id %s; stream with id %s; current status: %s ", prefix, metaData.getFlvRecording().getFlvRecordingId()
 					, metaData.getFlvRecordingMetaDataId(), metaData.getStreamStatus()));
-			File metaFlv = getMetaFlv(metaData);
+			File metaFlv = getRecordingMetaData(metaData.getFlvRecording().getRoom_id(), metaData.getStreamName());
 			File metaSer = getMetaFlvSer(metaData);
 			log.debug(String.format("### %s:: Flv file [%s] exists ? %s; size: %s, lastModified: %s ", prefix, metaFlv.getPath(), metaFlv.exists(), metaFlv.length(), metaFlv.lastModified()));
 			log.debug(String.format("### %s:: Ser file [%s] exists ? %s; size: %s, lastModified: %s ", prefix, metaSer.getPath(), metaSer.exists(), metaSer.length(), metaSer.lastModified()));
@@ -186,7 +182,7 @@ public abstract class BaseConverter {
 					doWait = false;
 					break;
 				} else {
-					File metaFlv = getMetaFlv(metaData);
+					File metaFlv = getRecordingMetaData(metaData.getFlvRecording().getRoom_id(), metaData.getStreamName());
 					if (metaFlv.exists() && maxTimestamp < metaFlv.lastModified()) {
 						maxTimestamp = metaFlv.lastModified();
 					}

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java Sun Jan 18 19:18:48 2015
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.converter;
 
+import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
@@ -39,10 +40,12 @@ import org.springframework.beans.factory
 
 public class FlvInterviewConverter extends BaseConverter {
 	private static final Logger log = Red5LoggerFactory.getLogger(FlvInterviewConverter.class, webAppRootKey);
-	private class ReConverterParams {
+	private static class ReConverterParams {
 		private int leftSideLoud = 1;
 		private int rightSideLoud = 1;
+		@SuppressWarnings("unused")
 		private Integer leftSideTime = 0;
+		@SuppressWarnings("unused")
 		private Integer rightSideTime = 0;
 	}
 
@@ -56,26 +59,6 @@ public class FlvInterviewConverter exten
 	@Autowired
 	private GenerateThumbs generateThumbs;
 
-	public void startReConversion(Long flvRecordingId, Integer leftSideLoud, Integer rightSideLoud,
-			Integer leftSideTime, Integer rightSideTime) {
-
-		log.debug("++++++++++++ leftSideLoud :: " + leftSideLoud);
-		log.debug("++++++++++++ rightSideLoud :: " + rightSideLoud);
-
-		ReConverterParams rcv = new ReConverterParams();
-		rcv.leftSideLoud += leftSideLoud;
-		rcv.rightSideLoud += rightSideLoud;
-
-		rcv.leftSideTime = leftSideTime;
-		rcv.rightSideTime = rightSideTime;
-
-		log.debug("++++++++++++ this.leftSideLoud :: " + rcv.leftSideLoud);
-		log.debug("++++++++++++ this.rightSideLoud :: " + rcv.rightSideLoud);
-		log.debug("++++++++++++ this.leftSideTime :: " + rcv.leftSideTime);
-		log.debug("++++++++++++ this.rightSideTime :: " + rcv.rightSideTime);
-		startConversion(flvRecordingId, true, rcv);
-	}
-
 	private String[] mergeAudioToWaves(List<String> listOfFullWaveFiles, String outputFullWav,
 			List<FlvRecordingMetaData> metaDataList, ReConverterParams rcv) {
 		String[] argv_full_sox = new String[listOfFullWaveFiles.size() + 5];
@@ -173,7 +156,7 @@ public class FlvInterviewConverter exten
 			String[] pods = new String[2];
 			boolean found = false;
 			for (FlvRecordingMetaData meta : metaDataList) {
-				File flv = new File(streamFolder, meta.getStreamName() + ".flv");
+				File flv = getRecordingMetaData(flvRecording.getRoom_id(), meta.getStreamName());
 
 				Integer pod = meta.getInteriewPodId();
 				if (flv.exists() && pod != null && pod > 0 && pod < 3) {
@@ -316,7 +299,6 @@ public class FlvInterviewConverter exten
 			flvRecording.setStatus(FlvRecording.Status.PROCESSED);
 
 			logDao.deleteByRecordingId(flvRecording.getFlvRecordingId());
-
 			for (ConverterProcessResult returnMap : returnLog) {
 				logDao.addFLVRecordingLog("generateFFMPEG", flvRecording, returnMap);
 			}
@@ -334,9 +316,4 @@ public class FlvInterviewConverter exten
 		}
 		recordingDao.update(flvRecording);
 	}
-
-	public ConverterProcessResult processImageWindows(String file1, String file2, String file3) {
-		return ProcessHelper.executeScriptWindows("processImageWindows", new String[] { getPathToImageMagick(), file1,
-				file2, "+append", file3 });
-	}
 }

Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java Sun Jan 18 19:18:48 2015
@@ -26,7 +26,6 @@ import java.util.concurrent.ConcurrentHa
 
 import org.apache.openmeetings.converter.BaseConverter;
 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.StreamListener;
 import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
@@ -42,7 +41,6 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData.Status;
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
-import org.apache.openmeetings.util.AuthLevelUtil;
 import org.apache.openmeetings.util.CalendarPatterns;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.IConnection;
@@ -80,8 +78,6 @@ public class FLVRecorderService implemen
 	@Autowired
 	private FlvInterviewConverterTask flvInterviewConverterTask;
 	@Autowired
-	private FlvInterviewReConverterTask flvInterviewReConverterTask;
-	@Autowired
 	private FlvRecordingLogDao flvRecordingLogDaoImpl;
 	@Autowired
 	private FlvRecordingDao recordingDao;
@@ -503,33 +499,4 @@ public class FLVRecorderService implemen
 			log.error("[addRecordingByStreamId]", err);
 		}
 	}
-
-	public Long restartConversion(String SID, Long flvRecordingId, Integer leftSideLoud, Integer rightSideLoud, Integer leftSideTime,
-			Integer rightSideTime) {
-		try {
-			Long users_id = sessiondataDao.checkSession(SID);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
-				log.debug("updateFileOrFolderName " + flvRecordingId);
-
-				FlvRecording flvRecording = flvRecordingDaoImpl.get(flvRecordingId);
-
-				flvRecording.setPreviewImage(null);
-
-				flvRecording.setProgressPostProcessing(0);
-
-				flvRecordingDaoImpl.update(flvRecording);
-
-				if (flvRecording.getIsInterview() == null || !flvRecording.getIsInterview()) {
-					flvRecorderConverterTask.startConversionThread(flvRecordingId);
-				} else {
-					flvInterviewReConverterTask.startConversionThread(flvRecordingId, leftSideLoud, rightSideLoud, leftSideTime,
-							rightSideTime);
-				}
-			}
-		} catch (Exception err) {
-			log.error("[restartInterviewConversion] ", err);
-		}
-		return null;
-	}
-
 }

Modified: openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Sun Jan 18 19:18:48 2015
@@ -95,7 +95,6 @@
 	<bean id="mobile.service" class="org.apache.openmeetings.remote.MobileService" />
 	<bean id="openmeetings.FlvRecorderConverterTask" class="org.apache.openmeetings.data.flvrecord.converter.FlvRecorderConverterTask" />
 	<bean id="openmeetings.FlvInterviewConverterTask" class="org.apache.openmeetings.data.flvrecord.converter.FlvInterviewConverterTask" />
-	<bean id="openmeetings.FlvInterviewReConverterTask" class="org.apache.openmeetings.data.flvrecord.converter.FlvInterviewReConverterTask" />
 	<bean id="openmeetings.FlvInterviewConverter" class="org.apache.openmeetings.converter.FlvInterviewConverter" />
 	<bean id="openmeetings.FlvRecorderConverter" class="org.apache.openmeetings.converter.FlvRecorderConverter" />
 	<bean id="openmeetings.SlaveHTTPConnectionManager" class="org.apache.openmeetings.cluster.SlaveHTTPConnectionManager" />

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/arabic.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/arabic.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/arabic.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/arabic.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/bulgarian.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/bulgarian.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/bulgarian.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/bulgarian.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/catalan.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/catalan.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/catalan.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/catalan.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/chinese simplified.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/chinese%20simplified.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/chinese simplified.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/chinese simplified.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/chinese traditional.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/chinese%20traditional.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/chinese traditional.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/chinese traditional.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/czech.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/czech.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/czech.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/czech.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/danish.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/danish.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/danish.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/danish.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/deutsch (studIP).xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/deutsch%20%28studIP%29.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/deutsch (studIP).xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/deutsch (studIP).xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/deutsch.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/deutsch.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/deutsch.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/deutsch.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/dutch.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/dutch.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/dutch.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/dutch.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/english.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/english.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/english.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/english.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/finnish.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/finnish.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/finnish.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/finnish.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/french.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/french.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/french.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/french.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/galician.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/galician.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/galician.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/galician.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/greek.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/greek.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/greek.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/greek.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/hebrew.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/hebrew.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/hebrew.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/hebrew.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/hungarian.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/hungarian.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/hungarian.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/hungarian.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/indonesian.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/indonesian.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/indonesian.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/indonesian.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/italian.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/italian.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/italian.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/italian.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/japanese.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/japanese.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/japanese.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/japanese.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>この会議室へは入れません</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/korean.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/korean.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/korean.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/korean.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/persian.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/persian.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/persian.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/persian.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/polish.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/polish.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/polish.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/polish.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/portugues brazil.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/portugues%20brazil.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/portugues brazil.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/portugues brazil.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/portugues.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/portugues.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/portugues.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/portugues.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/russian.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/russian.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/russian.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/russian.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Доступ запрещён. У вас нет прав для входа в эту комнату.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Пересоздать</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/slovak.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/slovak.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/slovak.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/slovak.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/spanish.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/spanish.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/spanish.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/spanish.xml Sun Jan 18 19:18:48 2015
@@ -4828,4 +4828,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/swedish.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/swedish.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/swedish.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/swedish.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/thai.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/thai.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/thai.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/thai.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/turkish.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/turkish.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/turkish.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/turkish.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/main/webapp/languages/ukrainian.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/languages/ukrainian.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/languages/ukrainian.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/languages/ukrainian.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/OmFileHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/OmFileHelper.java (original)
+++ openmeetings/branches/3.0.x/src/util/java/org/apache/openmeetings/util/OmFileHelper.java Sun Jan 18 19:18:48 2015
@@ -209,6 +209,10 @@ public class OmFileHelper {
 		return getDir(getStreamsDir(), name);
 	}
 	
+	public static File getRecordingMetaData(Long roomId, String name) {
+		return new File(getStreamsSubDir(roomId), name + ".flv");
+	}
+	
 	public static File getLanguagesDir() {
 		return new File(OmFileHelper.OM_HOME, LANGUAGES_DIR);
 	}

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html Sun Jan 18 19:18:48 2015
@@ -20,7 +20,7 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
-	<div class="info" wicket:id="container">
+	<form class="info" wicket:id="form">
 		<table>
 			<tr>
 				<td><wicket:ommessage key="863"/></td>
@@ -36,15 +36,16 @@
 			</tr>
 			<tr>
 				<td><wicket:ommessage key="874"/></td>
-				<td><span wicket:id="room_id"></span></td>
+				<td><span wicket:id="roomName"></span></td>
 			</tr>
 		</table>
 		<table>
 			<tr>
-				<td><input type="button" wicket:id="dAVI" wicket:ommessage="value:884"/></td>
-				<td><input type="button" wicket:id="dFLV" wicket:ommessage="value:883"/></td>
+				<td><button wicket:id="dAVI"><wicket:ommessage key="884"/></button></td>
+				<td><button wicket:id="dFLV"><wicket:ommessage key="883"/></button></td>
+				<td><button wicket:id="re-convert"><wicket:ommessage key="1600"/></button></td>
 			</tr>
 		</table>
-	</div>
+	</form>
 </wicket:panel>
 </html>

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java Sun Jan 18 19:18:48 2015
@@ -19,32 +19,88 @@
 package org.apache.openmeetings.web.user.record;
 
 import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
+import java.util.List;
+
+import org.apache.openmeetings.converter.FlvInterviewConverter;
+import org.apache.openmeetings.converter.FlvRecorderConverter;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecording.Status;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.web.util.AjaxDownload;
-import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.resource.FileResourceStream;
 
+import com.googlecode.wicket.jquery.ui.JQueryIcon;
+import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
+
 public class VideoInfo extends Panel {
 	private static final long serialVersionUID = 1L;
-	private final WebMarkupContainer container = new WebMarkupContainer("container");
-	private final Button dAVI = new Button("dAVI");
-	private final Button dFLV = new Button("dFLV");
+	private final Form<Void> form = new Form<Void>("form");
+	private final AjaxButton downloadAvi = new AjaxButton("dAVI") {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected String getIcon() {
+			return JQueryIcon.ARROWTHICKSTOP_1_S;
+		};
+		
+		@Override
+		protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+			download.setFileName(rm.getObject().getAlternateDownload());
+			download.setResourceStream(new FileResourceStream(getRecording(rm.getObject().getAlternateDownload())));
+			download.initiate(target);
+		}
+	};
+	private final AjaxButton downloadFlv = new AjaxButton("dFLV") {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected String getIcon() {
+			return JQueryIcon.ARROWTHICKSTOP_1_S;
+		};
+		
+		@Override
+		protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+			download.setFileName(rm.getObject().getFileHash());
+			download.setResourceStream(new FileResourceStream(getRecording(rm.getObject().getFileHash())));
+			download.initiate(target);
+		}
+	};
+	private final AjaxButton reConvert = new AjaxButton("re-convert") {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected String getIcon() {
+			return JQueryIcon.REFRESH;
+		};
+		
+		@Override
+		protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+			if (isInterview) {
+				getBean(FlvInterviewConverter.class).startConversion(rm.getObject().getFlvRecordingId());
+			} else {
+				getBean(FlvRecorderConverter.class).startConversion(rm.getObject().getFlvRecordingId());
+			}
+		}
+	};
 	private final AjaxDownload download = new AjaxDownload();
 	private final IModel<FlvRecording> rm = new CompoundPropertyModel<FlvRecording>(new FlvRecording());
 	private final IModel<String> roomName = Model.of((String)null);
+	private boolean isInterview = false;
 
 	public VideoInfo(String id) {
 		this(id, null);
@@ -52,50 +108,59 @@ public class VideoInfo extends Panel {
 	
 	public VideoInfo(String id, FlvRecording r) {
 		super(id);
-		add(container.setOutputMarkupId(true));
+		add(form.setOutputMarkupId(true));
 		setDefaultModel(rm);
 		
-		container.add(new Label("fileName"), new Label("duration"), new Label("recordEnd"), new Label("room_id", roomName),
-				dFLV.setEnabled(false), dAVI.setEnabled(false));
-		dAVI.add(new AjaxEventBehavior("click"){
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected void onEvent(AjaxRequestTarget target) {
-				download.setFileName(rm.getObject().getAlternateDownload());
-				download.setResourceStream(new FileResourceStream(getRecording(rm.getObject().getAlternateDownload())));
-				download.initiate(target);
-			}
-		});
-		dFLV.add(new AjaxEventBehavior("click"){
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected void onEvent(AjaxRequestTarget target) {
-				download.setFileName(rm.getObject().getFileHash());
-				download.setResourceStream(new FileResourceStream(getRecording(rm.getObject().getFileHash())));
-				download.initiate(target);
-			}
-		});
+		form.add(new Label("fileName"), new Label("duration"), new Label("recordEnd"), new Label("roomName", roomName),
+				downloadFlv.setEnabled(false), downloadAvi.setEnabled(false), reConvert.setEnabled(false));
 		add(download);
 		update(null, r);
 	}
 	
-	public VideoInfo update(AjaxRequestTarget target, FlvRecording r) {
-		rm.setObject(r == null ? new FlvRecording() : r);
+	public VideoInfo update(AjaxRequestTarget target, FlvRecording _r) {
+		FlvRecording r = _r == null ? new FlvRecording() : _r;
+		rm.setObject(r);
 		try {
-			Room room = getBean(RoomDao.class).get(r.getRoom_id());
-			roomName.setObject(room.getName());
+			String name = null;
+			if (r.getRoom_id() != null) {
+				Room room = getBean(RoomDao.class).get(r.getRoom_id());
+				if (room != null) {
+					name = room.getName();
+					isInterview = room.getRoomtype().getRoomtypes_id() == 4;
+				}
+			}
+			roomName.setObject(name);
 		} catch (Exception e) {
 			//no-op
 		}
 		
-		dAVI.setEnabled(isRecordingExists(rm.getObject().getAlternateDownload()));
-		dFLV.setEnabled(isRecordingExists(rm.getObject().getFileHash()));
+		boolean reConvEnabled = false;
+		if (r.getOwnerId() != null && getUserId() == r.getOwnerId() && r.getStatus() != Status.PROCESSING) {
+			List<FlvRecordingMetaData> metas = getBean(FlvRecordingMetaDataDao.class).getByRecording(r.getFlvRecordingId());
+			reconvLabel:
+			if (!metas.isEmpty()) {
+				for (FlvRecordingMetaData meta : metas) {
+					if (!getRecordingMetaData(r.getRoom_id(), meta.getStreamName()).exists()) {
+						break reconvLabel;
+					}
+				}
+				reConvEnabled = true;
+			}
+		}
+		reConvert.setEnabled(reConvEnabled);
+		downloadAvi.setEnabled(isRecordingExists(r.getAlternateDownload()));
+		downloadFlv.setEnabled(isRecordingExists(r.getFileHash()));
 		if (target != null) {
-			target.add(container);
+			target.add(form);
 		}
 		
 		return this;
 	}
+	
+	@Override
+	protected void onDetach() {
+		rm.detach();
+		roomName.detach();
+		super.onDetach();
+	}
 }

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=1652836&r1=1652835&r2=1652836&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 Sun Jan 18 19:18:48 2015
@@ -22,6 +22,7 @@ import static org.apache.openmeetings.co
 import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.OGG_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsSubDir;
 import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -147,11 +148,6 @@ public abstract class BaseConverter {
 		return argv;
 	}
 	
-	private static File getMetaFlv(FlvRecordingMetaData metaData) {
-		File metaDir = getStreamsSubDir(metaData.getFlvRecording().getRoomId());
-		return new File(metaDir, metaData.getStreamName() + ".flv");
-	}
-	
 	private static File getMetaFlvSer(FlvRecordingMetaData metaData) {
 		File metaDir = getStreamsSubDir(metaData.getFlvRecording().getRoomId());
 		return new File(metaDir, metaData.getStreamName() + ".flv.ser");
@@ -161,7 +157,7 @@ public abstract class BaseConverter {
 		if (log.isDebugEnabled()) {
 			log.debug(String.format("### %s:: recording id %s; stream with id %s; current status: %s ", prefix, metaData.getFlvRecording().getId()
 					, metaData.getId(), metaData.getStreamStatus()));
-			File metaFlv = getMetaFlv(metaData);
+			File metaFlv = getRecordingMetaData(metaData.getFlvRecording().getRoomId(), metaData.getStreamName());
 			File metaSer = getMetaFlvSer(metaData);
 			log.debug(String.format("### %s:: Flv file [%s] exists ? %s; size: %s, lastModified: %s ", prefix, metaFlv.getPath(), metaFlv.exists(), metaFlv.length(), metaFlv.lastModified()));
 			log.debug(String.format("### %s:: Ser file [%s] exists ? %s; size: %s, lastModified: %s ", prefix, metaSer.getPath(), metaSer.exists(), metaSer.length(), metaSer.lastModified()));
@@ -186,7 +182,7 @@ public abstract class BaseConverter {
 					doWait = false;
 					break;
 				} else {
-					File metaFlv = getMetaFlv(metaData);
+					File metaFlv = getRecordingMetaData(metaData.getFlvRecording().getRoomId(), metaData.getStreamName());
 					if (metaFlv.exists() && maxTimestamp < metaFlv.lastModified()) {
 						maxTimestamp = metaFlv.lastModified();
 					}

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java Sun Jan 18 19:18:48 2015
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.core.converter;
 
+import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
@@ -42,7 +43,9 @@ public class FlvInterviewConverter exten
 	private static class ReConverterParams {
 		private int leftSideLoud = 1;
 		private int rightSideLoud = 1;
+		@SuppressWarnings("unused")
 		private Integer leftSideTime = 0;
+		@SuppressWarnings("unused")
 		private Integer rightSideTime = 0;
 	}
 
@@ -56,26 +59,6 @@ public class FlvInterviewConverter exten
 	@Autowired
 	private GenerateThumbs generateThumbs;
 
-	public void startReConversion(Long flvRecordingId, Integer leftSideLoud, Integer rightSideLoud,
-			Integer leftSideTime, Integer rightSideTime) {
-
-		log.debug("++++++++++++ leftSideLoud :: " + leftSideLoud);
-		log.debug("++++++++++++ rightSideLoud :: " + rightSideLoud);
-
-		ReConverterParams rcv = new ReConverterParams();
-		rcv.leftSideLoud += leftSideLoud;
-		rcv.rightSideLoud += rightSideLoud;
-
-		rcv.leftSideTime = leftSideTime;
-		rcv.rightSideTime = rightSideTime;
-
-		log.debug("++++++++++++ this.leftSideLoud :: " + rcv.leftSideLoud);
-		log.debug("++++++++++++ this.rightSideLoud :: " + rcv.rightSideLoud);
-		log.debug("++++++++++++ this.leftSideTime :: " + rcv.leftSideTime);
-		log.debug("++++++++++++ this.rightSideTime :: " + rcv.rightSideTime);
-		startConversion(flvRecordingId, true, rcv);
-	}
-
 	private String[] mergeAudioToWaves(List<String> listOfFullWaveFiles, String outputFullWav,
 			List<FlvRecordingMetaData> metaDataList, ReConverterParams rcv) {
 		String[] argv_full_sox = new String[listOfFullWaveFiles.size() + 5];
@@ -173,7 +156,7 @@ public class FlvInterviewConverter exten
 			String[] pods = new String[2];
 			boolean found = false;
 			for (FlvRecordingMetaData meta : metaDataList) {
-				File flv = new File(streamFolder, meta.getStreamName() + ".flv");
+				File flv = getRecordingMetaData(flvRecording.getRoomId(), meta.getStreamName());
 
 				Integer pod = meta.getInteriewPodId();
 				if (flv.exists() && pod != null && pod > 0 && pod < 3) {
@@ -192,7 +175,6 @@ public class FlvInterviewConverter exten
 					returnLog.add(r);
 					if ("0".equals(r.getExitValue())) {
 						//TODO need to remove smallest gap
-						
 						long diff = diff(meta.getRecordStart(), meta.getFlvRecording().getRecordStart());
 						if (diff != 0L) {
 							// stub to add
@@ -317,7 +299,6 @@ public class FlvInterviewConverter exten
 			flvRecording.setStatus(FlvRecording.Status.PROCESSED);
 
 			logDao.deleteByRecordingId(flvRecording.getId());
-
 			for (ConverterProcessResult returnMap : returnLog) {
 				logDao.addFLVRecordingLog("generateFFMPEG", flvRecording, returnMap);
 			}
@@ -335,9 +316,4 @@ public class FlvInterviewConverter exten
 		}
 		recordingDao.update(flvRecording);
 	}
-
-	public ConverterProcessResult processImageWindows(String file1, String file2, String file3) {
-		return ProcessHelper.executeScriptWindows("processImageWindows", new String[] { getPathToImageMagick(), file1,
-				file2, "+append", file3 });
-	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java Sun Jan 18 19:18:48 2015
@@ -26,7 +26,6 @@ import java.util.concurrent.ConcurrentHa
 
 import org.apache.openmeetings.core.converter.BaseConverter;
 import org.apache.openmeetings.core.data.flvrecord.converter.FlvInterviewConverterTask;
-import org.apache.openmeetings.core.data.flvrecord.converter.FlvInterviewReConverterTask;
 import org.apache.openmeetings.core.data.flvrecord.converter.FlvRecorderConverterTask;
 import org.apache.openmeetings.core.data.flvrecord.listener.StreamListener;
 import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
@@ -81,8 +80,6 @@ public class FLVRecorderService implemen
 	@Autowired
 	private FlvInterviewConverterTask flvInterviewConverterTask;
 	@Autowired
-	private FlvInterviewReConverterTask flvInterviewReConverterTask;
-	@Autowired
 	private FlvRecordingLogDao flvRecordingLogDaoImpl;
 	@Autowired
 	private FlvRecordingDao recordingDao;
@@ -501,33 +498,4 @@ public class FLVRecorderService implemen
 			log.error("[addRecordingByStreamId]", err);
 		}
 	}
-
-	public Long restartConversion(String SID, Long flvRecordingId, Integer leftSideLoud, Integer rightSideLoud, Integer leftSideTime,
-			Integer rightSideTime) {
-		try {
-			Long users_id = sessiondataDao.checkSession(SID);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
-				log.debug("updateFileOrFolderName " + flvRecordingId);
-
-				FlvRecording flvRecording = flvRecordingDaoImpl.get(flvRecordingId);
-
-				flvRecording.setPreviewImage(null);
-
-				flvRecording.setProgressPostProcessing(0);
-
-				flvRecordingDaoImpl.update(flvRecording);
-
-				if (flvRecording.getIsInterview() == null || !flvRecording.getIsInterview()) {
-					flvRecorderConverterTask.startConversionThread(flvRecordingId);
-				} else {
-					flvInterviewReConverterTask.startConversionThread(flvRecordingId, leftSideLoud, rightSideLoud, leftSideTime,
-							rightSideTime);
-				}
-			}
-		} catch (Exception err) {
-			log.error("[restartInterviewConversion] ", err);
-		}
-		return null;
-	}
-
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java Sun Jan 18 19:18:48 2015
@@ -49,18 +49,8 @@ public class FlvRecordingLogDao {
 				.setParameter("recId", recordingId).getResultList();
 	}	
 	
-	public void deleteByRecordingId(Long flvRecordingId) {
-		try {
-			List<FlvRecordingLog> flvRecordingLogs = getByRecordingId(flvRecordingId);
-			
-			for (FlvRecordingLog flvRecordingLog : flvRecordingLogs) {
-				flvRecordingLog = em.find(FlvRecordingLog.class, flvRecordingLog.getId());
-				em.remove(flvRecordingLog);
-			}
-			
-		} catch (Exception ex2) {
-			log.error("[deleteFLVRecordingLogByRecordingId] ", ex2);
-		}
+	public void deleteByRecordingId(Long recordingId) {
+		em.createNamedQuery("deleteErrorRecordingLogsByRecording").setParameter("recId", recordingId).executeUpdate();
 	}
 	
 	public Long addFLVRecordingLog(String msgType, FlvRecording flvRecording, ConverterProcessResult returnMap) {

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java Sun Jan 18 19:18:48 2015
@@ -38,6 +38,7 @@ import org.apache.openmeetings.db.entity
 @NamedQueries({ 
 	@NamedQuery(name = "getRecordingLogsByRecording", query = "SELECT fl FROM FlvRecordingLog fl WHERE fl.flvRecording.id = :recId")
 	, @NamedQuery(name = "countErrorRecordingLogsByRecording", query = "SELECT COUNT(fl) FROM FlvRecordingLog fl WHERE fl.flvRecording.id = :recId AND fl.exitValue <> '0'")
+	, @NamedQuery(name = "deleteErrorRecordingLogsByRecording", query = "DELETE FROM FlvRecordingLog fl WHERE fl.flvRecording.id = :recId")
 })
 @Table(name = "flvrecording_log")
 public class FlvRecordingLog implements IDataProviderEntity {
@@ -97,8 +98,7 @@ public class FlvRecordingLog implements
 		return fullMessage;
 	}
 	public void setFullMessage(String fullMessage) {
-		this.fullMessage = 
-				fullMessage == null || fullMessage.length() < MAX_LOG_SIZE ? fullMessage : fullMessage.substring(0,  MAX_LOG_SIZE);
+		this.fullMessage = fullMessage == null || fullMessage.length() < MAX_LOG_SIZE ? fullMessage : fullMessage.substring(0,  MAX_LOG_SIZE);
 	}
 	
 	public String getExitValue() {

Modified: openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java Sun Jan 18 19:18:48 2015
@@ -209,6 +209,10 @@ public class OmFileHelper {
 		return getDir(getStreamsDir(), name);
 	}
 	
+	public static File getRecordingMetaData(Long roomId, String name) {
+		return new File(getStreamsSubDir(roomId), name + ".flv");
+	}
+	
 	public static File getLanguagesDir() {
 		return new File(OmFileHelper.OM_HOME, LANGUAGES_DIR);
 	}

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html Sun Jan 18 19:18:48 2015
@@ -21,7 +21,7 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
 	<div class="ui-widget-header">
-		<div onclick="toggleActivities();" class="control block ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:ommessage key="1363"/></div></div>
+		<div onclick="toggleActivities();" class="clickable control block ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:ommessage key="1363"/></div></div>
 	</div>
 	<div wicket:id="container" class="area ui-widget-content">
 		<div wicket:id="activities" class="activity item">

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html Sun Jan 18 19:18:48 2015
@@ -21,7 +21,7 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
 	<div id="chat" class="ui-widget-header">
-		<div onclick="toggleChat();" class=" control block ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:ommessage key="244"/></div></div>
+		<div onclick="toggleChat();" class=" control block clickable ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:ommessage key="244"/></div></div>
 		<div id="chatTabs">
 			<ul>
 				<li><a href="#chatTab-all"><wicket:ommessage key="1494"/></a></li>

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.html?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.html (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.html Sun Jan 18 19:18:48 2015
@@ -20,7 +20,7 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
-	<div class="info" wicket:id="container">
+	<form class="info" wicket:id="form">
 		<table>
 			<tr>
 				<td><wicket:ommessage key="863"/></td>
@@ -36,15 +36,16 @@
 			</tr>
 			<tr>
 				<td><wicket:ommessage key="874"/></td>
-				<td><span wicket:id="room_id"></span></td>
+				<td><span wicket:id="roomName"></span></td>
 			</tr>
 		</table>
 		<table>
 			<tr>
-				<td><input type="button" wicket:id="dAVI" wicket:ommessage="value:884"/></td>
-				<td><input type="button" wicket:id="dFLV" wicket:ommessage="value:883"/></td>
+				<td><button wicket:id="dAVI"><wicket:ommessage key="884"/></button></td>
+				<td><button wicket:id="dFLV"><wicket:ommessage key="883"/></button></td>
+				<td><button wicket:id="re-convert"><wicket:ommessage key="1600"/></button></td>
 			</tr>
 		</table>
-	</div>
+	</form>
 </wicket:panel>
 </html>

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java Sun Jan 18 19:18:48 2015
@@ -19,32 +19,88 @@
 package org.apache.openmeetings.web.user.record;
 
 import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
+import java.util.List;
+
+import org.apache.openmeetings.core.converter.FlvInterviewConverter;
+import org.apache.openmeetings.core.converter.FlvRecorderConverter;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecording.Status;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.web.util.AjaxDownload;
-import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.resource.FileResourceStream;
 
+import com.googlecode.wicket.jquery.ui.JQueryIcon;
+import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
+
 public class VideoInfo extends Panel {
 	private static final long serialVersionUID = 1L;
-	private final WebMarkupContainer container = new WebMarkupContainer("container");
-	private final Button dAVI = new Button("dAVI");
-	private final Button dFLV = new Button("dFLV");
+	private final Form<Void> form = new Form<Void>("form");
+	private final AjaxButton downloadAvi = new AjaxButton("dAVI") {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected String getIcon() {
+			return JQueryIcon.ARROWTHICKSTOP_1_S;
+		};
+		
+		@Override
+		protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+			download.setFileName(rm.getObject().getAlternateDownload());
+			download.setResourceStream(new FileResourceStream(getRecording(rm.getObject().getAlternateDownload())));
+			download.initiate(target);
+		}
+	};
+	private final AjaxButton downloadFlv = new AjaxButton("dFLV") {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected String getIcon() {
+			return JQueryIcon.ARROWTHICKSTOP_1_S;
+		};
+		
+		@Override
+		protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+			download.setFileName(rm.getObject().getFileHash());
+			download.setResourceStream(new FileResourceStream(getRecording(rm.getObject().getFileHash())));
+			download.initiate(target);
+		}
+	};
+	private final AjaxButton reConvert = new AjaxButton("re-convert") {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected String getIcon() {
+			return JQueryIcon.REFRESH;
+		};
+		
+		@Override
+		protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+			if (isInterview) {
+				getBean(FlvInterviewConverter.class).startConversion(rm.getObject().getId());
+			} else {
+				getBean(FlvRecorderConverter.class).startConversion(rm.getObject().getId());
+			}
+		}
+	};
 	private final AjaxDownload download = new AjaxDownload();
 	private final IModel<FlvRecording> rm = new CompoundPropertyModel<FlvRecording>(new FlvRecording());
 	private final IModel<String> roomName = Model.of((String)null);
+	private boolean isInterview = false;
 
 	public VideoInfo(String id) {
 		this(id, null);
@@ -52,31 +108,11 @@ public class VideoInfo extends Panel {
 	
 	public VideoInfo(String id, FlvRecording r) {
 		super(id);
-		add(container.setOutputMarkupId(true));
+		add(form.setOutputMarkupId(true));
 		setDefaultModel(rm);
 		
-		container.add(new Label("fileName"), new Label("duration"), new Label("recordEnd"), new Label("room_id", roomName),
-				dFLV.setEnabled(false), dAVI.setEnabled(false));
-		dAVI.add(new AjaxEventBehavior("click"){
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected void onEvent(AjaxRequestTarget target) {
-				download.setFileName(rm.getObject().getAlternateDownload());
-				download.setResourceStream(new FileResourceStream(getRecording(rm.getObject().getAlternateDownload())));
-				download.initiate(target);
-			}
-		});
-		dFLV.add(new AjaxEventBehavior("click"){
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected void onEvent(AjaxRequestTarget target) {
-				download.setFileName(rm.getObject().getFileHash());
-				download.setResourceStream(new FileResourceStream(getRecording(rm.getObject().getFileHash())));
-				download.initiate(target);
-			}
-		});
+		form.add(new Label("fileName"), new Label("duration"), new Label("recordEnd"), new Label("roomName", roomName),
+				downloadFlv.setEnabled(false), downloadAvi.setEnabled(false), reConvert.setEnabled(false));
 		add(download);
 		update(null, r);
 	}
@@ -85,22 +121,46 @@ public class VideoInfo extends Panel {
 		FlvRecording r = _r == null ? new FlvRecording() : _r;
 		rm.setObject(r);
 		try {
+			String name = null;
 			if (r.getRoomId() != null) {
 				Room room = getBean(RoomDao.class).get(r.getRoomId());
 				if (room != null) {
-					roomName.setObject(room.getName());
+					name = room.getName();
+					isInterview = room.getRoomtype().getId() == 4;
 				}
 			}
+			roomName.setObject(name);
 		} catch (Exception e) {
 			//no-op
 		}
 		
-		dAVI.setEnabled(isRecordingExists(rm.getObject().getAlternateDownload()));
-		dFLV.setEnabled(isRecordingExists(rm.getObject().getFileHash()));
+		boolean reConvEnabled = false;
+		if (r.getOwnerId() != null && getUserId() == r.getOwnerId() && r.getStatus() != Status.PROCESSING) {
+			List<FlvRecordingMetaData> metas = getBean(FlvRecordingMetaDataDao.class).getByRecording(r.getId());
+			reconvLabel:
+			if (!metas.isEmpty()) {
+				for (FlvRecordingMetaData meta : metas) {
+					if (!getRecordingMetaData(r.getRoomId(), meta.getStreamName()).exists()) {
+						break reconvLabel;
+					}
+				}
+				reConvEnabled = true;
+			}
+		}
+		reConvert.setEnabled(reConvEnabled);
+		downloadAvi.setEnabled(isRecordingExists(r.getAlternateDownload()));
+		downloadFlv.setEnabled(isRecordingExists(r.getFileHash()));
 		if (target != null) {
-			target.add(container);
+			target.add(form);
 		}
 		
 		return this;
 	}
+	
+	@Override
+	protected void onDetach() {
+		rm.detach();
+		roomName.detach();
+		super.onDetach();
+	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml Sun Jan 18 19:18:48 2015
@@ -93,7 +93,6 @@
 	<bean id="mobile.service" class="org.apache.openmeetings.core.remote.MobileService" />
 	<bean id="openmeetings.FlvRecorderConverterTask" class="org.apache.openmeetings.core.data.flvrecord.converter.FlvRecorderConverterTask" />
 	<bean id="openmeetings.FlvInterviewConverterTask" class="org.apache.openmeetings.core.data.flvrecord.converter.FlvInterviewConverterTask" />
-	<bean id="openmeetings.FlvInterviewReConverterTask" class="org.apache.openmeetings.core.data.flvrecord.converter.FlvInterviewReConverterTask" />
 	<bean id="openmeetings.FlvInterviewConverter" class="org.apache.openmeetings.core.converter.FlvInterviewConverter" />
 	<bean id="openmeetings.FlvRecorderConverter" class="org.apache.openmeetings.core.converter.FlvRecorderConverter" />
 	<bean id="openmeetings.SlaveHTTPConnectionManager" class="org.apache.openmeetings.webservice.cluster.SlaveHTTPConnectionManager" />

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/arabic.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/arabic.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/arabic.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/arabic.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/bulgarian.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/bulgarian.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/bulgarian.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/bulgarian.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/catalan.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/catalan.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/catalan.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/catalan.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/chinese simplified.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/chinese%20simplified.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/chinese simplified.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/chinese simplified.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/chinese traditional.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/chinese%20traditional.xml?rev=1652836&r1=1652835&r2=1652836&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/chinese traditional.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/languages/chinese traditional.xml Sun Jan 18 19:18:48 2015
@@ -4823,4 +4823,7 @@ see http://openmeetings.apache.org/Langu
   <string id="1599" name="security">
     <value>Access denied. You have no rights to enter this room.</value>
   </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
 </language>