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 2012/04/25 11:03:46 UTC
svn commit: r1330162 - in /incubator/openmeetings/trunk/singlewebapp: ./
docs/ src/ src/org/openmeetings/app/data/flvrecord/converter/
src/org/openmeetings/app/documents/ src/org/openmeetings/app/installation/
src/org/openmeetings/utils/ xdocs/
Author: solomax
Date: Wed Apr 25 09:03:45 2012
New Revision: 1330162
URL: http://svn.apache.org/viewvc?rev=1330162&view=rev
Log:
OPENMEETINGS-226 is fixed
Added:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/ProcessHelper.java
Modified:
incubator/openmeetings/trunk/singlewebapp/.project
incubator/openmeetings/trunk/singlewebapp/docs/GeneralConfiguration.html
incubator/openmeetings/trunk/singlewebapp/src/install_step1_EN.vm
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/BaseConverter.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverter.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverter.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateImage.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GeneratePDF.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateSWF.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateThumbs.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/InstallationConfig.java
incubator/openmeetings/trunk/singlewebapp/xdocs/GeneralConfiguration.xml
Modified: incubator/openmeetings/trunk/singlewebapp/.project
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/.project?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/.project (original)
+++ incubator/openmeetings/trunk/singlewebapp/.project Wed Apr 25 09:03:45 2012
@@ -41,7 +41,7 @@
</natures>
<filteredResources>
<filter>
- <id>1333687549649</id>
+ <id>1335328265197</id>
<name></name>
<type>26</type>
<matcher>
@@ -50,7 +50,7 @@
</matcher>
</filter>
<filter>
- <id>1333687549666</id>
+ <id>1335328265218</id>
<name></name>
<type>10</type>
<matcher>
@@ -59,7 +59,7 @@
</matcher>
</filter>
<filter>
- <id>1333687549667</id>
+ <id>1335328265238</id>
<name></name>
<type>26</type>
<matcher>
@@ -68,7 +68,7 @@
</matcher>
</filter>
<filter>
- <id>1333687549702</id>
+ <id>1335328265260</id>
<name></name>
<type>26</type>
<matcher>
@@ -76,5 +76,14 @@
<arguments>1.0-projectRelativePath-matches-false-false-build/openlaszlo</arguments>
</matcher>
</filter>
+ <filter>
+ <id>1335328265291</id>
+ <name></name>
+ <type>30</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-projectRelativePath-matches-false-false-build/red5/bin</arguments>
+ </matcher>
+ </filter>
</filteredResources>
</projectDescription>
Modified: incubator/openmeetings/trunk/singlewebapp/docs/GeneralConfiguration.html
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/docs/GeneralConfiguration.html?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/docs/GeneralConfiguration.html (original)
+++ incubator/openmeetings/trunk/singlewebapp/docs/GeneralConfiguration.html Wed Apr 25 09:03:45 2012
@@ -1060,6 +1060,28 @@ limitations under the License.
</font>
</td>
</tr>
+ <tr>
+ <td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
+ <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+ office.path
+ </font>
+</td>
+ <td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
+ <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+
+ </font>
+</td>
+ <td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
+ <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+ The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically
+ </font>
+</td>
+ <td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
+ <font color="#000000" size="-1" face="arial,helvetica,sanserif">
+ 2.0.x
+ </font>
+</td>
+ </tr>
</table>
</blockquote>
</p>
Modified: incubator/openmeetings/trunk/singlewebapp/src/install_step1_EN.vm
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/install_step1_EN.vm?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/install_step1_EN.vm (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/install_step1_EN.vm Wed Apr 25 09:03:45 2012
@@ -268,35 +268,40 @@ function checkEmail()
</fieldset>
<fieldset id="userConf1">
-
<legend>Converters</legend>
<li>
- <label for="swftools_path">SWFTools Path</label>
- <input name="swftools_path" id="swftools_path" size="27" title="Enter the path to swftools for example C:/swftools (Windows) or leave blank if swftools is a known to your system path" type="text" />
- <p><i>You can test if swftools is installed into system path by opening a shell or cmd-prompt and type pdf2swf<br/>
- If this shows a list of options leave this field blank otherwise you have to specify the path to pdf2swf on your system<br/>
- see also <a href="http://code.google.com/p/openmeetings/wiki/ConvertersInstallation" target="_blank">ConvertersInstallation</a></i></p>
+ <label for="swftools_path">SWFTools Path</label>
+ <input name="swftools_path" id="swftools_path" size="27" title="Enter the path to swftools for example C:/swftools (Windows) or leave blank if swftools is a known to your system path" type="text" />
+ <p><i>You can test if swftools is installed into system path by opening a shell or cmd-prompt and type pdf2swf<br/>
+ If this shows a list of options leave this field blank otherwise you have to specify the path to pdf2swf on your system<br/>
+ see also <a href="http://code.google.com/p/openmeetings/wiki/ConvertersInstallation" target="_blank">ConvertersInstallation</a></i></p>
</li>
<li>
- <label for="imagemagick_path">ImageMagick Path</label>
- <input name="imagemagick_path" id="imagemagick_path" size="27" title="Enter the path to ImageMagick, leave blank if ImageMagick is successfully installed to system-path" type="text" />
- <p><i>see also <a href="http://code.google.com/p/openmeetings/wiki/ConvertersInstallation" target="_blank">ConvertersInstallation</a></i></p>
+ <label for="imagemagick_path">ImageMagick Path</label>
+ <input name="imagemagick_path" id="imagemagick_path" size="27" title="Enter the path to ImageMagick, leave blank if ImageMagick is successfully installed to system-path" type="text" />
+ <p><i>see also <a href="http://code.google.com/p/openmeetings/wiki/ConvertersInstallation" target="_blank">ConvertersInstallation</a></i></p>
</li>
<li>
- <label for="ffmpeg_path">FFMPEG Path</label>
- <input name="ffmpeg_path" id="ffmpeg_path" size="27" title="Enter the path to FFMPEG, leave blank if FFMPEG is successfully installed to system-path" type="text" />
- <p><i>see also <a href="http://code.google.com/p/openmeetings/wiki/ConvertersInstallation" target="_blank">ConvertersInstallation</a></i></p>
+ <label for="ffmpeg_path">FFMPEG Path</label>
+ <input name="ffmpeg_path" id="ffmpeg_path" size="27" title="Enter the path to FFMPEG, leave blank if FFMPEG is successfully installed to system-path" type="text" />
+ <p><i>see also <a href="http://code.google.com/p/openmeetings/wiki/ConvertersInstallation" target="_blank">ConvertersInstallation</a></i></p>
</li>
<li>
<label for="sox_path">SoX Path</label>
- <input name="sox_path" id="sox_path" size="27" title="Enter the path to SoX, leave blank if SoX is successfully installed to system-path" type="text" />
- <p><i>see also <a href="http://code.google.com/p/openmeetings/wiki/ConvertersInstallation" target="_blank">ConvertersInstallation</a></i></p>
+ <input name="sox_path" id="sox_path" size="27" title="Enter the path to SoX, leave blank if SoX is successfully installed to system-path" type="text" />
+ <p><i>see also <a href="http://code.google.com/p/openmeetings/wiki/ConvertersInstallation" target="_blank">ConvertersInstallation</a></i></p>
+ </li>
+ <li>
+ <label for="jod_path">JOD Path</label>
+ <input name="jod_path" id="jod_path" size="27" value="./jodconverter-core-3.0-beta-4/lib"
+ title="The path to JOD library (http://code.google.com/p/jodconverter), configure the path to point to the lib directory of JOD that contains also the jodconverter-core-version.jar" type="text" />
+ <p><i>see also <a href="http://code.google.com/p/openmeetings/wiki/ConvertersInstallation" target="_blank">ConvertersInstallation</a></i></p>
</li>
- <li>
- <label for="jod_path">JOD Path</label>
- <input name="jod_path" id="jod_path" size="27" value="./jodconverter-core-3.0-beta-4/lib"
- title="The path to JOD library (http://code.google.com/p/jodconverter), configure the path to point to the lib directory of JOD that contains also the jodconverter-core-version.jar" type="text" />
- <p><i>see also <a href="http://code.google.com/p/openmeetings/wiki/ConvertersInstallation" target="_blank">ConvertersInstallation</a></i></p>
+ <li>
+ <label for="office_path">OpenOffice/LibreOffice Path for jodconverter</label>
+ <input name="office_path" id="office_path" size="27" value=""
+ title="The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically" type="text" />
+ <p>The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation</p>
</li>
</fieldset>
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/BaseConverter.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/BaseConverter.java?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/BaseConverter.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/BaseConverter.java Wed Apr 25 09:03:45 2012
@@ -31,6 +31,7 @@ import org.openmeetings.app.persistence.
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaDelta;
import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.utils.ProcessHelper;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -203,7 +204,7 @@ public abstract class BaseConverter {
}
log.debug("END stripAudioFromFLVs ################# ");
- returnLog.add(GenerateSWF.executeScript("generateFFMPEG",
+ returnLog.add(ProcessHelper.executeScript("generateFFMPEG",
argv));
// check if the resulting Audio is valid
@@ -300,7 +301,7 @@ public abstract class BaseConverter {
log.debug(" commandHelper " + commandHelper);
log.debug("END addGapAudioToWaves ################# ");
- returnLog.add(GenerateSWF.executeScript("fillGap",
+ returnLog.add(ProcessHelper.executeScript("fillGap",
argv_sox));
this.flvRecordingMetaDeltaDaoImpl
@@ -345,7 +346,7 @@ public abstract class BaseConverter {
log.debug("padString :: " + padString);
log.debug("END addAudioToWaves ################# ");
- returnLog.add(GenerateSWF.executeScript(
+ returnLog.add(ProcessHelper.executeScript(
"addStartEndToAudio", argv_sox));
// Fix for Audio Length - Invalid Audio Length in Recorded
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java Wed Apr 25 09:03:45 2012
@@ -27,8 +27,8 @@ import java.util.regex.Pattern;
import org.openmeetings.app.OpenmeetingsVariables;
import org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl;
import org.openmeetings.app.data.flvrecord.FlvRecordingLogDaoImpl;
-import org.openmeetings.app.documents.GenerateSWF;
import org.openmeetings.app.persistence.beans.files.FileExplorerItem;
+import org.openmeetings.utils.ProcessHelper;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -111,7 +111,7 @@ public class FlvExplorerConverter extend
log.debug(tString);
log.debug("END generateFullFLV ################# ");
- HashMap<String, String> returnMapConvertFLV = GenerateSWF.executeScript("uploadFLV ID :: "
+ HashMap<String, String> returnMapConvertFLV = ProcessHelper.executeScript("uploadFLV ID :: "
+ fileExplorerItem.getFileExplorerItemId(), argv_fullFLV);
//Parse the width height from the FFMPEG output
@@ -147,7 +147,7 @@ public class FlvExplorerConverter extend
log.debug("END previewFullFLV ################# ");
returnLog
- .add(GenerateSWF.executeScript("previewUpload ID :: "
+ .add(ProcessHelper.executeScript("previewUpload ID :: "
+ fileExplorerItem.getFileExplorerItemId(),
argv_previewFLV));
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverter.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverter.java?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverter.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverter.java Wed Apr 25 09:03:45 2012
@@ -32,11 +32,11 @@ import org.openmeetings.app.Openmeetings
import org.openmeetings.app.data.flvrecord.FlvRecordingDaoImpl;
import org.openmeetings.app.data.flvrecord.FlvRecordingLogDaoImpl;
import org.openmeetings.app.data.flvrecord.FlvRecordingMetaDataDaoImpl;
-import org.openmeetings.app.documents.GenerateSWF;
import org.openmeetings.app.documents.GenerateThumbs;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecording;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData;
import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.utils.ProcessHelper;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -177,7 +177,7 @@ public class FlvInterviewConverter exten
log.debug(iString);
log.debug("END mergeAudioToWaves ################# ");
- returnLog.add(GenerateSWF.executeScript("mergeWave",
+ returnLog.add(ProcessHelper.executeScript("mergeWave",
argv_full_sox));
} else {
@@ -203,7 +203,7 @@ public class FlvInterviewConverter exten
log.debug(tString);
log.debug("END generateSampleAudio ################# ");
- returnLog.add(GenerateSWF.executeScript("mergeWave",
+ returnLog.add(ProcessHelper.executeScript("mergeWave",
argv_full_sox));
}
@@ -245,7 +245,7 @@ public class FlvInterviewConverter exten
log.debug(iString);
log.debug("END generateImageSequence ################# ");
- returnLog.add(GenerateSWF.executeScript(
+ returnLog.add(ProcessHelper.executeScript(
"generateImageSequence", argv_imageSeq));
}
@@ -394,7 +394,7 @@ public class FlvInterviewConverter exten
this.getPathToImageMagick(), "+append",
interviewPod1Images[i], interviewPod2Images[i],
outputImageName };
- returnLog.add(GenerateSWF.executeScript(
+ returnLog.add(ProcessHelper.executeScript(
"generateImageSequence", argv_imageMagick));
} else {
returnLog.add(processImageWindows(
@@ -449,7 +449,7 @@ public class FlvInterviewConverter exten
log.debug(tString2);
log.debug("END generateFullBySequenceFLV ################# ");
- returnLog.add(GenerateSWF.executeScript(
+ returnLog.add(ProcessHelper.executeScript(
"generateFullBySequenceFLV", argv_generatedMoview));
String hashFileFullNameFlv = "flvRecording_"
@@ -493,7 +493,7 @@ public class FlvInterviewConverter exten
log.debug(tString);
log.debug("END generateFullFLV ################# ");
- returnLog.add(GenerateSWF.executeScript("generateFullFLV",
+ returnLog.add(ProcessHelper.executeScript("generateFullFLV",
argv_fullFLV));
flvRecording.setFileHash(hashFileFullNameFlv);
@@ -527,7 +527,7 @@ public class FlvInterviewConverter exten
log.debug(kString);
log.debug("END previewFullFLV ################# ");
- returnLog.add(GenerateSWF.executeScript("generateFullFLV",
+ returnLog.add(ProcessHelper.executeScript("generateFullFLV",
argv_previewFLV));
String alternateDownloadName = "flvRecording_"
@@ -549,7 +549,7 @@ public class FlvInterviewConverter exten
log.debug(sString);
log.debug("END alternateDownLoad ################# ");
- returnLog.add(GenerateSWF.executeScript("alternateDownload",
+ returnLog.add(ProcessHelper.executeScript("alternateDownload",
argv_alternateDownload));
flvRecording.setAlternateDownload(alternateDownloadName);
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverter.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverter.java?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverter.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverter.java Wed Apr 25 09:03:45 2012
@@ -27,9 +27,9 @@ import org.openmeetings.app.Openmeetings
import org.openmeetings.app.data.flvrecord.FlvRecordingDaoImpl;
import org.openmeetings.app.data.flvrecord.FlvRecordingLogDaoImpl;
import org.openmeetings.app.data.flvrecord.FlvRecordingMetaDataDaoImpl;
-import org.openmeetings.app.documents.GenerateSWF;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecording;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData;
+import org.openmeetings.utils.ProcessHelper;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -137,7 +137,7 @@ public class FlvRecorderConverter extend
this.flvRecordingMetaDataDaoImpl
.updateFlvRecordingMetaData(flvRecordingMetaDataOfScreen);
- returnLog.add(GenerateSWF.executeScript("mergeWave",
+ returnLog.add(ProcessHelper.executeScript("mergeWave",
argv_full_sox));
} else {
@@ -169,7 +169,7 @@ public class FlvRecorderConverter extend
this.flvRecordingMetaDataDaoImpl
.updateFlvRecordingMetaData(flvRecordingMetaDataOfScreen);
- returnLog.add(GenerateSWF.executeScript("mergeWave",
+ returnLog.add(ProcessHelper.executeScript("mergeWave",
argv_full_sox));
}
@@ -228,7 +228,7 @@ public class FlvRecorderConverter extend
log.debug(tString);
log.debug("END generateFullFLV ################# ");
- returnLog.add(GenerateSWF.executeScript("generateFullFLV",
+ returnLog.add(ProcessHelper.executeScript("generateFullFLV",
argv_fullFLV));
flvRecording.setFileHash(hashFileFullNameFlv);
@@ -261,7 +261,7 @@ public class FlvRecorderConverter extend
log.debug(kString);
log.debug("END previewFullFLV ################# ");
- returnLog.add(GenerateSWF.executeScript("generateFullFLV",
+ returnLog.add(ProcessHelper.executeScript("generateFullFLV",
argv_previewFLV));
String alternateDownloadName = "flvRecording_"
@@ -283,7 +283,7 @@ public class FlvRecorderConverter extend
log.debug(sString);
log.debug("END alternateDownLoad ################# ");
- returnLog.add(GenerateSWF.executeScript("alternateDownload",
+ returnLog.add(ProcessHelper.executeScript("alternateDownload",
argv_alternateDownload));
flvRecording.setAlternateDownload(alternateDownloadName);
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateImage.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateImage.java?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateImage.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateImage.java Wed Apr 25 09:03:45 2012
@@ -26,6 +26,7 @@ import org.openmeetings.app.data.basic.C
import org.openmeetings.app.data.user.dao.UsersDaoImpl;
import org.openmeetings.app.persistence.beans.user.Users;
import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.utils.ProcessHelper;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -172,7 +173,7 @@ public class GenerateImage {
// return GenerateSWF.executeScript("convertSingleJpg", argv);
if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == -1) {
- return GenerateSWF.executeScript("generateBatchThumbByWidth", argv);
+ return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
} else {
return generateThumbs.processImageWindows(argv);
}
@@ -183,7 +184,7 @@ public class GenerateImage {
String outputfile, int width, int height) {
String[] argv = new String[] { getPathToImageMagic(), "-size",
width + "x" + height, inputFile, outputfile };
- return GenerateSWF.executeScript("convertImageByTypeAndSizeAndDepth",
+ return ProcessHelper.executeScript("convertImageByTypeAndSizeAndDepth",
argv);
}
@@ -193,7 +194,7 @@ public class GenerateImage {
String[] argv = new String[] { getPathToImageMagic(), "-size",
width + "x" + height, "-depth", Integer.toString(depth),
inputFile, outputfile };
- return GenerateSWF.executeScript("convertImageByTypeAndSizeAndDepth",
+ return ProcessHelper.executeScript("convertImageByTypeAndSizeAndDepth",
argv);
}
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GeneratePDF.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GeneratePDF.java?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GeneratePDF.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GeneratePDF.java Wed Apr 25 09:03:45 2012
@@ -26,6 +26,7 @@ import java.util.HashMap;
import org.apache.commons.transaction.util.FileHelper;
import org.openmeetings.app.OpenmeetingsVariables;
import org.openmeetings.app.data.basic.Configurationmanagement;
+import org.openmeetings.utils.ProcessHelper;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -146,8 +147,8 @@ public class GeneratePDF {
String fileFullPath, String destinationFolder, String outputfile) {
try {
- String jodPath = cfgManagement.getConfValue("jod.path",
- String.class, "./jod");
+ String jodPath = cfgManagement.getConfValue("jod.path", String.class, "./jod");
+ String officePath = cfgManagement.getConfValue("office.path", String.class, "");
File jodFolder = new File(jodPath);
if (!jodFolder.exists() || !jodFolder.isDirectory()) {
@@ -157,6 +158,9 @@ public class GeneratePDF {
ArrayList<String> argv = new ArrayList<String>();
argv.add("java");
+ if (officePath.trim().length() > 0) {
+ argv.add("-Doffice.home=" + officePath);
+ }
String jodConverterJar = "";
for (String jarFiles : jodFolder.list(new FilenameFilter() {
@@ -182,7 +186,7 @@ public class GeneratePDF {
argv.add(fileFullPath);
argv.add(destinationFolder + outputfile + ".pdf");
- return GenerateSWF.executeScript("doJodConvert",
+ return ProcessHelper.executeScript("doJodConvert",
argv.toArray(new String[argv.size()]));
} catch (Exception ex) {
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateSWF.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateSWF.java?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateSWF.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateSWF.java Wed Apr 25 09:03:45 2012
@@ -18,25 +18,20 @@
*/
package org.openmeetings.app.documents;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
-import java.util.concurrent.TimeoutException;
import org.openmeetings.app.data.basic.Configurationmanagement;
+import org.openmeetings.utils.ProcessHelper;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
public class GenerateSWF {
- private static final Logger log = Red5LoggerFactory
+ public static final Logger log = Red5LoggerFactory
.getLogger(GenerateSWF.class);
@Autowired
@@ -47,160 +42,8 @@ public class GenerateSWF {
public final static String execExt = isPosix ? "" : ".exe";
- public static HashMap<String, String> executeScript(String process,
- String[] argv) {
- HashMap<String, String> returnMap = new HashMap<String, String>();
- returnMap.put("process", process);
- log.debug("process: " + process);
- log.debug("args: " + Arrays.toString(argv));
-
- try {
- returnMap.put("command", Arrays.toString(argv));
- returnMap.put("out","");
-
- // By using the process Builder we have access to modify the
- // environment variables
- // that is handy to set variables to run it inside eclipse
- ProcessBuilder pb = new ProcessBuilder(argv);
-
- Process proc = pb.start();
-
- // 20-minute timeout for command execution
- // FFMPEG conversion of Recordings may take a real long time until
- // its finished
- long timeout = 60000 * 20;
-
- ErrorStreamWatcher errorWatcher = new ErrorStreamWatcher(proc);
- Worker worker = new Worker(proc);
- InputStreamWatcher inputWatcher = new InputStreamWatcher(proc);
- errorWatcher.start();
- inputWatcher.start();
- worker.start();
-
-
- try {
- worker.join(timeout);
- if (worker.exit != null) {
- returnMap.put("exitValue", "" + worker.exit);
- log.debug("exitVal: " + worker.exit);
- returnMap.put("error", errorWatcher.error);
- } else {
- returnMap.put("exception", "timeOut");
- returnMap.put("error", errorWatcher.error);
- returnMap.put("exitValue", "-1");
-
- throw new TimeoutException();
- }
- } catch (InterruptedException ex) {
- worker.interrupt();
- errorWatcher.interrupt();
- inputWatcher.interrupt();
- Thread.currentThread().interrupt();
-
- returnMap.put("error", ex.getMessage());
- returnMap.put("exitValue", "-1");
-
- throw ex;
- } finally {
- proc.destroy();
- }
-
- } catch (TimeoutException e) {
- // Timeout exception is processed above
- log.error("executeScript",e);
- e.printStackTrace();
- returnMap.put("error", e.getMessage());
- returnMap.put("exception", e.toString());
- returnMap.put("exitValue", "-1");
- } catch (Throwable t) {
- // Any other exception is shown in debug window
- log.error("executeScript",t);
- t.printStackTrace();
- returnMap.put("error", t.getMessage());
- returnMap.put("exception", t.toString());
- returnMap.put("exitValue", "-1");
- }
-
- return returnMap;
- }
-
- private static class Worker extends Thread {
- private final Process process;
- private Integer exit;
-
- private Worker(Process process) {
- this.process = process;
- }
-
- @Override
- public void run() {
- try {
- exit = process.waitFor();
- } catch (InterruptedException ignore) {
- return;
- }
- }
- }
-
- // This one collects errors coming from script execution
- private static class ErrorStreamWatcher extends Thread {
- private String error;
- private final InputStream stderr;
- private final InputStreamReader isr;
- private final BufferedReader br;
-
- private ErrorStreamWatcher(Process process) throws UnsupportedEncodingException {
- error = "";
- stderr = process.getErrorStream();
- isr = new InputStreamReader(stderr, "UTF-8");
- br = new BufferedReader(isr);
- }
-
- @Override
- public void run() {
- try {
- String line = br.readLine();
- while (line != null) {
- error += line;
- line = br.readLine();
- }
- } catch (IOException ioexception) {
- return;
- }
- }
- }
-
- // This one just reads script's output stream so it can
- // finish normally, see issue 801 http://code.google.com/p/openmeetings/issues/detail?id=801
- // needs verification, swagner 21.02.2012
- private static class InputStreamWatcher extends Thread {
-
- private final InputStream stderr;
- private final InputStreamReader isr;
- private final BufferedReader br;
-
- private InputStreamWatcher(Process process) {
- stderr = process.getInputStream();
- isr = new InputStreamReader(stderr);
- br = new BufferedReader(isr);
- }
-
- @Override
- public void run() {
- try {
- String line = br.readLine();
- while (line != null) {
- line = br.readLine();
- }
- } catch (IOException ioexception) {
- return;
- }
- }
- }
-
private String getPathToSwfTools() {
- String pathToSWFTools = cfgManagement.getConfKey(3, "swftools_path")
- .getConf_value();
+ String pathToSWFTools = cfgManagement.getConfValue("swftools_path", String.class, "");
// If SWFTools Path is not blank a File.separator at the end of the path
// is needed
if (!pathToSWFTools.equals("")
@@ -222,7 +65,7 @@ public class GenerateSWF {
originalFolder + fileNamePure + ".pdf",
destinationFolder + fileNamePure + ".swf" };
- return executeScript("generateSwf", argv);
+ return ProcessHelper.executeScript("generateSwf", argv);
}
/**
@@ -240,7 +83,7 @@ public class GenerateSWF {
"-o", outputfile, "-r", Integer.toString(fps), "-z" });
argvList.addAll(images);
- return executeScript("generateSwfByImages",
+ return ProcessHelper.executeScript("generateSwfByImages",
argvList.toArray(new String[0]));
}
@@ -255,7 +98,7 @@ public class GenerateSWF {
"-o", outputswf, "-r", Integer.toString(fps), "-z", "-a" });
argvList.addAll(swfs);
- return executeScript("generateSwfByImages",
+ return ProcessHelper.executeScript("generateSwfByImages",
argvList.toArray(new String[0]));
}
@@ -267,7 +110,7 @@ public class GenerateSWF {
width + "x" + height, "-b", "750k", "-ar", "44100", "-y",
outputswf };
- return executeScript("generateSWFByFFMpeg", argv);
+ return ProcessHelper.executeScript("generateSWFByFFMpeg", argv);
}
}
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateThumbs.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateThumbs.java?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateThumbs.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/documents/GenerateThumbs.java Wed Apr 25 09:03:45 2012
@@ -26,6 +26,7 @@ import java.io.InputStreamReader;
import java.util.HashMap;
import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.utils.ProcessHelper;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -59,7 +60,7 @@ public class GenerateThumbs {
log.debug("END generateThumb ################# ");
if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == -1) {
- return GenerateSWF.executeScript("generateBatchThumbByWidth", argv);
+ return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
} else {
return this.processImageWindows(argv);
}
@@ -71,7 +72,7 @@ public class GenerateThumbs {
inputfile, outputfile };
if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == -1) {
- return GenerateSWF.executeScript("generateBatchThumbByWidth", argv);
+ return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
} else {
return this.processImageWindows(argv);
}
@@ -88,7 +89,7 @@ public class GenerateThumbs {
Integer.toString(thumbSize), inputfile,
outputpath + "_" + pre + "_page-%04d.jpg" };
- return GenerateSWF.executeScript("generateBatchThumbByWidth", argv);
+ return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
} else {
String[] argv = new String[] {
@@ -112,7 +113,7 @@ public class GenerateThumbs {
outputpath + "_" + pre + "_page.png" };
if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == -1) {
- return GenerateSWF.executeScript("generateBatchThumbByWidth", argv);
+ return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
} else {
return this.processImageWindows(argv);
}
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java Wed Apr 25 09:03:45 2012
@@ -303,7 +303,17 @@ public class ImportInitvalues {
cfgManagement.addConfByKey(3, "ffmpeg_path", cfg.ffmpegPath, null,
"Path To FFMPEG");
+ cfgManagement.addConfByKey(3, "office.path", cfg.officePath, null,
+ "The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically");
+ cfgManagement
+ .addConfByKey(
+ 3,
+ "jod.path",
+ cfg.jodPath,
+ null,
+ "The path to JOD library (http://code.google.com/p/jodconverter), configure the path to point to the lib directory of JOD that contains also the jodconverter-core-version.jar");
+
cfgManagement.addConfByKey(3, "rss_feed1", cfg.urlFeed, null, "Feed URL");
cfgManagement.addConfByKey(3, "rss_feed2", cfg.urlFeed2, null,
@@ -530,14 +540,6 @@ public class ImportInitvalues {
null,
"A hot key code for the 'give exclusive audio' functionality. Keycode 123 is F12");
- cfgManagement
- .addConfByKey(
- 3,
- "jod.path",
- cfg.jodPath,
- null,
- "The path to JOD library (http://code.google.com/p/jodconverter), configure the path to point to the lib directory of JOD that contains also the jodconverter-core-version.jar");
-
// system-wide ldap params
cfgManagement.addConfByKey(
3,
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/InstallationConfig.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/InstallationConfig.java?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/InstallationConfig.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/InstallationConfig.java Wed Apr 25 09:03:45 2012
@@ -22,6 +22,7 @@ public class InstallationConfig {
public String ffmpegPath = "";
public String soxPath = "";
public String jodPath = "./jod/lib";
+ public String officePath = "";
public String defaultLangId = "1";
public String sendEmailAtRegister = "0";
Added: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/ProcessHelper.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/ProcessHelper.java?rev=1330162&view=auto
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/ProcessHelper.java (added)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/ProcessHelper.java Wed Apr 25 09:03:45 2012
@@ -0,0 +1,143 @@
+package org.openmeetings.utils;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeoutException;
+
+import org.openmeetings.app.documents.GenerateSWF;
+
+public class ProcessHelper {
+
+ private static class Worker extends Thread {
+ private final Process process;
+ private Integer exitCode;
+
+ private Worker(Process process) {
+ this.process = process;
+ }
+
+ @Override
+ public void run() {
+ try {
+ exitCode = process.waitFor();
+ } catch (InterruptedException ignore) {
+ return;
+ }
+ }
+ }
+
+ private static class StreamWatcher extends Thread {
+ public StringBuilder output;
+ private final InputStream is;
+ private final BufferedReader br;
+
+ private StreamWatcher(Process process, boolean isError) throws UnsupportedEncodingException {
+ output = new StringBuilder();
+ is = isError ? process.getErrorStream() : process.getInputStream();
+ br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+ }
+
+ @Override
+ public void run() {
+ try {
+ String line = br.readLine();
+ while (line != null) {
+ output.append(line).append('\n');
+ line = br.readLine();
+ }
+ } catch (IOException ioexception) {
+ return;
+ }
+ }
+ }
+
+ public static HashMap<String, String> executeScript(String process, String[] argv) {
+ Map<String, String> env = new HashMap<String, String>();
+ return executeScript(process, argv, env);
+ }
+
+ public static HashMap<String, String> executeScript(String process,
+ String[] argv, Map<? extends String, ? extends String> env) {
+ HashMap<String, String> returnMap = new HashMap<String, String>();
+ returnMap.put("process", process);
+ GenerateSWF.log.debug("process: " + process);
+ GenerateSWF.log.debug("args: " + Arrays.toString(argv));
+
+ try {
+ returnMap.put("command", Arrays.toString(argv));
+ returnMap.put("out","");
+
+ // By using the process Builder we have access to modify the
+ // environment variables
+ // that is handy to set variables to run it inside eclipse
+ ProcessBuilder pb = new ProcessBuilder(argv);
+ pb.environment().putAll(env);
+
+ Process proc = pb.start();
+
+ // 20-minute timeout for command execution
+ // FFMPEG conversion of Recordings may take a real long time until
+ // its finished
+ long timeout = 60000 * 20;
+
+ StreamWatcher errorWatcher = new StreamWatcher(proc, true);
+ Worker worker = new Worker(proc);
+ StreamWatcher inputWatcher = new StreamWatcher(proc, false);
+ errorWatcher.start();
+ inputWatcher.start();
+ worker.start();
+
+
+ try {
+ worker.join(timeout);
+ if (worker.exitCode != null) {
+ returnMap.put("exitValue", "" + worker.exitCode);
+ GenerateSWF.log.debug("exitVal: " + worker.exitCode);
+ returnMap.put("error", errorWatcher.output.toString());
+ } else {
+ returnMap.put("exception", "timeOut");
+ returnMap.put("error", errorWatcher.output.toString());
+ returnMap.put("exitValue", "-1");
+
+ throw new TimeoutException();
+ }
+ } catch (InterruptedException ex) {
+ worker.interrupt();
+ errorWatcher.interrupt();
+ inputWatcher.interrupt();
+ Thread.currentThread().interrupt();
+
+ returnMap.put("error", ex.getMessage());
+ returnMap.put("exitValue", "-1");
+
+ throw ex;
+ } finally {
+ proc.destroy();
+ }
+
+ } catch (TimeoutException e) {
+ // Timeout exception is processed above
+ GenerateSWF.log.error("executeScript",e);
+ e.printStackTrace();
+ returnMap.put("error", e.getMessage());
+ returnMap.put("exception", e.toString());
+ returnMap.put("exitValue", "-1");
+ } catch (Throwable t) {
+ // Any other exception is shown in debug window
+ GenerateSWF.log.error("executeScript",t);
+ t.printStackTrace();
+ returnMap.put("error", t.getMessage());
+ returnMap.put("exception", t.toString());
+ returnMap.put("exitValue", "-1");
+ }
+
+ return returnMap;
+ }
+
+}
Modified: incubator/openmeetings/trunk/singlewebapp/xdocs/GeneralConfiguration.xml
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/xdocs/GeneralConfiguration.xml?rev=1330162&r1=1330161&r2=1330162&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/xdocs/GeneralConfiguration.xml (original)
+++ incubator/openmeetings/trunk/singlewebapp/xdocs/GeneralConfiguration.xml Wed Apr 25 09:03:45 2012
@@ -84,7 +84,12 @@
<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 1 </td>
<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Set inviter's email address as ReplyTo in email invitations (1 == set, 0 == NOT set) </td>
<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.0.x </td>
-
+ </tr>
+ <tr>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> office.path </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically </td>
+ <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.0.x </td>
</tr>
</table>
</section>