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>