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); }
