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 2016/09/11 04:50:09 UTC

svn commit: r1760224 [4/6] - in /openmeetings/application: branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/ branches/3.2.x/open...

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java Sun Sep 11 04:50:07 2016
@@ -20,10 +20,7 @@ package org.apache.openmeetings.core.con
 
 import static org.apache.openmeetings.core.data.record.listener.async.BaseStreamWriter.TIME_TO_WAIT_FOR_FRAME;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
-import static org.apache.openmeetings.util.OmFileHelper.FLV_EXTENSION;
-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.EXTENSION_OGG;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsSubDir;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -42,6 +39,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.record.RecordingMetaData;
 import org.apache.openmeetings.db.entity.record.RecordingMetaData.Status;
 import org.apache.openmeetings.db.entity.record.RecordingMetaDelta;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.process.ConverterProcessResult;
 import org.apache.openmeetings.util.process.ProcessHelper;
 import org.red5.io.flv.impl.FLVWriter;
@@ -114,31 +112,29 @@ public abstract class BaseConverter {
 		r.setDuration(formatMillis(diff(r.getRecordEnd(), r.getRecordStart())));
 	}
 	
-	protected void deleteFileIfExists(String name) {
-		File f = new File(name);
-
+	protected void deleteFileIfExists(File f) {
 		if (f.exists()) {
 			f.delete();
 		}
 	}
 	
-	protected String[] mergeAudioToWaves(List<String> listOfFullWaveFiles, String outputFullWav) {
+	protected String[] mergeAudioToWaves(List<File> waveFiles, File wav) throws IOException {
 		List<String> argv = new ArrayList<String>();
 		
 		argv.add(getPathToSoX());
 		argv.add("-m");
-		for (String arg : listOfFullWaveFiles) {
-			argv.add(arg);
+		for (File arg : waveFiles) {
+			argv.add(arg.getCanonicalPath());
 		}
-		argv.add(outputFullWav);
+		argv.add(wav.getCanonicalPath());
 		
 		return argv.toArray(new String[0]);
 	}
 	
 	protected void stripAudioFirstPass(Recording recording, List<ConverterProcessResult> returnLog,
-			List<String> listOfFullWaveFiles, File streamFolder)
+			List<File> waveFiles, File streamFolder)
 	{
-		stripAudioFirstPass(recording, returnLog, listOfFullWaveFiles, streamFolder
+		stripAudioFirstPass(recording, returnLog, waveFiles, streamFolder
 				, metaDataDao.getAudioMetaDataByRecording(recording.getId()));
 	}
 	
@@ -229,7 +225,7 @@ public abstract class BaseConverter {
 	
 	protected void stripAudioFirstPass(Recording recording,
 			List<ConverterProcessResult> returnLog,
-			List<String> listOfFullWaveFiles, File streamFolder,
+			List<File> waveFiles, File streamFolder,
 			List<RecordingMetaData> metaDataList) {
 		try {
 			// Init variables
@@ -246,7 +242,7 @@ public abstract class BaseConverter {
 				
 				metaData = waitForTheStream(metaId);
 	
-				File inputFlvFile = new File(streamFolder, metaData.getStreamName() + FLV_EXTENSION);
+				File inputFlvFile = new File(streamFolder, OmFileHelper.getName(metaData.getStreamName(), EXTENSION_FLV));
 	
 				File outputWav = new File(streamFolder, metaData.getStreamName() + "_WAVE.wav");
 	
@@ -328,7 +324,7 @@ public abstract class BaseConverter {
 					metaData.setFullWavAudioData(hashFileFullName);
 	
 					// Finally add it to the row!
-					listOfFullWaveFiles.add(outputFullWav.getCanonicalPath());
+					waveFiles.add(outputFullWav);
 				}
 	
 				metaDataDao.update(metaData);
@@ -343,12 +339,11 @@ public abstract class BaseConverter {
 		if (!r.exists(EXTENSION_FLV)) {
 			return;
 		}
-		File file = getRecording(r.getHash());
-		String path = file.getCanonicalPath();
-		String mp4path = path + MP4_EXTENSION;
+		File file = r.getFile(EXTENSION_FLV);
+		File mp4 = r.getFile();
 		String[] argv = new String[] {
 				getPathToFFMPEG(), "-y",
-				"-i", path,
+				"-i", file.getCanonicalPath(),
 				"-c:v", "libx264",
 				"-crf", "24",
 				"-pix_fmt", "yuv420p",
@@ -357,16 +352,16 @@ public abstract class BaseConverter {
 				"-c:a", "libfaac",
 				"-c:a", "libfdk_aac", "-b:a", "32k", //FIXME add quality constants 
 				"-s", r.getFlvWidth() + "x" + r.getFlvHeight(), //
-				mp4path
+				mp4.getCanonicalPath()
 				};
 		returnLog.add(ProcessHelper.executeScript("generate MP4", argv));
 		
 		argv = new String[] {
-				getPathToFFMPEG(), "-y",
-				"-i", mp4path,
-				"-vcodec", "libtheora",
-				"-acodec", "libvorbis",
-				path + OGG_EXTENSION
+				getPathToFFMPEG(), "-y"
+				, "-i", mp4.getCanonicalPath()
+				, "-vcodec", "libtheora"
+				, "-acodec", "libvorbis"
+				, r.getFile(EXTENSION_OGG).getCanonicalPath()
 				};
 
 		returnLog.add(ProcessHelper.executeScript("generate OGG", argv));

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java Sun Sep 11 04:50:07 2016
@@ -18,10 +18,8 @@
  */
 package org.apache.openmeetings.core.converter;
 
-import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.JPG_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.WB_VIDEO_FILE_PREFIX;
-import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
@@ -31,7 +29,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
-import org.apache.openmeetings.db.dao.record.RecordingLogDao;
+import org.apache.openmeetings.db.dao.file.FileItemLogDao;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.util.process.ConverterProcessResult;
@@ -48,7 +46,7 @@ public class FlvExplorerConverter extend
 	@Autowired
 	private FileExplorerItemDao fileDao;
 	@Autowired
-	private RecordingLogDao recordingLogDao;
+	private FileItemLogDao fileLogDao;
 	
 	private static class FlvDimension {
 		public FlvDimension(int width, int height) {
@@ -59,69 +57,45 @@ public class FlvExplorerConverter extend
 		public int height = 0;
 	}
 
-	public List<ConverterProcessResult> startConversion(Long fileId, String moviePath) {
+	public List<ConverterProcessResult> convertToMP4(FileExplorerItem f, String ext) {
 		List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
 		try {
-			FileExplorerItem fileExplorerItem = fileDao.get(fileId);
-			if (fileExplorerItem == null) {
-				returnLog.add(new ConverterProcessResult("startConversion", "Unable to get FileExplorerItem by ID: " + fileId, null));
-			} else {
-				log.debug("fileExplorerItem " + fileExplorerItem.getId());
-				//  Convert to FLV
-				return convertToFLV(fileExplorerItem, moviePath);
-			}
-		} catch (Exception err) {
-			log.error("[startConversion]", err);
-			returnLog.add(new ConverterProcessResult("startConversion", err.getMessage(), err));
-		}
-		return returnLog;
-	}
+			File mp4 = f.getFile(EXTENSION_MP4);
 
-	private List<ConverterProcessResult> convertToFLV(FileExplorerItem fileExplorerItem, String moviePath) {
-		List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
-		try {
-			String name = WB_VIDEO_FILE_PREFIX + fileExplorerItem.getId();
-			File outputFullFlv = new File(getStreamsHibernateDir(), name + MP4_EXTENSION);
-
-			fileExplorerItem.setType(Type.Video);
+			f.setType(Type.Video);
 
-			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y", "-i", moviePath,
-					"-codec:a", "mp3", "-codec:v", "mpeg4", outputFullFlv.getCanonicalPath() };
+			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y", "-i", f.getFile(ext).getCanonicalPath(),
+					"-codec:a", "mp3", "-codec:v", "mpeg4", mp4.getCanonicalPath() };
 
-			ConverterProcessResult returnMapConvertFLV = ProcessHelper.executeScript("uploadFLV ID :: "
-					+ fileExplorerItem.getId(), argv_fullFLV);
+			ConverterProcessResult returnMapConvertFLV = ProcessHelper.executeScript("uploadFLV ID :: " + f.getId(), argv_fullFLV);
 			
 			//Parse the width height from the FFMPEG output
 			FlvDimension flvDimension = getFlvDimension(returnMapConvertFLV.getError());
 			int flvWidth = flvDimension.width;
 			int flvHeight = flvDimension.height;
 			
-			
-			fileExplorerItem.setFlvWidth(flvWidth);
-			fileExplorerItem.setFlvHeight(flvHeight);
+			f.setFlvWidth(flvWidth);
+			f.setFlvHeight(flvHeight);
 
 			returnLog.add(returnMapConvertFLV);
 
-			String hashFileFullNameJPEG = WB_VIDEO_FILE_PREFIX + fileExplorerItem.getId() + JPG_EXTENSION;
-			File outPutJpeg = new File(getStreamsHibernateDir(), name + JPG_EXTENSION);
-
-			fileExplorerItem.setPreviewImage(hashFileFullNameJPEG);
+			File jpeg = f.getFile(EXTENSION_JPG);
 
 			String[] argv_previewFLV = new String[] { getPathToFFMPEG(), "-y", "-i",
-					outputFullFlv.getCanonicalPath(), "-codec:v", "mjpeg", "-vframes", "1", "-an",
+					mp4.getCanonicalPath(), "-codec:v", "mjpeg", "-vframes", "1", "-an",
 					"-f", "rawvideo", "-s", flvWidth + "x" + flvHeight,
-					outPutJpeg.getCanonicalPath() };
+					jpeg.getCanonicalPath() };
 
-			returnLog.add(ProcessHelper.executeScript("previewUpload ID :: " + fileExplorerItem.getId(), argv_previewFLV));
+			returnLog.add(ProcessHelper.executeScript("previewUpload ID :: " + f.getId(), argv_previewFLV));
 
-			fileDao.update(fileExplorerItem);
+			fileDao.update(f);
 
 			for (ConverterProcessResult returnMap : returnLog) {
-				recordingLogDao.add("generateFFMPEG", null, returnMap);
+				fileLogDao.add(returnMap.getProcess(), null, returnMap);
 			}
 		} catch (Exception err) {
 			log.error("[convertToFLV]", err);
-			returnLog.add(new ConverterProcessResult("convertToFLV", err.getMessage(), err));
+			returnLog.add(new ConverterProcessResult("convertToMP4", err.getMessage(), err));
 		}
 
 		return returnLog;

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateImage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateImage.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateImage.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateImage.java Sun Sep 11 04:50:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.core.converter;
 
-import static org.apache.openmeetings.util.OmFileHelper.JPG_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
 import static org.apache.openmeetings.util.OmFileHelper.getUploadProfilesUserDir;
 import static org.apache.openmeetings.util.OmFileHelper.profileFileName;
 import static org.apache.openmeetings.util.OmFileHelper.profileImagePrefix;
@@ -31,6 +31,7 @@ import java.io.IOException;
 
 import org.apache.commons.transaction.util.FileHelper;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.process.ConverterProcessResult;
@@ -48,23 +49,16 @@ public class GenerateImage extends BaseC
 	@Autowired
 	private GenerateThumbs generateThumbs;
 
-	public ConverterProcessResultList convertImage(String fileName, String fileExt, String roomName) throws IOException {
+	public ConverterProcessResultList convertImage(FileItem f, String ext) throws IOException {
 		ConverterProcessResultList returnMap = new ConverterProcessResultList();
 
-		File fileFullPath = new File(OmFileHelper.getUploadTempRoomDir(roomName), fileName + fileExt);
+		File img = f.getFile(ext);
+		File jpg = f.getFile(EXTENSION_JPG);
 
-		File destinationFile = OmFileHelper.getNewFile(OmFileHelper.getUploadRoomDir(roomName), fileName, ".jpg");
+		log.debug("##### convertImage destinationFile: " + jpg);
 
-		log.debug("##### convertImage destinationFile: " + destinationFile);
-
-		ConverterProcessResult processJPG = convertSingleJpg(fileFullPath.getCanonicalPath(), destinationFile);
-		ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, destinationFile, 50);
-
-		returnMap.addItem("processJPG", processJPG);
-		returnMap.addItem("processThumb", processThumb);
-
-		// Delete old one
-		fileFullPath.delete();
+		returnMap.addItem("processJPG", convertSingleJpg(img, jpg));
+		returnMap.addItem("processThumb", generateThumbs.generateThumb(thumbImagePrefix, jpg, 50));
 
 		return returnMap;
 	}
@@ -76,7 +70,7 @@ public class GenerateImage extends BaseC
 		File[] files = getUploadProfilesUserDir(userId).listFiles(new FileFilter() {
 			@Override
 			public boolean accept(File pathname) {
-				return pathname.getName().endsWith(JPG_EXTENSION);
+				return pathname.getName().endsWith(EXTENSION_JPG);
 			}
 		});
 		if (files != null) {
@@ -85,9 +79,9 @@ public class GenerateImage extends BaseC
 			}
 		}
 		
-		File destinationFile = OmFileHelper.getNewFile(getUploadProfilesUserDir(userId), profileFileName, JPG_EXTENSION);
+		File destinationFile = OmFileHelper.getNewFile(getUploadProfilesUserDir(userId), profileFileName, EXTENSION_JPG);
 		if (!skipConvertion) {
-			returnMap.addItem("processJPG", convertSingleJpg(file.getCanonicalPath(), destinationFile));
+			returnMap.addItem("processJPG", convertSingleJpg(file, destinationFile));
 		} else {
 			FileHelper.copy(file, destinationFile);
 		}
@@ -115,25 +109,9 @@ public class GenerateImage extends BaseC
 	 * @throws IOException 
 	 * 
 	 */
-	private ConverterProcessResult convertSingleJpg(String inputFile, File outputfile) throws IOException {
-		String[] argv = new String[] { getPathToImageMagick(), inputFile, outputfile.getCanonicalPath() };
+	private ConverterProcessResult convertSingleJpg(File in, File out) throws IOException {
+		String[] argv = new String[] { getPathToImageMagick(), in.getCanonicalPath(), out.getCanonicalPath() };
 
 		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
 	}
-
-	public ConverterProcessResult convertImageByTypeAndSize(String inputFile,
-			String outputfile, int width, int height) {
-		String[] argv = new String[] { getPathToImageMagick(), "-size",
-				width + "x" + height, inputFile, outputfile };
-		return ProcessHelper.executeScript("convertImageByTypeAndSizeAndDepth", argv);
-	}
-
-	public ConverterProcessResult convertImageByTypeAndSizeAndDepth(
-			String inputFile, String outputfile, int width, int height,
-			int depth) {
-		String[] argv = new String[] { getPathToImageMagick(), "-size",
-				width + "x" + height, "-depth", Integer.toString(depth),
-				inputFile, outputfile };
-		return ProcessHelper.executeScript("convertImageByTypeAndSizeAndDepth", argv);
-	}
 }

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateSWF.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateSWF.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateSWF.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateSWF.java Sun Sep 11 04:50:07 2016
@@ -71,7 +71,7 @@ public class GenerateSWF {
 		return valueForSwfJpegQuality;
 	}
 
-	public ConverterProcessResult generateSwf(File originalFolder, File destinationFolder, String fileNamePure) throws IOException {
+	public ConverterProcessResult generateSwf(File in, File out) throws IOException {
 		
 		// Create the Content of the Converter Script (.bat or .sh File)
 		String[] argv = new String[] {
@@ -82,8 +82,8 @@ public class GenerateSWF {
 				"-i", // change draw order to reduce pdf complexity
 				"-j", "" + getSwfJpegQuality(), // JPEG Quality 
 				"-s", "zoom=" + getSwfZoom(), // set zoom dpi 
-				new File(originalFolder, fileNamePure + ".pdf").getCanonicalPath(),
-				new File(destinationFolder, fileNamePure + ".swf").getCanonicalPath() };
+				in.getCanonicalPath(),
+				out.getCanonicalPath() };
 
 		return ProcessHelper.executeScript("generateSwf", argv);
 	}

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateThumbs.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateThumbs.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateThumbs.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateThumbs.java Sun Sep 11 04:50:07 2016
@@ -55,14 +55,14 @@ public class GenerateThumbs extends Base
 		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
 	}
 
-	public ConverterProcessResult generateBatchThumb(File inputfile, File outputpath, Integer thumbSize, String pre) throws IOException {
+	public ConverterProcessResult generateBatchThumb(File in, File outDir, Integer thumbSize, String pre) throws IOException {
 		log.debug("generateBatchThumbByWidth");
 		String[] argv = new String[] {
 			getPathToImageMagick()
 			, "-thumbnail" // FIXME
 			, "" + thumbSize
-			, inputfile.getCanonicalPath()
-			, new File(outputpath, "_" + pre + "_page-%04d.jpg").getCanonicalPath()
+			, in.getCanonicalPath()
+			, new File(outDir, "_" + pre + "_page-%04d.jpg").getCanonicalPath()
 			};
 
 		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/InterviewConverter.java Sun Sep 11 04:50:07 2016
@@ -18,22 +18,24 @@
  */
 package org.apache.openmeetings.core.converter;
 
-import static org.apache.openmeetings.util.OmFileHelper.FLV_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_AVI;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
-import static org.apache.openmeetings.util.OmFileHelper.recordingFileName;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
-import java.util.LinkedList;
 import java.util.List;
 
+import org.apache.openmeetings.db.dao.file.FileItemLogDao;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
-import org.apache.openmeetings.db.dao.record.RecordingLogDao;
 import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.record.RecordingMetaData;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.process.ConverterProcessResult;
 import org.apache.openmeetings.util.process.ProcessHelper;
 import org.red5.logging.Red5LoggerFactory;
@@ -57,23 +59,20 @@ public class InterviewConverter extends
 	@Autowired
 	private RecordingMetaDataDao metaDataDao;
 	@Autowired
-	private RecordingLogDao logDao;
+	private FileItemLogDao logDao;
 
-	private String[] mergeAudioToWaves(List<String> listOfFullWaveFiles, String outputFullWav,
-			List<RecordingMetaData> metaDataList, ReConverterParams rcv) {
-		String[] argv_full_sox = new String[listOfFullWaveFiles.size() + 5];
+	private String[] mergeAudioToWaves(List<File> waveFiles, File wav,
+			List<RecordingMetaData> metaDataList, ReConverterParams rcv) throws IOException {
+		String[] argv_full_sox = new String[waveFiles.size() + 5];
 		argv_full_sox[0] = this.getPathToSoX();
 		argv_full_sox[1] = "-m";
 
 		int counter = 2;
-		for (int i = 0; i < listOfFullWaveFiles.size(); i++) {
+		for (File _wav : waveFiles) {
 			for (RecordingMetaData metaData : metaDataList) {
 				String hashFileFullNameStored = metaData.getFullWavAudioData();
 
-				String fullFilePath = listOfFullWaveFiles.get(i);
-				String fileNameOnly = new File(fullFilePath).getName();
-
-				if (hashFileFullNameStored.equals(fileNameOnly)) {
+				if (hashFileFullNameStored.equals(_wav.getName())) {
 					if (metaData.getInteriewPodId() == 1) {
 						argv_full_sox[counter] = "-v " + rcv.leftSideLoud;
 						counter++;
@@ -84,11 +83,11 @@ public class InterviewConverter extends
 					}
 				}
 			}
-			argv_full_sox[counter] = listOfFullWaveFiles.get(i);
+			argv_full_sox[counter] = _wav.getCanonicalPath();
 			counter++;
 		}
 
-		argv_full_sox[counter] = outputFullWav;
+		argv_full_sox[counter] = wav.getCanonicalPath();
 
 		return argv_full_sox;
 	}
@@ -98,36 +97,35 @@ public class InterviewConverter extends
 		startConversion(recordingId, false, new ReConverterParams());
 	}
 
-	public void startConversion(Long recordingId, boolean reconversion, ReConverterParams rcv) {
-		Recording recording = null;
+	public void startConversion(Long id, boolean reconversion, ReConverterParams rcv) {
+		Recording r = null;
 		try {
-			recording = recordingDao.get(recordingId);
-			log.debug("recording " + recording.getId());
-			recording.setStatus(Recording.Status.CONVERTING);
-			recording = recordingDao.update(recording);
-
-			List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
-			List<String> listOfFullWaveFiles = new LinkedList<String>();
-			File streamFolder = getStreamFolder(recording);
-			List<RecordingMetaData> metaDataList = metaDataDao.getAudioMetaDataByRecording(recording.getId());
+			r = recordingDao.get(id);
+			log.debug("recording " + r.getId());
+			r.setStatus(Recording.Status.CONVERTING);
+			r = recordingDao.update(r);
+
+			List<ConverterProcessResult> returnLog = new ArrayList<>();
+			List<File> waveFiles = new ArrayList<>();
+			File streamFolder = getStreamFolder(r);
+			List<RecordingMetaData> metaDataList = metaDataDao.getAudioMetaDataByRecording(r.getId());
 	
-			stripAudioFirstPass(recording, returnLog, listOfFullWaveFiles, streamFolder, metaDataList);
+			stripAudioFirstPass(r, returnLog, waveFiles, streamFolder, metaDataList);
 		
 			// Merge Wave to Full Length
 			File streamFolderGeneral = getStreamsHibernateDir();
 
-			String hashFileFullName = "INTERVIEW_" + recording.getId() + "_FINAL_WAVE.wav";
-			String outputFullWav = streamFolder.getAbsolutePath() + File.separatorChar + hashFileFullName;
-			deleteFileIfExists(outputFullWav);
-
-			if (listOfFullWaveFiles.size() == 1) {
-				outputFullWav = listOfFullWaveFiles.get(0);
-			} else if (listOfFullWaveFiles.size() > 0) {
+			File wav = new File(streamFolder, "INTERVIEW_" + r.getId() + "_FINAL_WAVE.wav");
+			deleteFileIfExists(wav);
+
+			if (waveFiles.size() == 1) {
+				wav = waveFiles.get(0);
+			} else if (waveFiles.size() > 0) {
 				String[] argv_full_sox;
 				if (reconversion) {
-					argv_full_sox = mergeAudioToWaves(listOfFullWaveFiles, outputFullWav, metaDataList, rcv);
+					argv_full_sox = mergeAudioToWaves(waveFiles, wav, metaDataList, rcv);
 				} else {
-					argv_full_sox = mergeAudioToWaves(listOfFullWaveFiles, outputFullWav);
+					argv_full_sox = mergeAudioToWaves(waveFiles, wav);
 				}
 
 				returnLog.add(ProcessHelper.executeScript("mergeAudioToWaves", argv_full_sox));
@@ -137,9 +135,9 @@ public class InterviewConverter extends
 				File outputWav = new File(streamFolderGeneral, "one_second.wav");
 
 				// Calculate delta at beginning
-				double deltaPadding = diffSeconds(recording.getRecordEnd(), recording.getRecordStart());
+				double deltaPadding = diffSeconds(r.getRecordEnd(), r.getRecordStart());
 
-				String[] argv_full_sox = new String[] { getPathToSoX(), outputWav.getCanonicalPath(), outputFullWav, "pad", "0", "" + deltaPadding };
+				String[] argv_full_sox = new String[] { getPathToSoX(), outputWav.getCanonicalPath(), wav.getCanonicalPath(), "pad", "0", "" + deltaPadding };
 
 				returnLog.add(ProcessHelper.executeScript("generateSampleAudio", argv_full_sox));
 			}
@@ -158,7 +156,7 @@ public class InterviewConverter extends
 			String[] pods = new String[2];
 			boolean found = false;
 			for (RecordingMetaData meta : metaDataList) {
-				File flv = getRecordingMetaData(recording.getRoomId(), meta.getStreamName());
+				File flv = getRecordingMetaData(r.getRoomId(), meta.getStreamName());
 
 				Integer pod = meta.getInteriewPodId();
 				if (flv.exists() && pod != null && pod > 0 && pod < 3) {
@@ -173,9 +171,9 @@ public class InterviewConverter extends
 							, "-v", "error"
 							, "-f", "null"
 							, "file.null"};
-					ConverterProcessResult r = ProcessHelper.executeScript("checkFlvPod_" + pod , args);
-					returnLog.add(r);
-					if ("0".equals(r.getExitValue())) {
+					ConverterProcessResult res = ProcessHelper.executeScript("checkFlvPod_" + pod , args);
+					returnLog.add(res);
+					if (res.isOk()) {
 						//TODO need to remove smallest gap
 						long diff = diff(meta.getRecordStart(), meta.getRecording().getRecordStart());
 						if (diff != 0L) {
@@ -193,7 +191,7 @@ public class InterviewConverter extends
 							returnLog.add(ProcessHelper.executeScript("blankFlvPod_" + pod , argsPodB));
 							
 							//ffmpeg -y -i out.flv -i rec_15_stream_4_2014_07_15_20_41_03.flv -filter_complex '[0:0]setsar=1/1[sarfix];[1:0]scale=320:260,setsar=1/1[scale];[sarfix] [scale] concat=n=2:v=1:a=0 [v]' -map '[v]'  output1.flv
-							File podF = new File(streamFolder, meta.getStreamName() + "_pod_" + pod + FLV_EXTENSION);
+							File podF = new File(streamFolder, OmFileHelper.getName(meta.getStreamName() + "_pod_" + pod, EXTENSION_FLV));
 							String podP = podF.getCanonicalPath();
 							String[] argsPod = new String[] { getPathToFFMPEG(), "-y"//
 									, "-i", podPB //
@@ -212,10 +210,10 @@ public class InterviewConverter extends
 				}
 			}
 			if (!found) {
-				ConverterProcessResult r = new ConverterProcessResult();
-				r.setProcess("CheckFlvFilesExists");
-				r.setError("No valid pods found");
-				returnLog.add(r);
+				ConverterProcessResult res = new ConverterProcessResult();
+				res.setProcess("CheckFlvFilesExists");
+				res.setError("No valid pods found");
+				returnLog.add(res);
 				return;
 			}
 			boolean shortest = false;
@@ -238,7 +236,7 @@ public class InterviewConverter extends
 					args.add("-i"); args.add(pods[i]);
 				}
 			}
-			args.add("-i"); args.add(outputFullWav);
+			args.add("-i"); args.add(wav.getCanonicalPath());
 			args.add("-ar"); args.add("22050");
 			args.add("-ab"); args.add("32k");
 			args.add("-filter_complex");
@@ -254,68 +252,58 @@ public class InterviewConverter extends
 			args.add("-qmax"); args.add("1");
 			args.add("-qmin"); args.add("1");
 			args.add("-y");
-			String hashFileFullNameFlv = recordingFileName + recording.getId() + FLV_EXTENSION;
-			String outputFullFlv = new File(streamFolderGeneral, hashFileFullNameFlv).getCanonicalPath();
-			args.add(outputFullFlv);
+			File flv = r.getFile(EXTENSION_FLV);
+			args.add(flv.getCanonicalPath());
 			// TODO additional flag to 'quiet' output should be added
 			returnLog.add(ProcessHelper.executeScript("generateFullBySequenceFLV", args.toArray(new String[]{})));
 
-			recording.setFlvWidth(2 * flvWidth);
-			recording.setFlvHeight(flvHeight);
-
-			recording.setHash(hashFileFullNameFlv);
+			r.setFlvWidth(2 * flvWidth);
+			r.setFlvHeight(flvHeight);
 
 			// Extract first Image for preview purpose
 			// ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s
 			// 320x240 movie.jpg
 
-			String hashFileFullNameJPEG = recordingFileName + recording.getId() + ".jpg";
-			String outPutJpeg = new File(streamFolderGeneral, hashFileFullNameJPEG).getCanonicalPath();
-			deleteFileIfExists(outPutJpeg);
-
-			recording.setPreviewImage(hashFileFullNameJPEG);
+			File jpg = r.getFile(EXTENSION_JPG);
+			deleteFileIfExists(jpg);
 
 			String[] argv_previewFLV = new String[] { //
 					getPathToFFMPEG(), "-y", //
-					"-i", outputFullFlv, //
+					"-i", flv.getCanonicalPath(), //
 					"-vcodec", "mjpeg", //
 					"-vframes", "100", "-an", //
 					"-f", "rawvideo", //
 					"-s", (2 * flvWidth) + "x" + flvHeight, //
-					outPutJpeg };
+					jpg.getCanonicalPath() };
 
 			returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_previewFLV));
 
-			String alternateDownloadName = recordingFileName + recording.getId() + ".avi";
-			String alternateDownloadFullName = new File(streamFolderGeneral, alternateDownloadName).getCanonicalPath();
-			deleteFileIfExists(alternateDownloadFullName);
+			File avi = r.getFile(EXTENSION_AVI);
+			deleteFileIfExists(avi);
 
-			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv, alternateDownloadFullName };
+			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", flv.getCanonicalPath(), avi.getCanonicalPath() };
 
 			returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));
 
-			recording.setAlternateDownload(alternateDownloadName);
-
-			updateDuration(recording);
-			convertToMp4(recording, returnLog);
-			recording.setStatus(Recording.Status.PROCESSED);
+			updateDuration(r);
+			convertToMp4(r, returnLog);
+			r.setStatus(Recording.Status.PROCESSED);
 
-			logDao.deleteByRecordingId(recording.getId());
+			logDao.delete(r);
 			for (ConverterProcessResult returnMap : returnLog) {
-				logDao.add("generateFFMPEG", recording, returnMap);
+				logDao.add("generateFFMPEG", r, returnMap);
 			}
 
 			// Delete Wave Files
-			for (String fileName : listOfFullWaveFiles) {
-				File audio = new File(fileName);
+			for (File audio : waveFiles) {
 				if (audio.exists()) {
 					audio.delete();
 				}
 			}
 		} catch (Exception err) {
 			log.error("[startConversion]", err);
-			recording.setStatus(Recording.Status.ERROR);
+			r.setStatus(Recording.Status.ERROR);
 		}
-		recordingDao.update(recording);
+		recordingDao.update(r);
 	}
 }

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/RecordingConverter.java Sun Sep 11 04:50:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.core.converter;
 
-import static org.apache.openmeetings.util.OmFileHelper.FLV_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
 import static org.apache.openmeetings.util.OmFileHelper.recordingFileName;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -27,12 +27,13 @@ import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.openmeetings.db.dao.file.FileItemLogDao;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
-import org.apache.openmeetings.db.dao.record.RecordingLogDao;
 import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.record.RecordingMetaData;
 import org.apache.openmeetings.db.entity.record.RecordingMetaData.Status;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.process.ConverterProcessResult;
 import org.apache.openmeetings.util.process.ProcessHelper;
 import org.red5.logging.Red5LoggerFactory;
@@ -48,7 +49,7 @@ public class RecordingConverter extends
 	@Autowired
 	private RecordingMetaDataDao metaDataDao;
 	@Autowired
-	private RecordingLogDao logDao;
+	private FileItemLogDao logDao;
 
 	private String FFMPEG_MAP_PARAM = ":";
 
@@ -67,8 +68,8 @@ public class RecordingConverter extends
 			String finalNamePrefix = recordingFileName + recordingId;
 			log.debug("recording " + recording.getId());
 
-			List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
-			List<String> listOfFullWaveFiles = new ArrayList<String>();
+			List<ConverterProcessResult> returnLog = new ArrayList<>();
+			List<File> waveFiles = new ArrayList<>();
 			File streamFolder = getStreamFolder(recording);
 			
 			RecordingMetaData screenMetaData = metaDataDao.getScreenMetaDataByRecording(recording.getId());
@@ -85,16 +86,15 @@ public class RecordingConverter extends
 
 			screenMetaData = waitForTheStream(screenMetaData.getId());
 
-			stripAudioFirstPass(recording, returnLog, listOfFullWaveFiles, streamFolder);
+			stripAudioFirstPass(recording, returnLog, waveFiles, streamFolder);
 
 			// Merge Wave to Full Length
-			String hashFileFullName = screenMetaData.getStreamName() + "_FINAL_WAVE.wav";
-			String outputFullWav = new File(streamFolder, hashFileFullName).getCanonicalPath();
+			File wav = new File(streamFolder, screenMetaData.getStreamName() + "_FINAL_WAVE.wav");
 
-			if (listOfFullWaveFiles.size() == 1) {
-				outputFullWav = listOfFullWaveFiles.get(0);
-			} else if (listOfFullWaveFiles.size() > 0) {
-				String[] argv_full_sox = mergeAudioToWaves(listOfFullWaveFiles, outputFullWav);
+			if (waveFiles.size() == 1) {
+				wav = waveFiles.get(0);
+			} else if (waveFiles.size() > 0) {
+				String[] argv_full_sox = mergeAudioToWaves(waveFiles, wav);
 
 				returnLog.add(ProcessHelper.executeScript("mergeAudioToWaves", argv_full_sox));
 			} else {
@@ -104,18 +104,18 @@ public class RecordingConverter extends
 				// Calculate delta at beginning
 				double deltaPadding = diffSeconds(recording.getRecordEnd(), recording.getRecordStart());
 
-				String[] argv_full_sox = new String[] { getPathToSoX(), outputWav, outputFullWav, "pad", "0", "" + deltaPadding };
+				String[] argv_full_sox = new String[] { getPathToSoX(), outputWav, wav.getCanonicalPath(), "pad", "0", "" + deltaPadding };
 
 				returnLog.add(ProcessHelper.executeScript("generateSampleAudio", argv_full_sox));
 			}
-			screenMetaData.setFullWavAudioData(hashFileFullName);
+			screenMetaData.setFullWavAudioData(wav.getName());
 			metaDataDao.update(screenMetaData);
 
 			// Merge Audio with Video / Calculate resulting FLV
 
-			String inputScreenFullFlv = new File(streamFolder, screenMetaData.getStreamName() + FLV_EXTENSION).getCanonicalPath();
+			String inputScreenFullFlv = new File(streamFolder, OmFileHelper.getName(screenMetaData.getStreamName(), EXTENSION_FLV)).getCanonicalPath();
 
-			File outputFullFlv = new File(getStreamsHibernateDir(), finalNamePrefix + FLV_EXTENSION);
+			File flv = recording.getFile(EXTENSION_FLV);
 
 			// ffmpeg -vcodec flv -qscale 9.5 -r 25 -ar 22050 -ab 32k -s 320x240
 			// -i 65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17_FINAL_WAVE.wav
@@ -139,18 +139,18 @@ public class RecordingConverter extends
 
 			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y",//
 					"-itsoffset", formatMillis(diff(screenMetaData.getRecordStart(), recording.getRecordStart())),
-					"-i", inputScreenFullFlv, "-i", outputFullWav, "-ar", "22050", //
+					"-i", inputScreenFullFlv, "-i", wav.getCanonicalPath(), "-ar", "22050", //
 					"-acodec", "libmp3lame", //
 					"-ab", "32k", //
 					"-s", flvWidth + "x" + flvHeight, //
 					"-vcodec", "flashsv", //
 					"-map", "0" + FFMPEG_MAP_PARAM + "0", //
 					"-map", "1" + FFMPEG_MAP_PARAM + "0", //
-					outputFullFlv.getCanonicalPath() };
+					flv.getCanonicalPath() };
 
 			returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_fullFLV));
 
-			recording.setHash(outputFullFlv.getName());
+			recording.setHash(flv.getName());
 
 			// Extract first Image for preview purpose
 			// ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s
@@ -158,11 +158,9 @@ public class RecordingConverter extends
 
 			File outPutJpeg = new File(getStreamsHibernateDir(), finalNamePrefix + ".jpg");
 
-			recording.setPreviewImage(outPutJpeg.getName());
-
 			String[] argv_previewFLV = new String[] { //
 					getPathToFFMPEG(), "-y",//
-					"-i", outputFullFlv.getCanonicalPath(), //
+					"-i", flv.getCanonicalPath(), //
 					"-vcodec", "mjpeg", //
 					"-vframes", "1", "-an", //
 					"-f", "rawvideo", //
@@ -173,25 +171,22 @@ public class RecordingConverter extends
 
 			File alternateDownload = new File(getStreamsHibernateDir(), finalNamePrefix + ".avi");
 
-			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv.getCanonicalPath(), "-vcodec",
+			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", flv.getCanonicalPath(), "-vcodec",
 					"copy", alternateDownload.getCanonicalPath() };
 
 			returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));
 
-			recording.setAlternateDownload(alternateDownload.getName());
-
 			updateDuration(recording);
 			convertToMp4(recording, returnLog);
 			recording.setStatus(Recording.Status.PROCESSED);
 
-			logDao.deleteByRecordingId(recording.getId());
+			logDao.delete(recording);
 			for (ConverterProcessResult returnMap : returnLog) {
 				logDao.add("generateFFMPEG", recording, returnMap);
 			}
 
 			// Delete Wave Files
-			for (String fileName : listOfFullWaveFiles) {
-				File audio = new File(fileName);
+			for (File audio : waveFiles) {
 				if (audio.exists()) {
 					audio.delete();
 				}

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java Sun Sep 11 04:50:07 2016
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.core.data.file;
 
-import static org.apache.openmeetings.util.OmFileHelper.getUploadFilesDir;
-import static org.apache.openmeetings.util.OmFileHelper.getUploadTempFilesDir;
 import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
@@ -72,7 +70,6 @@ public class FileProcessor {
 		String hash = UUID.randomUUID().toString();
 
 		String ext = getExt(f);
-		String extDot = String.format(".%s", ext);
 		log.debug("file extension: " + ext);
 		StoredFile storedFile = new StoredFile(hash, ext); 
 
@@ -94,12 +91,6 @@ public class FileProcessor {
 			returnError.addItem("wrongType", new ConverterProcessResult("The file type cannot be converted"));
 			return returnError;
 		}
-
-		File completeName = new File(isAsIs ? getUploadFilesDir() : getUploadTempFilesDir(), hash + extDot);
-		log.debug("writing file to: " + completeName);
-		FileHelper.copy(is, completeName);
-		is.close();
-
 		if (isImage) {
 			f.setType(Type.Image);
 		} else if (isVideo) {
@@ -113,25 +104,32 @@ public class FileProcessor {
 
 		f = fileDao.update(f);
 		log.debug("fileId: " + f.getId());
+
+		File file = f.getFile(ext);
+		log.debug("writing file to: " + file);
+		if (!file.getParentFile().exists() && !file.getParentFile().mkdirs()) {
+			returnError.addItem("No parent", new ConverterProcessResult("Unable to create parent for file: " + file.getCanonicalPath()));
+			return returnError;
+		}
+		FileHelper.copy(is, file);
+		is.close();
+
 		
 		log.debug("canBeConverted: " + canBeConverted);
-		if (canBeConverted) {
+		if (canBeConverted || isPdf) {
 			// convert to pdf, thumbs, swf and xml-description
-			returnError = generatePDF.convertPDF(hash, "files", true, completeName);
-		} else if (isPdf) {
-			// convert to thumbs, swf and xml-description
-			returnError = generatePDF.convertPDF(hash, "files", false, completeName);
+			returnError = generatePDF.convertPDF(f, ext);
 		} else if (isChart) {
 			log.debug("uploaded chart file");
 		} else if (isImage && !isAsIs) {
 			// convert it to JPG
 			log.debug("##### convert it to JPG: ");
-			returnError = generateImage.convertImage(hash, extDot, "files");
+			returnError = generateImage.convertImage(f, ext);
 		} else if (isAsIs) {
-			ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, completeName, 50);
+			ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, file, 50);
 			returnError.addItem("processThumb", processThumb);
 		} else if (isVideo) {
-			List<ConverterProcessResult> returnList = flvExplorerConverter.startConversion(f.getId(), completeName.getCanonicalPath());
+			List<ConverterProcessResult> returnList = flvExplorerConverter.convertToMP4(f, ext);
 			
 			int i = 0;
 			for (ConverterProcessResult returnMap : returnList) {
@@ -141,7 +139,7 @@ public class FileProcessor {
 		
 		// has to happen at the end, otherwise it will be overwritten
 		//cause the variable is new initialized
-		returnError.setCompleteName(completeName.getName());
+		returnError.setCompleteName(file.getName());
 		returnError.setFileItemId(f.getId());
 		
 		return returnError;

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/listener/async/BaseStreamWriter.java Sun Sep 11 04:50:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.core.data.record.listener.async;
 
-import static org.apache.openmeetings.util.OmFileHelper.FLV_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
@@ -98,7 +98,7 @@ public abstract class BaseStreamWriter i
 	 *             I/O exception
 	 */
 	private void init() throws IOException {
-		file = new File(OmFileHelper.getStreamsSubDir(scope.getName()), streamName + FLV_EXTENSION);
+		file = new File(OmFileHelper.getStreamsSubDir(scope.getName()), OmFileHelper.getName(streamName, EXTENSION_FLV));
 
 		IStreamableFileFactory factory = (IStreamableFileFactory) ScopeUtils.getScopeService(scope, IStreamableFileFactory.class,
 				StreamableFileFactory.class);

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/CreateLibraryPresentation.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/CreateLibraryPresentation.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/CreateLibraryPresentation.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/CreateLibraryPresentation.java Sun Sep 11 04:50:07 2016
@@ -37,74 +37,56 @@ import org.slf4j.Logger;
 
 public class CreateLibraryPresentation {
 	private static final Logger log = Red5LoggerFactory.getLogger(CreateLibraryPresentation.class, webAppRootKey);
-	
-	public static ConverterProcessResult generateXMLDocument(File targetDirectory, String originalDocument, 
-			String pdfDocument, String swfDocument){
+
+	private static void addFile(Element root, String name, File f) {
+		if (f != null) {
+			root.addElement(name)
+				.addAttribute("lastmod", "" + f.lastModified())
+				.addAttribute("size", "" + f.length())
+				.addText(f.getName());
+		}
+	}
+
+	public static ConverterProcessResult generateXMLDocument(File original, File pdf, File swf) {
 		ConverterProcessResult returnMap = new ConverterProcessResult();
-		returnMap.setProcess("generateXMLDocument");		
+		returnMap.setProcess("generateXMLDocument");
 		try {
 			Document document = DocumentHelper.createDocument();
 			Element root = document.addElement("presentation");
-			
-			File file = new File(targetDirectory, originalDocument);
-			root.addElement("originalDocument")
-				.addAttribute("lastmod", (new Long(file.lastModified())).toString())
-				.addAttribute("size", (new Long(file.length())).toString())	        
-				.addText(originalDocument);
-
-			if (pdfDocument!=null){
-				File pdfDocumentFile = new File(targetDirectory, pdfDocument);
-				root.addElement("pdfDocument")
-					.addAttribute("lastmod", (new Long(pdfDocumentFile.lastModified())).toString())
-					.addAttribute("size", (new Long(pdfDocumentFile.length())).toString())	   		        
-					.addText(pdfDocument);
-			}
 
-			if (swfDocument!=null){
-				File swfDocumentFile = new File(targetDirectory, originalDocument);
-				root.addElement("swfDocument")
-					.addAttribute("lastmod", (new Long(swfDocumentFile.lastModified())).toString())
-					.addAttribute("size", (new Long(swfDocumentFile.length())).toString())
-					.addText(swfDocument);
-			}
+			addFile(root, "originalDocument", original);
+			addFile(root, "pdfDocument", pdf);
+			addFile(root, "swfDocument", swf);
 
-			Element thumbs = root.addElement( "thumbs" );
+			Element thumbs = root.addElement("thumbs");
 
-			//Second get all Files of this Folder
+			// Second get all Files of this Folder
 			FilenameFilter ff = new FilenameFilter() {
 				@Override
 				public boolean accept(File b, String name) {
 					File f = new File(b, name);
-					return f.isFile();
-				}
-			};	
-			
-			String[] allfiles = targetDirectory.list(ff);			
-			if(allfiles!=null){
-				Arrays.sort(allfiles);
-				for(int i=0; i<allfiles.length; i++){
-					File thumbfile = new File(targetDirectory, allfiles[i]);
-					if (allfiles[i].startsWith(thumbImagePrefix)){
-						thumbs.addElement( "thumb" )
-							.addAttribute("lastmod", (new Long(thumbfile.lastModified())).toString())
-							.addAttribute("size", (new Long(thumbfile.length())).toString())
-							.addText(allfiles[i]);
-					}
+					return f.isFile() && f.getName().startsWith(thumbImagePrefix);
 				}
+			};
+
+			File[] _thumbs = original.getParentFile().listFiles(ff);
+			Arrays.sort(_thumbs);
+			for (File thumb : _thumbs) {
+				addFile(thumbs, "thumb", thumb);
 			}
-			
+
 			// lets write to a file
-			XMLWriter writer = new XMLWriter(new FileOutputStream(new File(targetDirectory, OmFileHelper.libraryFileName)));
+			XMLWriter writer = new XMLWriter(new FileOutputStream(new File(original.getParentFile(), OmFileHelper.libraryFileName)));
 			writer.write(document);
 			writer.close();
-			
-			returnMap.setExitValue("0");
-			
+
+			returnMap.setExitCode(0);
+
 			return returnMap;
 		} catch (Exception err) {
 			log.error("Error while generateXMLDocument", err);
 			returnMap.setError(err.getMessage());
-			returnMap.setExitValue("-1");
+			returnMap.setExitCode(-1);
 			return returnMap;
 		}
 	}

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/GeneratePDF.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/GeneratePDF.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/GeneratePDF.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/GeneratePDF.java Sun Sep 11 04:50:07 2016
@@ -18,18 +18,18 @@
  */
 package org.apache.openmeetings.core.documents;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.core.documents.CreateLibraryPresentation.generateXMLDocument;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
 import java.io.FilenameFilter;
 import java.util.ArrayList;
 
-import org.apache.commons.transaction.util.FileHelper;
 import org.apache.openmeetings.core.converter.GenerateSWF;
 import org.apache.openmeetings.core.converter.GenerateThumbs;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.util.process.ConverterProcessResult;
 import org.apache.openmeetings.util.process.ConverterProcessResultList;
 import org.apache.openmeetings.util.process.ProcessHelper;
@@ -47,58 +47,38 @@ public class GeneratePDF {
 	@Autowired
 	private ConfigurationDao configurationDao;
 
-	public ConverterProcessResultList convertPDF(String hash, String roomName, boolean fullProcessing, File inFile) throws Exception {
-		String inFileName = inFile.getName();
-		ConverterProcessResultList returnError = new ConverterProcessResultList();
-
-		File fileFullPath = new File(OmFileHelper.getUploadTempRoomDir(roomName), inFileName);
-		File destinationFolder = OmFileHelper.getNewDir(OmFileHelper.getUploadRoomDir(roomName), hash);
+	public ConverterProcessResultList convertPDF(FileExplorerItem f, String ext) throws Exception {
+		ConverterProcessResultList errors = new ConverterProcessResultList();
 
+		boolean fullProcessing = !EXTENSION_PDF.equals(ext);
+		File original = f.getFile(ext);
+		File pdf = f.getFile(EXTENSION_PDF);
 		log.debug("fullProcessing: " + fullProcessing);
 		if (fullProcessing) {
-			ConverterProcessResult processOpenOffice = doJodConvert(fileFullPath, destinationFolder, hash);
-			returnError.addItem("processOpenOffice", processOpenOffice);
-			ConverterProcessResult processThumb = generateThumbs.generateBatchThumb(new File(destinationFolder, hash + ".pdf"), destinationFolder, 80, "thumb");
-			returnError.addItem("processThumb", processThumb);
-			ConverterProcessResult processSWF = generateSWF.generateSwf(destinationFolder, destinationFolder, hash);
-			returnError.addItem("processSWF", processSWF);
-		} else {
-			log.debug("-- generateBatchThumb --");
-
-			ConverterProcessResult processThumb = generateThumbs.generateBatchThumb(fileFullPath, destinationFolder, 80, "thumb");
-			returnError.addItem("processThumb", processThumb);
-
-			ConverterProcessResult processSWF = generateSWF.generateSwf(fileFullPath.getParentFile(), destinationFolder, hash);
-			returnError.addItem("processSWF", processSWF);
-		}
-
-		// now it should be completed so copy that file to the expected location
-		File fileWhereToMove = new File(destinationFolder, inFileName);
-		fileWhereToMove.createNewFile();
-		FileHelper.moveRec(inFile, fileWhereToMove);
-
-		if (fullProcessing) {
-			ConverterProcessResult processXML = generateXMLDocument(destinationFolder, inFileName, hash + ".pdf", hash + ".swf");
-			returnError.addItem("processXML", processXML);
-		} else {
-			ConverterProcessResult processXML = generateXMLDocument(destinationFolder, inFileName, null, hash + ".swf");
-			returnError.addItem("processXML", processXML);
+			log.debug("-- running JOD --");
+			errors.addItem("processOpenOffice", doJodConvert(original, pdf));
 		}
+		
+		log.debug("-- generateBatchThumb --");
+		errors.addItem("processThumb", generateThumbs.generateBatchThumb(pdf, pdf.getParentFile(), 80, "thumb"));
+		File swf = f.getFile();
+		errors.addItem("processSWF", generateSWF.generateSwf(pdf, swf));
 
-		return returnError;
+		errors.addItem("processXML", generateXMLDocument(original, fullProcessing ? pdf : null, swf));
+		return errors;
 	}
 
 	/**
 	 * Generates PDF using JOD Library (external library)
 	 */
-	public ConverterProcessResult doJodConvert(File fileFullPath, File destinationFolder, String outputfile) {
+	public ConverterProcessResult doJodConvert(File in, File out) {
 		try {
 			String jodPath = configurationDao.getConfValue("jod.path", String.class, "./jod");
 			String officePath = configurationDao.getConfValue("office.path", String.class, "");
 
 			File jodFolder = new File(jodPath);
 			if (!jodFolder.exists() || !jodFolder.isDirectory()) {
-				throw new Exception("Path to JOD Library folder does not exist");
+				return new ConverterProcessResult("doJodConvert", "Path to JOD Library folder does not exist", null);
 			}
 
 			ArrayList<String> argv = new ArrayList<String>();
@@ -130,8 +110,8 @@ public class GeneratePDF {
 
 			argv.add("-jar");
 			argv.add(new File(jodFolder, jodConverterJar).getCanonicalPath());
-			argv.add(fileFullPath.getCanonicalPath());
-			argv.add(new File(destinationFolder, outputfile + ".pdf").getCanonicalPath());
+			argv.add(in.getCanonicalPath());
+			argv.add(out.getCanonicalPath());
 
 			return ProcessHelper.executeScript("doJodConvert", argv.toArray(new String[argv.size()]));
 

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java Sun Sep 11 04:50:07 2016
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.core.documents;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.BufferedReader;
@@ -25,7 +26,6 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 
 import org.red5.logging.Red5LoggerFactory;
@@ -62,7 +62,7 @@ public class LibraryChartLoader {
             xStream.setMode(XStream.NO_REFERENCES);
 
 			try (InputStream is = new FileInputStream(file);
-					BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)))
+					BufferedReader reader = new BufferedReader(new InputStreamReader(is, UTF_8)))
 			{
 				ArrayList lMapList = (ArrayList) xStream.fromXML(reader);
 				return lMapList;

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java Sun Sep 11 04:50:07 2016
@@ -18,7 +18,8 @@
  */
 package org.apache.openmeetings.core.documents;
 
-import static org.apache.openmeetings.util.OmFileHelper.WML_EXTENSION;
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_WML;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
@@ -26,7 +27,6 @@ import java.io.FileOutputStream;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
-import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 
 import org.apache.openmeetings.util.OmFileHelper;
@@ -43,7 +43,7 @@ public class LibraryDocumentConverter {
 		try {
 			log.debug("filePath: " + OmFileHelper.getUploadWmlDir().getCanonicalPath());
 			
-			File file = new File(OmFileHelper.getUploadWmlDir(), fileName + WML_EXTENSION);
+			File file = new File(OmFileHelper.getUploadWmlDir(), OmFileHelper.getName(fileName, EXTENSION_WML));
 			
 			if (file.exists()){
 				return "-20";
@@ -56,7 +56,7 @@ public class LibraryDocumentConverter {
 			log.debug("Write to " + file);
 			
 			try (OutputStream os = new FileOutputStream(file);
-					Writer out = new OutputStreamWriter(os, StandardCharsets.UTF_8))
+					Writer out = new OutputStreamWriter(os, UTF_8))
 			{
 				out.write(xmlString);
 				out.flush();

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java Sun Sep 11 04:50:07 2016
@@ -18,7 +18,8 @@
  */
 package org.apache.openmeetings.core.documents;
 
-import static org.apache.openmeetings.util.OmFileHelper.WML_EXTENSION;
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_WML;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.BufferedReader;
@@ -26,7 +27,6 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -43,8 +43,8 @@ public class LibraryWmlLoader {
 	public static List<?> loadWmlFile(String fileName){
 		try {
 			String name = fileName;
-			if (!name.endsWith(WML_EXTENSION)) {
-				name += WML_EXTENSION;
+			if (!name.endsWith(EXTENSION_WML)) {
+				name = OmFileHelper.getName(fileName, EXTENSION_WML);
 			}
 			File file = new File(OmFileHelper.getUploadWmlDir(), name);
 			log.debug("filepathComplete: " + file);
@@ -53,7 +53,7 @@ public class LibraryWmlLoader {
 			xStream.setMode(XStream.NO_REFERENCES);
 			
 			try (InputStream is = new FileInputStream(file);
-					BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)))
+					BufferedReader reader = new BufferedReader(new InputStreamReader(is, UTF_8)))
 			{
 				List<?> lMapList = (List<?>) xStream.fromXML(reader);
 				

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java Sun Sep 11 04:50:07 2016
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.core.ldap;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_GROUP_ID;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
@@ -28,7 +29,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
-import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
@@ -315,7 +315,7 @@ public class LdapLoginManagement {
 			this.domainId = domainId;
 			LdapConfig ldapConfig = ldapConfigDao.get(domainId);
 			try (InputStream is = new FileInputStream(new File(OmFileHelper.getConfDir(), ldapConfig.getConfigFileName()));
-					Reader r = new InputStreamReader(is, StandardCharsets.UTF_8))
+					Reader r = new InputStreamReader(is, UTF_8))
 			{
 				config.load(r);
 				if (config.isEmpty()) {

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java Sun Sep 11 04:50:07 2016
@@ -18,13 +18,13 @@
  */
 package org.apache.openmeetings.core.mail;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
-import java.nio.charset.StandardCharsets;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
@@ -197,7 +197,7 @@ public class MailHandler {
 		log.debug("getMimeMessage");
 		// Building MimeMessage
 		MimeMessage msg = getBasicMimeMessage();
-		msg.setSubject(m.getSubject(), StandardCharsets.UTF_8.name());
+		msg.setSubject(m.getSubject(), UTF_8.name());
 		String replyTo = m.getReplyTo();
 		if (replyTo != null && mailAddReplyTo) {
 			log.debug("setReplyTo " + replyTo);

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java Sun Sep 11 04:50:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.core.remote;
 
-import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
 import static org.apache.openmeetings.util.OmFileHelper.WB_VIDEO_FILE_PREFIX;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
@@ -216,22 +216,21 @@ public class ConferenceLibrary implement
 		try {
 			Sessiondata sd = sessionDao.check(sid);
 			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-
 				IConnection current = Red5.getConnectionLocal();
 				String streamid = current.getClient().getId();
 
-				Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-
-				Long roomId = currentClient.getRoomId();
+				Client client = sessionManager.getClientByStreamId(streamid, null);
+				Long roomId = client.getRoomId();
 
-				if (roomId != null) {
-					File outputFullFlvFile = new File(OmFileHelper.getStreamsHibernateDir(), WB_VIDEO_FILE_PREFIX + fileId + MP4_EXTENSION);
+				FileExplorerItem f = fileDao.get(fileId);
+				if (roomId != null && f != null) {
+					File mp4 = f.getFile(EXTENSION_MP4);
 
 					File targetFolder = OmFileHelper.getStreamsSubDir(roomId);
 
-					File targetFullFlvFile = new File(targetFolder, WB_VIDEO_FILE_PREFIX + fileId + MP4_EXTENSION);
-					if (outputFullFlvFile.exists() && !targetFullFlvFile.exists()) {
-						FileHelper.copy(outputFullFlvFile, targetFullFlvFile);
+					File target = new File(targetFolder, OmFileHelper.getName(WB_VIDEO_FILE_PREFIX + fileId, EXTENSION_MP4));
+					if (mp4.exists() && !target.exists()) {
+						FileHelper.copy(mp4, target);
 					}
 					return 1L;
 				}

Modified: openmeetings/application/trunk/openmeetings-core/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java Sun Sep 11 04:50:07 2016
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.test.asf;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.BufferedReader;
@@ -28,7 +29,6 @@ import java.io.FilenameFilter;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.StringWriter;
-import java.nio.charset.StandardCharsets;
 
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -130,7 +130,7 @@ public class AsfCopyRightReplace {
 
 	private void scanAndWriteXMLFile(File javaFile) {
 		StringWriter strWriter = new StringWriter();
-		try (BufferedReader is = new BufferedReader(new InputStreamReader(new FileInputStream(javaFile), StandardCharsets.UTF_8))) {
+		try (BufferedReader is = new BufferedReader(new InputStreamReader(new FileInputStream(javaFile), UTF_8))) {
 			log.debug("Processing " + javaFile.getCanonicalPath());
 
 			String line;
@@ -165,7 +165,7 @@ public class AsfCopyRightReplace {
 		} catch (Exception err) {
 			log.error("Error while scanAndWriteXMLFile", err);
 		}
-		try (OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(javaFile), StandardCharsets.UTF_8)) {
+		try (OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(javaFile), UTF_8)) {
 			out.write(strWriter.toString());
 			out.flush();
 		} catch (Exception err) {
@@ -175,7 +175,7 @@ public class AsfCopyRightReplace {
 
 	private void scanAndWriteJavaFile(File javaFile) {
 		StringWriter strWriter = new StringWriter();
-		try (BufferedReader is = new BufferedReader(new InputStreamReader(new FileInputStream(javaFile), StandardCharsets.UTF_8))) {
+		try (BufferedReader is = new BufferedReader(new InputStreamReader(new FileInputStream(javaFile), UTF_8))) {
 			log.debug("Processing " + javaFile.getCanonicalPath());
 
 			String line;
@@ -196,7 +196,7 @@ public class AsfCopyRightReplace {
 		} catch (Exception err) {
 			log.error("Error while scanAndWriteJavaFile", err);
 		}
-		try (OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(javaFile), StandardCharsets.UTF_8)) {
+		try (OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(javaFile), UTF_8)) {
 			out.write(strWriter.toString());
 			out.flush();
 		} catch (Exception err) {

Copied: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java (from r1760223, openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingLogDao.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java?p2=openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java&p1=openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingLogDao.java&r1=1760223&r2=1760224&rev=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingLogDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java Sun Sep 11 04:50:07 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.db.dao.record;
+package org.apache.openmeetings.db.dao.file;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
@@ -26,49 +26,45 @@ import java.util.List;
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 
-import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.db.entity.record.RecordingLog;
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.FileItemLog;
 import org.apache.openmeetings.util.process.ConverterProcessResult;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.transaction.annotation.Transactional;
 
 @Transactional
-public class RecordingLogDao {
-	private static final Logger log = Red5LoggerFactory.getLogger(RecordingLogDao.class, webAppRootKey);
+public class FileItemLogDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(FileItemLogDao.class, webAppRootKey);
 	@PersistenceContext
 	private EntityManager em;
-	
-	public long countErrors(Long recordingId) {
-		return em.createNamedQuery("countErrorRecordingLogsByRecording", Long.class)
-				.setParameter("recId", recordingId).getSingleResult();
-	}	
-	
-	public List<RecordingLog> getByRecordingId(Long recordingId) {
-		return em.createNamedQuery("getRecordingLogsByRecording", RecordingLog.class)
-				.setParameter("recId", recordingId).getResultList();
-	}	
-	
-	public void deleteByRecordingId(Long recordingId) {
-		em.createNamedQuery("deleteErrorRecordingLogsByRecording").setParameter("recId", recordingId).executeUpdate();
+
+	public long countErrors(FileItem f) {
+		return em.createNamedQuery("countErrorFileLogsByFile", Long.class).setParameter("fileId", f.getId())
+				.setParameter("type", f.getType()).getSingleResult();
+	}
+
+	public List<FileItemLog> get(FileItem f) {
+		return em.createNamedQuery("getFileLogsByFile", FileItemLog.class).setParameter("fileId", f.getId())
+				.setParameter("type", f.getType()).getResultList();
 	}
-	
-	public Long add(String msgType, Recording recording, ConverterProcessResult returnMap) {
-		try { 
-			RecordingLog log = new RecordingLog();
-			log.setInserted(new Date());
-			log.setExitValue(returnMap.getExitValue());
-			log.setRecording(recording);
-			log.setFullMessage(returnMap.buildLogMessage());
-			log.setMsgType(msgType);
-			
-			log = em.merge(log);
-			Long logId = log.getId();
-			
-			return logId;
-		} catch (Exception ex2) {
-			log.error("[add]: ",ex2);
-		}
-		return -1L;
+
+	public void delete(FileItem f) {
+		em.createNamedQuery("deleteErrorFileLogsByFile").setParameter("fileId", f.getId())
+				.setParameter("type", f.getType()).executeUpdate();
+	}
+
+	public FileItemLog add(String name, FileItem f, ConverterProcessResult returnMap) {
+		log.trace("Adding log: {}, {}, {}", name, f, returnMap);
+		FileItemLog log = new FileItemLog();
+		log.setInserted(new Date());
+		log.setExitCode(returnMap.getExitCode());
+		log.setFileId(f.getId());
+		log.setFileType(f.getType());
+		log.setMessage(returnMap.buildLogMessage());
+		log.setName(name);
+
+		em.persist(log);
+		return log;
 	}
 }

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java Sun Sep 11 04:50:07 2016
@@ -35,8 +35,7 @@ public class RecordingDTO implements Ser
 	private static final long serialVersionUID = 1L;
 	private Long id;
 	private String name;
-	private String flvName;
-	private String aviName;
+	private String hash;
 	private Long roomId;
 	private String status;
 	private boolean interview;
@@ -50,8 +49,7 @@ public class RecordingDTO implements Ser
 	public RecordingDTO(Recording r) {
 		this.id = r.getId();
 		this.name = r.getName();
-		this.flvName = r.getHash();
-		this.aviName = r.getAlternateDownload();
+		this.hash = r.getHash();
 		this.roomId = r.getRoomId();
 		this.status = r.getStatus().name();
 		this.interview = r.isInterview();
@@ -77,20 +75,12 @@ public class RecordingDTO implements Ser
 		this.name = name;
 	}
 
-	public String getFlvName() {
-		return flvName;
+	public String getHash() {
+		return hash;
 	}
 
-	public void setFlvName(String flvName) {
-		this.flvName = flvName;
-	}
-
-	public String getAviName() {
-		return aviName;
-	}
-
-	public void setAviName(String aviName) {
-		this.aviName = aviName;
+	public void setHash(String hash) {
+		this.hash = hash;
 	}
 
 	public Long getRoomId() {

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java Sun Sep 11 04:50:07 2016
@@ -50,11 +50,11 @@ import org.simpleframework.xml.Root;
 @Entity
 @Table(name = "appointment")
 @NamedQueries({
-    @NamedQuery(name="getAppointmentById", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.id = :id")
-    , @NamedQuery(name="getAppointmentByIdAny", query="SELECT a FROM Appointment a WHERE a.id = :id")
-    , @NamedQuery(name="getAppointments", query="SELECT a FROM Appointment a WHERE a.deleted = false ORDER BY a.id")
-    , @NamedQuery(name="appointmentsInRange",
-    	query="SELECT a FROM Appointment a "
+	@NamedQuery(name="getAppointmentById", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.id = :id")
+	, @NamedQuery(name="getAppointmentByIdAny", query="SELECT a FROM Appointment a WHERE a.id = :id")
+	, @NamedQuery(name="getAppointments", query="SELECT a FROM Appointment a WHERE a.deleted = false ORDER BY a.id")
+	, @NamedQuery(name="appointmentsInRange",
+		query="SELECT a FROM Appointment a "
 			+ "WHERE a.deleted = false "
 			+ "	AND ( "
 			+ "		(a.start BETWEEN :start AND :end) "
@@ -62,8 +62,8 @@ import org.simpleframework.xml.Root;
 			+ "		OR (a.start < :start AND a.end > :end) "
 			+ "	)"
 			+ "	AND a.owner.id = :userId"
-    	)
-    , @NamedQuery(name="joinedAppointmentsInRange",
+		)
+	, @NamedQuery(name="joinedAppointmentsInRange",
 		query="SELECT a FROM MeetingMember mm INNER JOIN mm.appointment a "
 			+ "WHERE mm.deleted = false AND mm.user.id <> a.owner.id AND mm.user.id = :userId "
 			+ "	AND a.id NOT IN (SELECT a.id FROM Appointment a WHERE a.owner.id = :userId)"
@@ -73,8 +73,8 @@ import org.simpleframework.xml.Root;
 			+ "		OR (a.end BETWEEN :start AND :end) "
 			+ "		OR (a.start < :start AND a.end > :end) "
 			+ "	)"
-    	)
-    , @NamedQuery(name="appointmentsInRangeRemind",
+		)
+	, @NamedQuery(name="appointmentsInRangeRemind",
 		query="SELECT a FROM Appointment a "
 			//only ReminderType simple mail is concerned!
 			+ "WHERE a.deleted = false AND a.reminderEmailSend = false"
@@ -84,11 +84,11 @@ import org.simpleframework.xml.Root;
 			+ "		OR (a.end BETWEEN :start AND :end) "
 			+ "		OR (a.start < :start AND a.end > :end) "
 			+ "	)"
-    	)
-    , @NamedQuery(name="getAppointmentByRoomId", query="SELECT a FROM Appointment a WHERE a.room.id = :roomId")
-    , @NamedQuery(name="getAppointmentByOwnerRoomId", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.owner.id = :userId AND a.room.id = :roomId")
+		)
+	, @NamedQuery(name="getAppointmentByRoomId", query="SELECT a FROM Appointment a WHERE a.room.id = :roomId")
+	, @NamedQuery(name="getAppointmentByOwnerRoomId", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.owner.id = :userId AND a.room.id = :roomId")
 	//TODO this query returns duplicates if the user books an appointment with his own user as second meeting-member, swagner 19.02.2012
-    , @NamedQuery(name="appointmentsInRangeByUser",
+	, @NamedQuery(name="appointmentsInRangeByUser",
 		query="SELECT a FROM MeetingMember mm, IN(mm.appointment) a "
 			+ "WHERE mm.deleted = false AND mm.user.id <> a.owner.id AND mm.user.id = :userId "
 			+ "	AND ( "
@@ -96,8 +96,8 @@ import org.simpleframework.xml.Root;
 			+ "		OR (a.end BETWEEN :start AND :end) "
 			+ "		OR (a.start < :start AND a.end > :end) "
 			+ "	)"
-	    )
-    , @NamedQuery(name="appointedRoomsInRangeByUser",
+		)
+	, @NamedQuery(name="appointedRoomsInRangeByUser",
 		query="SELECT a.room FROM MeetingMember mm, IN(mm.appointment) a "
 			+ "WHERE mm.deleted = false AND mm.user.id <> a.owner.id AND mm.user.id = :userId "
 			+ "	AND ( "
@@ -105,9 +105,9 @@ import org.simpleframework.xml.Root;
 			+ "		OR (a.end BETWEEN :start AND :end) "
 			+ "		OR (a.start < :start AND a.end > :end) "
 			+ "	)"
-	    )
-    , @NamedQuery(name="getNextAppointment", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.start > :start AND a.owner.id = :userId")
-    , @NamedQuery(name="getAppointmentsByTitle", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.title LIKE :title AND a.owner.id = :userId")
+		)
+	, @NamedQuery(name="getNextAppointment", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.start > :start AND a.owner.id = :userId")
+	, @NamedQuery(name="getAppointmentsByTitle", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.title LIKE :title AND a.owner.id = :userId")
 })
 @Root(name="appointment")
 public class Appointment implements IDataProviderEntity {

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java?rev=1760224&r1=1760223&r2=1760224&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java Sun Sep 11 04:50:07 2016
@@ -20,11 +20,13 @@ package org.apache.openmeetings.db.entit
 
 import java.io.File;
 import java.util.Date;
+import java.util.List;
 
 import javax.persistence.Column;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
 import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.openmeetings.db.entity.IDataProviderEntity;
@@ -86,15 +88,15 @@ public abstract class FileItem implement
 	@Element(data = true, required = false)
 	private Integer flvHeight;
 
-	@Column(name = "preview_image")
-	@Element(data = true, required = false)
-	private String previewImage;
-
 	@Column(name = "type")
 	@Element(data = true, required = false)
 	@Enumerated(EnumType.STRING)
 	private Type type;
 
+	// Not Mapped
+	@Transient
+	private List<FileItemLog> log;
+
 	public String getName() {
 		return name;
 	}
@@ -183,14 +185,6 @@ public abstract class FileItem implement
 		this.flvHeight = flvHeight;
 	}
 
-	public String getPreviewImage() {
-		return previewImage;
-	}
-
-	public void setPreviewImage(String previewImage) {
-		this.previewImage = previewImage;
-	}
-
 	public Type getType() {
 		return type;
 	}
@@ -199,6 +193,14 @@ public abstract class FileItem implement
 		this.type = type;
 	}
 
+	public List<FileItemLog> getLog() {
+		return log;
+	}
+
+	public void setLog(List<FileItemLog> log) {
+		this.log = log;
+	}
+
 	public File getFile() {
 		return getFile(null);
 	}