You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by se...@apache.org on 2012/12/13 07:29:15 UTC

svn commit: r1421084 - in /incubator/openmeetings/trunk/singlewebapp: WebContent/src/base/components/ WebContent/src/base/hibernate/ WebContent/src/modules/conference/popups/ WebContent/src/modules/conference/whiteboard/panels/propertypanel/ src/org/ap...

Author: sebawagner
Date: Thu Dec 13 06:29:11 2012
New Revision: 1421084

URL: http://svn.apache.org/viewvc?rev=1421084&view=rev
Log:
OPENMEETINGS-460 Re-factor the converters to write to an object with defined attributes instead of a Map. The Map makes it somehow hard to understand which attributes will be really written to the result list of the converter (and we need to sync the result of the conversion process from the master to the slave via SOAP/REST and Axis2 does not support sending Map values, so we will use only summarizing object)

Added:
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/ConverterProcessResult.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/ConverterProcessResultList.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/UploadCompleteMessage.java
Modified:
    incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/components/resetCombobox.lzx
    incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/hibernate/hibRtmpConnection.lzx
    incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/popups/converterPopup.lzx
    incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/FileWebService.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/file/FileProcessor.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/FlvRecordingLogDao.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/BaseConverter.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvExplorerConverter.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvInterviewConverter.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvRecorderConverter.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/CreateLibraryPresentation.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateImage.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GeneratePDF.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateSWF.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateThumbs.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/ImportController.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/UploadController.java
    incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/ProcessHelper.java

Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/components/resetCombobox.lzx
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/components/resetCombobox.lzx?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/components/resetCombobox.lzx (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/components/resetCombobox.lzx Thu Dec 13 06:29:11 2012
@@ -23,6 +23,10 @@
     <class name="resetCombobox" extends="combobox" editable="false" shownitems="12"
     	   style="componentStyle" itemclassname="labeldTextListItem">
     
+    	<method name="getNumItems">
+    		return this.cblist.getNumItems();
+    	</method>
+    
         <method name="reset" >
             <![CDATA[
                 var currentCount = this.cblist.getNumItems();

Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/hibernate/hibRtmpConnection.lzx
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/hibernate/hibRtmpConnection.lzx?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/hibernate/hibRtmpConnection.lzx (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/hibernate/hibRtmpConnection.lzx Thu Dec 13 06:29:11 2012
@@ -1791,7 +1791,7 @@
                             }
                         }
                         canvas.currentUploadWindow.myFileUpload.onCompleteByRemote(value);
-                        if (error) {
+                        if (value.hasError) {
                             new lz.converterPopup(canvas.main_content._content.inner,{error:value.error});
                         }
                     } else if (value.message=='startStreaming'){

Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/popups/converterPopup.lzx
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/popups/converterPopup.lzx?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/popups/converterPopup.lzx (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/popups/converterPopup.lzx Thu Dec 13 06:29:11 2012
@@ -27,19 +27,12 @@
 	<attribute name="error" value="null" />
     
     <handler name="oninit">
-        var dtString = '';
-        for (var eg in this.error){
-            for (var eg2 in this.error[eg]){
-                dtString += "Name: "+eg2+"\r\n";
-                dtString += "Value: "+this.error[eg][eg2]+"\r\n";
-            }
-        }
-        this.errorView.errorView.setAttribute('text',dtString);
+        this.errorView.errorView.setAttribute('text',this.error);
     </handler>
 
 	<view y="24" width="${ parent.width - 4 }" height="${ parent.height - 30 }" x="2" clip="true" name="errorView">
 		<text y="30" fontsize="10" fontstyle="bold" name="errorView"
-			multiline="true" width="300" selectable="true" />
+			multiline="true" width="${ parent.width - 14 }" selectable="true" />
 		<om_vscrollbar />
 	</view>
 

Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx Thu Dec 13 06:29:11 2012
@@ -120,7 +120,7 @@
         if (objRef.name.indexOf('swf') >= 0) {
             
             this._content._documentsPanel._currentSlideNo.setAttribute("text",objRef.slideNumber);
-            this._content._documentsPanel._zoom.setAttribute("text",objRef.currentzoomFactor);
+            //this._content._documentsPanel._zoom.setAttribute("text",objRef.currentzoomFactor);
             //this._content._fullFit.setValue(objRef.fullFit);
             
         }
@@ -307,6 +307,7 @@
                     parent.currentDocument.selectItemAt(0);
                     parent._clickLayer.setAttribute("visibility","hidden");
                 } else {
+                	parent.currentDocument.clearSelection(); 
                 	parent._clickLayer.setAttribute("visibility","visible");
                 }
             </method>

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/FileWebService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/FileWebService.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/FileWebService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/axis/services/FileWebService.java Thu Dec 13 06:29:11 2012
@@ -23,8 +23,6 @@ import java.io.File;
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLConnection;
-import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 
 import org.apache.axis2.AxisFault;
@@ -38,6 +36,7 @@ import org.apache.openmeetings.data.file
 import org.apache.openmeetings.data.file.dto.LibraryPresentation;
 import org.apache.openmeetings.data.user.Usermanagement;
 import org.apache.openmeetings.documents.LoadLibraryPresentation;
+import org.apache.openmeetings.documents.beans.ConverterProcessResultList;
 import org.apache.openmeetings.persistence.beans.files.FileExplorerItem;
 import org.apache.openmeetings.persistence.beans.user.Users;
 import org.apache.openmeetings.utils.OmFileHelper;
@@ -132,56 +131,24 @@ public class FileWebService {
 				LinkedHashMap<String, Object> hs = new LinkedHashMap<String, Object>();
 				hs.put("user", externalUser);
 
-				HashMap<String, HashMap<String, String>> returnError = fileProcessor
+				ConverterProcessResultList returnError = fileProcessor
 						.processFile(externalUser.getUser_id(), room_id,
 								isOwner, inputstream, parentFolderId,
-								fileSystemName, hs,
+								fileSystemName,
 								externalFileId, externalType);
 
-				HashMap<String, String> returnAttributes = returnError
-						.get("returnAttributes");
-
 				// Flash cannot read the response of an upload
 				// httpServletResponse.getWriter().print(returnError);
 				hs.put("message", "library");
 				hs.put("action", "newFile");
 				hs.put("fileExplorerItem", fileExplorerItemDao
-						.getFileExplorerItemsById(Long
-								.parseLong(returnAttributes.get(
-										"fileExplorerItemId").toString())));
-				hs.put("error", returnError);
-				hs.put("fileName", returnAttributes.get("completeName"));
-
-				FileImportError[] fileImportErrors = new FileImportError[returnError
-						.size()];
-
-				int i = 0;
-				// Axis need Objects or array of objects, Map won't work
-				for (Iterator<String> iter = returnError.keySet().iterator(); iter
-						.hasNext();) {
-
-					HashMap<String, String> returnAttribute = returnError
-							.get(iter.next());
-
-					fileImportErrors[i] = new FileImportError();
-					fileImportErrors[i].setCommand((returnAttribute
-							.get("command") != null) ? returnAttribute.get(
-							"command").toString() : "");
-					fileImportErrors[i]
-							.setError((returnAttribute.get("error") != null) ? returnAttribute
-									.get("error").toString() : "");
-					fileImportErrors[i].setExitValue((returnAttribute
-							.get("exitValue") != null) ? Integer.valueOf(
-							returnAttribute.get("exitValue").toString())
-							.intValue() : 0);
-					fileImportErrors[i].setProcess((returnAttribute
-							.get("process") != null) ? returnAttribute.get(
-							"process").toString() : "");
-
-					i++;
-				}
+						.getFileExplorerItemsById(returnError.getFileExplorerItemId()));
+				hs.put("error", returnError.getLogMessage());
+				hs.put("fileName", returnError.getCompleteName());
+				
+				//FIXME: Send event to UI that there is a new file
 
-				return fileImportErrors;
+				return returnError.convertToFileImportErrors();
 
 			}
 		} catch (Exception err) {
@@ -249,60 +216,28 @@ public class FileWebService {
 				LinkedHashMap<String, Object> hs = new LinkedHashMap<String, Object>();
 				hs.put("user", internalUser);
 
-				HashMap<String, HashMap<String, String>> returnError = fileProcessor
+				ConverterProcessResultList returnError = fileProcessor
 						.processFile(internalUser.getUser_id(), room_id,
 								isOwner, inputstream, parentFolderId,
-								fileSystemName, hs,
+								fileSystemName, 
 								externalFileId, externalType);
 
-				HashMap<String, String> returnAttributes = returnError
-						.get("returnAttributes");
-
 				// Flash cannot read the response of an upload
 				// httpServletResponse.getWriter().print(returnError);
 				hs.put("message", "library");
 				hs.put("action", "newFile");
 				hs.put("fileExplorerItem", fileExplorerItemDao
-						.getFileExplorerItemsById(Long
-								.parseLong(returnAttributes.get(
-										"fileExplorerItemId").toString())));
+						.getFileExplorerItemsById(returnError.getFileExplorerItemId()));
 				hs.put("error", returnError);
-				hs.put("fileName", returnAttributes.get("completeName"));
-
-				FileImportError[] fileImportErrors = new FileImportError[returnError
-						.size()];
-
-				int i = 0;
-				// Axis need Objects or array of objects, Map won't work
-				for (Iterator<String> iter = returnError.keySet().iterator(); iter
-						.hasNext();) {
-
-					HashMap<String, String> returnAttribute = returnError
-							.get(iter.next());
-
-					fileImportErrors[i] = new FileImportError();
-					fileImportErrors[i].setCommand((returnAttribute
-							.get("command") != null) ? returnAttribute.get(
-							"command").toString() : "");
-					fileImportErrors[i]
-							.setError((returnAttribute.get("error") != null) ? returnAttribute
-									.get("error").toString() : "");
-					fileImportErrors[i].setExitValue((returnAttribute
-							.get("exitValue") != null) ? Integer.valueOf(
-							returnAttribute.get("exitValue").toString())
-							.intValue() : 0);
-					fileImportErrors[i].setProcess((returnAttribute
-							.get("process") != null) ? returnAttribute.get(
-							"process").toString() : "");
-
-					i++;
-				}
+				hs.put("fileName", returnError.getCompleteName());
+				
+				//FIXME: Notificate UI of clients of new file
 
-				return fileImportErrors;
+				return returnError.convertToFileImportErrors();
 
 			}
 		} catch (Exception err) {
-			log.error("[importFile]", err);
+			log.error("[importFileByInternalUserId]", err);
 		}
 		return null;
 	}

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/file/FileProcessor.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/file/FileProcessor.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/file/FileProcessor.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/file/FileProcessor.java Thu Dec 13 06:29:11 2012
@@ -21,9 +21,7 @@ package org.apache.openmeetings.data.fil
 import java.io.File;
 import java.io.InputStream;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.commons.transaction.util.FileHelper;
 import org.apache.openmeetings.OpenmeetingsVariables;
@@ -32,6 +30,8 @@ import org.apache.openmeetings.data.flvr
 import org.apache.openmeetings.documents.GenerateImage;
 import org.apache.openmeetings.documents.GeneratePDF;
 import org.apache.openmeetings.documents.GenerateThumbs;
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
+import org.apache.openmeetings.documents.beans.ConverterProcessResultList;
 import org.apache.openmeetings.persistence.beans.files.FileExplorerItem;
 import org.apache.openmeetings.utils.OmFileHelper;
 import org.apache.openmeetings.utils.StoredFile;
@@ -56,18 +56,11 @@ public class FileProcessor {
 	@Autowired
 	private GeneratePDF generatePDF;
 
-	public HashMap<String, HashMap<String, String>> processFile(Long userId, Long room_id, 
+	public ConverterProcessResultList processFile(Long userId, Long room_id, 
 			boolean isOwner, InputStream is, Long parentFolderId, String fileSystemName, 
-			Map<String, Object> hs, Long externalFileId, 
-			String externalType) throws Exception {
+			Long externalFileId, String externalType) throws Exception {
 		
-		HashMap<String, HashMap<String, String>> returnError = new HashMap<String, HashMap<String, String>>();
-		
-		HashMap<String, String> returnAttributes = new HashMap<String, String>();
-        returnAttributes.put("process", "");
-        returnAttributes.put("command", "");
-        returnAttributes.put("exitValue", "0");
-        returnAttributes.put("error","");
+		ConverterProcessResultList returnError = new ConverterProcessResultList();
 		
 		int dotidx = fileSystemName.lastIndexOf('.');
 
@@ -96,8 +89,7 @@ public class FileProcessor {
         // add outputfolders for profiles
         // if it is a presenation it will be copied to another place
         if (!(canBeConverted || isPdf || isImage || isVideo || isAsIs)) {
-        	returnAttributes.put("error","The file type cannot be converted");
-        	returnAttributes.put("exitValue", "-1");
+        	returnError.addItem("wrongType", new ConverterProcessResult("The file type cannot be converted"));
             return returnError;
         }
 
@@ -105,8 +97,6 @@ public class FileProcessor {
         	isAsIs ? OmFileHelper.getUploadFilesDir() : OmFileHelper.getUploadTempFilesDir()
         	, newFileSystemName + newFileExtDot);
         log.debug("writing file to: " + completeName);
-        
-        returnAttributes.put("completeName", completeName.getName());
         FileHelper.copy(is, completeName);
         is.close();
 
@@ -150,7 +140,6 @@ public class FileProcessor {
         log.debug("fileExplorerItemId: " + fileExplorerItemId);
         
         
-        returnAttributes.put("fileExplorerItemId", "" + fileExplorerItemId);
         
         log.debug("canBeConverted: " + canBeConverted);
         if (canBeConverted) {
@@ -167,19 +156,22 @@ public class FileProcessor {
             returnError = generateImage.convertImage(newFileSystemName, newFileExtDot, "files",
                     newFileSystemName, false);
         } else if (isAsIs) {
-            HashMap<String, String> processThumb = generateThumbs.generateThumb("_thumb_", completeName, 50);
-            returnError.put("processThumb", processThumb);
+        	ConverterProcessResult processThumb = generateThumbs.generateThumb("_thumb_", completeName, 50);
+            returnError.addItem("processThumb", processThumb);
         } else if (isVideo) {
-        	List<HashMap<String, String>> returnList = flvExplorerConverter.startConversion(fileExplorerItemId, completeName.getCanonicalPath());
+        	List<ConverterProcessResult> returnList = flvExplorerConverter.startConversion(fileExplorerItemId, completeName.getCanonicalPath());
         	
         	int i=0;
-        	for (HashMap<String, String> returnMap : returnList) {
-        		returnError.put("processFLV "+i, returnMap);
+        	for (ConverterProcessResult returnMap : returnList) {
+        		returnError.addItem("processFLV "+i, returnMap);
         	}
         	
         }
-		
-        returnError.put("returnAttributes", returnAttributes);
+        
+        // has to happen at the end, otherwise it will be overwritten
+        //cause the variable is new initialized
+        returnError.setCompleteName(completeName.getName());
+        returnError.setFileExplorerItemId(fileExplorerItemId);
         
 		return returnError;
 		

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/FlvRecordingLogDao.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/FlvRecordingLogDao.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/FlvRecordingLogDao.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/FlvRecordingLogDao.java Thu Dec 13 06:29:11 2012
@@ -19,14 +19,13 @@
 package org.apache.openmeetings.data.flvrecord;
 
 import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 import javax.persistence.TypedQuery;
 
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
 import org.apache.openmeetings.persistence.beans.flvrecord.FlvRecording;
 import org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingLog;
 import org.red5.logging.Red5LoggerFactory;
@@ -70,25 +69,13 @@ public class FlvRecordingLogDao {
 		}
 	}
 	
-	public Long addFLVRecordingLog(String msgType, FlvRecording flvRecording, HashMap<String, String> returnMap) {
+	public Long addFLVRecordingLog(String msgType, FlvRecording flvRecording, ConverterProcessResult returnMap) {
 		try { 
-			
-			String exitValue = returnMap.get("exitValue").toString();
-			
-			String fullMessage = "";
-			
-			for (Iterator<String> iter = returnMap.keySet().iterator();iter.hasNext();) {
-				String key = iter.next();
-				String value = returnMap.get(key);
-				fullMessage += key + "-" + value + "<br/>";
-			}
-			
 			FlvRecordingLog flvRecordingLog = new FlvRecordingLog();
-			
 			flvRecordingLog.setInserted(new Date());
-			flvRecordingLog.setExitValue(exitValue);
+			flvRecordingLog.setExitValue(returnMap.getExitValue());
 			flvRecordingLog.setFlvRecording(flvRecording);
-			flvRecordingLog.setFullMessage(fullMessage);
+			flvRecordingLog.setFullMessage(returnMap.buildLogMessage());
 			flvRecordingLog.setMsgType(msgType);
 			
 			flvRecordingLog = em.merge(flvRecordingLog);

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/BaseConverter.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/BaseConverter.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/BaseConverter.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/BaseConverter.java Thu Dec 13 06:29:11 2012
@@ -19,7 +19,6 @@
 package org.apache.openmeetings.data.flvrecord.converter;
 
 import java.io.File;
-import java.util.HashMap;
 import java.util.List;
 
 import org.apache.openmeetings.OpenmeetingsVariables;
@@ -27,6 +26,7 @@ import org.apache.openmeetings.data.basi
 import org.apache.openmeetings.data.flvrecord.FlvRecordingMetaDataDao;
 import org.apache.openmeetings.data.flvrecord.FlvRecordingMetaDeltaDao;
 import org.apache.openmeetings.documents.GenerateSWF;
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
 import org.apache.openmeetings.persistence.beans.flvrecord.FlvRecording;
 import org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaData;
 import org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaDelta;
@@ -120,7 +120,7 @@ public abstract class BaseConverter {
 	}
 	
 	protected void stripAudioFirstPass(FlvRecording flvRecording,
-			List<HashMap<String, String>> returnLog,
+			List<ConverterProcessResult> returnLog,
 			List<String> listOfFullWaveFiles, File streamFolder) throws Exception {
 		List<FlvRecordingMetaData> metaDataList = flvRecordingMetaDataDaoImpl
 				.getFlvRecordingMetaDataAudioFlvsByRecording(flvRecording
@@ -129,7 +129,7 @@ public abstract class BaseConverter {
 	}
 	
 	protected void stripAudioFirstPass(FlvRecording flvRecording,
-			List<HashMap<String, String>> returnLog,
+			List<ConverterProcessResult> returnLog,
 			List<String> listOfFullWaveFiles, File streamFolder,
 			List<FlvRecordingMetaData> metaDataList) {
 		try {

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvExplorerConverter.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvExplorerConverter.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvExplorerConverter.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvExplorerConverter.java Thu Dec 13 06:29:11 2012
@@ -19,8 +19,7 @@
 package org.apache.openmeetings.data.flvrecord.converter;
 
 import java.io.File;
-import java.util.HashMap;
-import java.util.LinkedList;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -28,6 +27,7 @@ import java.util.regex.Pattern;
 import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.data.file.dao.FileExplorerItemDao;
 import org.apache.openmeetings.data.flvrecord.FlvRecordingLogDao;
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
 import org.apache.openmeetings.persistence.beans.files.FileExplorerItem;
 import org.apache.openmeetings.utils.ProcessHelper;
 import org.red5.logging.Red5LoggerFactory;
@@ -54,8 +54,8 @@ public class FlvExplorerConverter extend
 		public int height = 0;
 	}
 
-	public List<HashMap<String, String>> startConversion(Long fileExplorerItemId, String moviePath) {
-		List<HashMap<String, String>> returnLog = new LinkedList<HashMap<String, String>>();
+	public List<ConverterProcessResult> startConversion(Long fileExplorerItemId, String moviePath) {
+		List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
 		try {
 
 			FileExplorerItem fileExplorerItem = this.fileExplorerItemDaoImpl
@@ -68,24 +68,20 @@ public class FlvExplorerConverter extend
 			return this.convertToFLV(fileExplorerItem, moviePath);
 
 			// Add empty pieces at the beginning and end of the wav
+			// FIXME: Is this really needed anymore?!
 
 		} catch (Exception err) {
 			log.error("[startConversion]", err);
-			HashMap<String, String> returnMap = new HashMap<String, String>();
-			returnMap.put("process", "startConversion");
-			returnMap.put("error", err.getMessage());
-			returnMap.put("exception", err.toString());
-			returnMap.put("exitValue", "-1");
-			returnLog.add(returnMap);
+			returnLog.add(new ConverterProcessResult("startConversion", err.getMessage(), err));
 		}
 
 		return returnLog;
 
 	}
 
-	private List<HashMap<String, String>> convertToFLV(FileExplorerItem fileExplorerItem,
+	private List<ConverterProcessResult> convertToFLV(FileExplorerItem fileExplorerItem,
 			String moviePath) {
-		List<HashMap<String, String>> returnLog = new LinkedList<HashMap<String, String>>();
+		List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
 		try {
 			String name = "UPLOADFLV_" + fileExplorerItem.getFileExplorerItemId();
 			File outputFullFlv = new File(getStreamFolder(), name + ".flv");
@@ -109,11 +105,11 @@ public class FlvExplorerConverter extend
 			log.debug(tString);
 			log.debug("END generateFullFLV ################# ");
 			
-			HashMap<String, String> returnMapConvertFLV = ProcessHelper.executeScript("uploadFLV ID :: "
+			ConverterProcessResult returnMapConvertFLV = ProcessHelper.executeScript("uploadFLV ID :: "
 					+ fileExplorerItem.getFileExplorerItemId(), argv_fullFLV);
 			
 			//Parse the width height from the FFMPEG output
-			FlvDimension flvDimension = getFlvDimension(returnMapConvertFLV.get("error"));
+			FlvDimension flvDimension = getFlvDimension(returnMapConvertFLV.getError());
 			int flvWidth = flvDimension.width;
 			int flvHeight = flvDimension.height;
 			
@@ -144,14 +140,13 @@ public class FlvExplorerConverter extend
 			log.debug(kString);
 			log.debug("END previewFullFLV ################# ");
 
-			returnLog
-					.add(ProcessHelper.executeScript("previewUpload ID :: "
+			returnLog.add(ProcessHelper.executeScript("previewUpload ID :: "
 							+ fileExplorerItem.getFileExplorerItemId(),
 							argv_previewFLV));
 
 			this.fileExplorerItemDaoImpl.updateFileOrFolder(fileExplorerItem);
 
-			for (HashMap<String, String> returnMap : returnLog) {
+			for (ConverterProcessResult returnMap : returnLog) {
 				this.flvRecordingLogDaoImpl.addFLVRecordingLog(
 						"generateFFMPEG", null, returnMap);
 			}
@@ -160,12 +155,7 @@ public class FlvExplorerConverter extend
 
 		} catch (Exception err) {
 			log.error("[convertToFLV]", err);
-			HashMap<String, String> returnMap = new HashMap<String, String>();
-			returnMap.put("process", "convertToFLV");
-			returnMap.put("error", err.getMessage());
-			returnMap.put("exception", err.toString());
-			returnMap.put("exitValue", "-1");
-			returnLog.add(returnMap);
+			returnLog.add(new ConverterProcessResult("convertToFLV", err.getMessage(), err));
 		}
 
 		return returnLog;

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvInterviewConverter.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvInterviewConverter.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvInterviewConverter.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvInterviewConverter.java Thu Dec 13 06:29:11 2012
@@ -19,7 +19,7 @@
 package org.apache.openmeetings.data.flvrecord.converter;
 
 import java.io.File;
-import java.util.HashMap;
+import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -29,6 +29,7 @@ import org.apache.openmeetings.data.flvr
 import org.apache.openmeetings.data.flvrecord.FlvRecordingLogDao;
 import org.apache.openmeetings.data.flvrecord.FlvRecordingMetaDataDao;
 import org.apache.openmeetings.documents.GenerateThumbs;
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
 import org.apache.openmeetings.persistence.beans.flvrecord.FlvRecording;
 import org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaData;
 import org.apache.openmeetings.utils.ProcessHelper;
@@ -133,7 +134,7 @@ public class FlvInterviewConverter exten
 	}
 	
 	public void stripAudioFromFLVs(FlvRecording flvRecording, boolean reconversion) {
-		List<HashMap<String, String>> returnLog = new LinkedList<HashMap<String, String>>();
+		List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
 		List<String> listOfFullWaveFiles = new LinkedList<String>();
 		File streamFolder = getStreamFolder(flvRecording);
 		List<FlvRecordingMetaData> metaDataList = flvRecordingMetaDataDaoImpl
@@ -539,7 +540,7 @@ public class FlvInterviewConverter exten
 					.deleteFLVRecordingLogByRecordingId(flvRecording
 							.getFlvRecordingId());
 
-			for (HashMap<String, String> returnMap : returnLog) {
+			for (ConverterProcessResult returnMap : returnLog) {
 				flvRecordingLogDaoImpl.addFLVRecordingLog("generateFFMPEG",
 						flvRecording, returnMap);
 			}
@@ -564,7 +565,7 @@ public class FlvInterviewConverter exten
 		}
 	}
 
-	public HashMap<String, String> thumbProcessImageWindows(String file1,
+	public ConverterProcessResult thumbProcessImageWindows(String file1,
 			String file2, String file3) {
 
 		// Init variables
@@ -574,7 +575,7 @@ public class FlvInterviewConverter exten
 		return generateThumbs.processImageWindows(cmd);
 	}
 
-	public HashMap<String, String> processImageWindows(String file1,
+	public ConverterProcessResult processImageWindows(String file1,
 			String file2, String file3) {
 		return ProcessHelper.executeScriptWindows("processImageWindows"
 			, new String[]{getPathToImageMagick(), file1, file2, "+append", file3});

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvRecorderConverter.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvRecorderConverter.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvRecorderConverter.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/converter/FlvRecorderConverter.java Thu Dec 13 06:29:11 2012
@@ -19,7 +19,7 @@
 package org.apache.openmeetings.data.flvrecord.converter;
 
 import java.io.File;
-import java.util.HashMap;
+import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -27,6 +27,7 @@ import org.apache.openmeetings.Openmeeti
 import org.apache.openmeetings.data.flvrecord.FlvRecordingDao;
 import org.apache.openmeetings.data.flvrecord.FlvRecordingLogDao;
 import org.apache.openmeetings.data.flvrecord.FlvRecordingMetaDataDao;
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
 import org.apache.openmeetings.persistence.beans.flvrecord.FlvRecording;
 import org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaData;
 import org.apache.openmeetings.utils.ProcessHelper;
@@ -70,7 +71,7 @@ public class FlvRecorderConverter extend
 	}
 
 	public void stripAudioFromFLVs(FlvRecording flvRecording) {
-		List<HashMap<String, String>> returnLog = new LinkedList<HashMap<String, String>>();
+		List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
 		List<String> listOfFullWaveFiles = new LinkedList<String>();
 		File streamFolder = getStreamFolder(flvRecording);
 		try {
@@ -294,7 +295,7 @@ public class FlvRecorderConverter extend
 
 			this.flvRecordingDaoImpl.updateFlvRecording(flvRecording);
 
-			for (HashMap<String, String> returnMap : returnLog) {
+			for (ConverterProcessResult returnMap : returnLog) {
 				this.flvRecordingLogDaoImpl.addFLVRecordingLog(
 						"generateFFMPEG", flvRecording, returnMap);
 			}

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/CreateLibraryPresentation.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/CreateLibraryPresentation.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/CreateLibraryPresentation.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/CreateLibraryPresentation.java Thu Dec 13 06:29:11 2012
@@ -18,24 +18,23 @@
  */
 package org.apache.openmeetings.documents;
 
-import java.util.HashMap;
 import java.io.File;
-import java.io.FilenameFilter;
 import java.io.FileOutputStream;
+import java.io.FilenameFilter;
+import java.util.Arrays;
 
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
 import org.apache.openmeetings.utils.OmFileHelper;
 import org.dom4j.Document;
 import org.dom4j.DocumentHelper;
 import org.dom4j.Element;
 import org.dom4j.io.XMLWriter;
 
-import java.util.Arrays;
-
 public class CreateLibraryPresentation {
-	public static HashMap<String,String> generateXMLDocument(File targetDirectory, String originalDocument, 
+	public static ConverterProcessResult generateXMLDocument(File targetDirectory, String originalDocument, 
 			String pdfDocument, String swfDocument){
-		HashMap<String,String> returnMap = new HashMap<String,String>();
-		returnMap.put("process", "generateXMLDocument");		
+		ConverterProcessResult returnMap = new ConverterProcessResult();
+		returnMap.setProcess("generateXMLDocument");		
 		try {
 			
 	        Document document = DocumentHelper.createDocument();
@@ -94,13 +93,13 @@ public class CreateLibraryPresentation {
 	        writer.write( document );
 	        writer.close();
 			
-	        returnMap.put("exitValue", "0");
+	        returnMap.setExitValue("0");
 	        
 			return returnMap;
 		} catch (Exception err) {
 			err.printStackTrace();
-			returnMap.put("error", err.getMessage());
-			returnMap.put("exitValue", "-1");
+			returnMap.setError(err.getMessage());
+			returnMap.setExitValue("-1");
 			return returnMap;
 		}
 	}

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateImage.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateImage.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateImage.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateImage.java Thu Dec 13 06:29:11 2012
@@ -20,11 +20,12 @@ package org.apache.openmeetings.document
 
 import java.io.File;
 import java.io.IOException;
-import java.util.HashMap;
 
 import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
 import org.apache.openmeetings.data.user.dao.UsersDao;
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
+import org.apache.openmeetings.documents.beans.ConverterProcessResultList;
 import org.apache.openmeetings.persistence.beans.user.Users;
 import org.apache.openmeetings.utils.OmFileHelper;
 import org.apache.openmeetings.utils.ProcessHelper;
@@ -55,11 +56,11 @@ public class GenerateImage {
 		return pathToImageMagic;
 	}
 
-	public HashMap<String, HashMap<String, String>> convertImage(String fileName, String fileExt,
+	public ConverterProcessResultList convertImage(String fileName, String fileExt,
 			String roomName, String fileNameShort, boolean fullProcessing)
 			throws Exception {
 
-		HashMap<String, HashMap<String, String>> returnMap = new HashMap<String, HashMap<String, String>>();
+		ConverterProcessResultList returnMap = new ConverterProcessResultList();
 
 		File fileFullPath = new File(OmFileHelper.getUploadTempRoomDir(roomName), fileName + fileExt);
 
@@ -67,13 +68,13 @@ public class GenerateImage {
 
 		log.debug("##### convertImage destinationFile: " + destinationFile);
 
-		HashMap<String, String> processJPG = this.convertSingleJpg(
+		ConverterProcessResult processJPG = this.convertSingleJpg(
 				fileFullPath.getCanonicalPath(), destinationFile);
-		HashMap<String, String> processThumb = generateThumbs.generateThumb(
+		ConverterProcessResult processThumb = generateThumbs.generateThumb(
 				"_thumb_", destinationFile, 50);
 
-		returnMap.put("processJPG", processJPG);
-		returnMap.put("processThumb", processThumb);
+		returnMap.addItem("processJPG", processJPG);
+		returnMap.addItem("processThumb", processThumb);
 
 		// Delete old one
 		fileFullPath.delete();
@@ -81,30 +82,30 @@ public class GenerateImage {
 		return returnMap;
 	}
 
-	public HashMap<String, HashMap<String, String>> convertImageUserProfile(String fileName, String fileExt, Long users_id,
+	public ConverterProcessResultList convertImageUserProfile(String fileName, String fileExt, Long users_id,
 			String fileNameShort, boolean fullProcessing) throws Exception {
 
-		HashMap<String, HashMap<String, String>> returnMap = new HashMap<String, HashMap<String, String>>();
+		ConverterProcessResultList returnMap = new ConverterProcessResultList();
 
 		File working_pptdir = OmFileHelper.getUploadTempProfilesUserDir(users_id);
 
 		String fileFullPath = new File(working_pptdir, fileName + fileExt).getCanonicalPath();
 
 		File destinationFile = OmFileHelper.getNewFile(OmFileHelper.getUploadProfilesUserDir(users_id), fileName, ".jpg");
-		HashMap<String, String> processJPG = this.convertSingleJpg(
+		ConverterProcessResult processJPG = this.convertSingleJpg(
 				fileFullPath, destinationFile);
 
-		HashMap<String, String> processThumb1 = generateThumbs.generateThumb(
+		ConverterProcessResult processThumb1 = generateThumbs.generateThumb(
 				"_chat_", destinationFile, 40);
-		HashMap<String, String> processThumb2 = generateThumbs.generateThumb(
+		ConverterProcessResult processThumb2 = generateThumbs.generateThumb(
 				"_profile_", destinationFile, 126);
-		HashMap<String, String> processThumb3 = generateThumbs.generateThumb(
+		ConverterProcessResult processThumb3 = generateThumbs.generateThumb(
 				"_big_", destinationFile, 240);
 
-		returnMap.put("processJPG", processJPG);
-		returnMap.put("processThumb1", processThumb1);
-		returnMap.put("processThumb2", processThumb2);
-		returnMap.put("processThumb3", processThumb3);
+		returnMap.addItem("processJPG", processJPG);
+		returnMap.addItem("processThumb1", processThumb1);
+		returnMap.addItem("processThumb2", processThumb2);
+		returnMap.addItem("processThumb3", processThumb3);
 
 		// Delete old one
 		File fToDelete = new File(fileFullPath);
@@ -127,7 +128,7 @@ public class GenerateImage {
 	 * @throws IOException 
 	 * 
 	 */
-	private HashMap<String, String> convertSingleJpg(String inputFile, File outputfile) throws IOException {
+	private ConverterProcessResult convertSingleJpg(String inputFile, File outputfile) throws IOException {
 		String[] argv = new String[] { getPathToImageMagic(), inputFile, outputfile.getCanonicalPath() };
 
 		// return GenerateSWF.executeScript("convertSingleJpg", argv);
@@ -140,7 +141,7 @@ public class GenerateImage {
 
 	}
 
-	public HashMap<String, String> convertImageByTypeAndSize(String inputFile,
+	public ConverterProcessResult convertImageByTypeAndSize(String inputFile,
 			String outputfile, int width, int height) {
 		String[] argv = new String[] { getPathToImageMagic(), "-size",
 				width + "x" + height, inputFile, outputfile };
@@ -148,7 +149,7 @@ public class GenerateImage {
 				argv);
 	}
 
-	public HashMap<String, String> convertImageByTypeAndSizeAndDepth(
+	public ConverterProcessResult convertImageByTypeAndSizeAndDepth(
 			String inputFile, String outputfile, int width, int height,
 			int depth) {
 		String[] argv = new String[] { getPathToImageMagic(), "-size",

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GeneratePDF.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GeneratePDF.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GeneratePDF.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GeneratePDF.java Thu Dec 13 06:29:11 2012
@@ -21,11 +21,12 @@ package org.apache.openmeetings.document
 import java.io.File;
 import java.io.FilenameFilter;
 import java.util.ArrayList;
-import java.util.HashMap;
 
 import org.apache.commons.transaction.util.FileHelper;
 import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
+import org.apache.openmeetings.documents.beans.ConverterProcessResultList;
 import org.apache.openmeetings.utils.OmFileHelper;
 import org.apache.openmeetings.utils.ProcessHelper;
 import org.red5.logging.Red5LoggerFactory;
@@ -44,38 +45,38 @@ public class GeneratePDF {
 	@Autowired
 	private ConfigurationDao configurationDaoImpl;
 
-	public HashMap<String, HashMap<String, String>> convertPDF(String fileName,
+	public ConverterProcessResultList convertPDF(String fileName,
 			String roomName, boolean fullProcessing, File inFile)
 			throws Exception {
 
 		String inFileName = inFile.getName();
-		HashMap<String, HashMap<String, String>> returnError = new HashMap<String, HashMap<String, String>>();
+		ConverterProcessResultList returnError = new ConverterProcessResultList();
 
 		File fileFullPath = new File(OmFileHelper.getUploadTempRoomDir(roomName), inFileName);
 		File destinationFolder = OmFileHelper.getNewDir(OmFileHelper.getUploadRoomDir(roomName), fileName);
 
 		log.debug("fullProcessing: " + fullProcessing);
 		if (fullProcessing) {
-			HashMap<String, String> processOpenOffice = doJodConvert(
+			ConverterProcessResult processOpenOffice = doJodConvert(
 					fileFullPath, destinationFolder, fileName);
-			returnError.put("processOpenOffice", processOpenOffice);
-			HashMap<String, String> processThumb = generateThumbs
+			returnError.addItem("processOpenOffice", processOpenOffice);
+			ConverterProcessResult processThumb = generateThumbs
 					.generateBatchThumb(new File(destinationFolder, fileName + ".pdf"), destinationFolder, 80, "thumb");
-			returnError.put("processThumb", processThumb);
-			HashMap<String, String> processSWF = generateSWF
+			returnError.addItem("processThumb", processThumb);
+			ConverterProcessResult processSWF = generateSWF
 					.generateSwf(destinationFolder, destinationFolder, fileName);
-			returnError.put("processSWF", processSWF);
+			returnError.addItem("processSWF", processSWF);
 		} else {
 
 			log.debug("-- generateBatchThumb --");
 
-			HashMap<String, String> processThumb = generateThumbs
+			ConverterProcessResult processThumb = generateThumbs
 					.generateBatchThumb(fileFullPath, destinationFolder, 80, "thumb");
-			returnError.put("processThumb", processThumb);
+			returnError.addItem("processThumb", processThumb);
 
-			HashMap<String, String> processSWF = generateSWF.generateSwf(
+			ConverterProcessResult processSWF = generateSWF.generateSwf(
 					fileFullPath.getParentFile(), destinationFolder, fileName);
-			returnError.put("processSWF", processSWF);
+			returnError.addItem("processSWF", processSWF);
 		}
 
 		// now it should be completed so copy that file to the expected location
@@ -84,16 +85,16 @@ public class GeneratePDF {
 		FileHelper.moveRec(inFile, fileWhereToMove);
 
 		if (fullProcessing) {
-			HashMap<String, String> processXML = CreateLibraryPresentation
+			ConverterProcessResult processXML = CreateLibraryPresentation
 					.generateXMLDocument(destinationFolder,
 							inFileName, fileName + ".pdf",
 							fileName + ".swf");
-			returnError.put("processXML", processXML);
+			returnError.addItem("processXML", processXML);
 		} else {
-			HashMap<String, String> processXML = CreateLibraryPresentation
+			ConverterProcessResult processXML = CreateLibraryPresentation
 					.generateXMLDocument(destinationFolder,
 							inFileName, null, fileName + ".swf");
-			returnError.put("processXML", processXML);
+			returnError.addItem("processXML", processXML);
 		}
 
 		return returnError;
@@ -102,7 +103,7 @@ public class GeneratePDF {
 	/**
 	 * Generates PDF using JOD Library (external library)
 	 */
-	public HashMap<String, String> doJodConvert(File fileFullPath, File destinationFolder, String outputfile) {
+	public ConverterProcessResult doJodConvert(File fileFullPath, File destinationFolder, String outputfile) {
 		try {
 
 			String jodPath = configurationDaoImpl.getConfValue("jod.path",
@@ -149,18 +150,10 @@ public class GeneratePDF {
 
 		} catch (Exception ex) {
 			log.error("doJodConvert", ex);
-			return buildErrorMessage("doJodConvert", ex.getMessage(), ex);
+			return new ConverterProcessResult("doJodConvert", ex.getMessage(), ex);
 		}
 	}
 
-	private HashMap<String, String> buildErrorMessage(String process,
-			String error, Exception ex) {
-		HashMap<String, String> returnMap = new HashMap<String, String>();
-		returnMap.put("process", process);
-		returnMap.put("exception", ex.toString());
-		returnMap.put("error", error);
-		returnMap.put("exitValue", "-1");
-		return returnMap;
-	}
+	
 
 }

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateSWF.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateSWF.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateSWF.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateSWF.java Thu Dec 13 06:29:11 2012
@@ -21,11 +21,11 @@ package org.apache.openmeetings.document
 import java.io.File;
 import java.io.IOException;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
 
 import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
 import org.apache.openmeetings.utils.ProcessHelper;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -76,7 +76,7 @@ public class GenerateSWF {
 		return valueForSwfJpegQuality;
 	}
 
-	public HashMap<String, String> generateSwf(File originalFolder, File destinationFolder, String fileNamePure) throws IOException {
+	public ConverterProcessResult generateSwf(File originalFolder, File destinationFolder, String fileNamePure) throws IOException {
 		
 		// Create the Content of the Converter Script (.bat or .sh File)
 		String[] argv = new String[] {
@@ -95,7 +95,7 @@ public class GenerateSWF {
 	/**
 	 * Generates an SWF from the list of files.
 	 */
-	public HashMap<String, String> generateSwfByImages(List<String> images,
+	public ConverterProcessResult generateSwfByImages(List<String> images,
 			String outputfile, int fps) {
 		List<String> argvList = Arrays.asList(new String[] {
 				getPathToSwfTools() + "png2swf" + execExt, "-s", 
@@ -110,7 +110,7 @@ public class GenerateSWF {
 	/**
 	 * Combines a bunch of SWFs into one SWF by concatenate.
 	 */
-	public HashMap<String, String> generateSWFByCombine(List<String> swfs,
+	public ConverterProcessResult generateSWFByCombine(List<String> swfs,
 			String outputswf, int fps) {
 		List<String> argvList = Arrays.asList(new String[] {
 				getPathToSwfTools() + "swfcombine" + execExt, "-s",
@@ -122,7 +122,7 @@ public class GenerateSWF {
 				argvList.toArray(new String[0]));
 	}
 
-	public HashMap<String, String> generateSWFByFFMpeg(String inputWildCard,
+	public ConverterProcessResult generateSWFByFFMpeg(String inputWildCard,
 			String outputswf, int fps, int width, int height) {
 		// FIXME: ffmpeg should be on the system path
 		String[] argv = new String[] { "ffmpeg" + execExt, "-r",

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateThumbs.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateThumbs.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateThumbs.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/GenerateThumbs.java Thu Dec 13 06:29:11 2012
@@ -20,9 +20,9 @@ package org.apache.openmeetings.document
 
 import java.io.File;
 import java.io.IOException;
-import java.util.HashMap;
 
 import org.apache.openmeetings.OpenmeetingsVariables;
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
 import org.apache.openmeetings.utils.ProcessHelper;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -36,7 +36,7 @@ public class GenerateThumbs {
 	@Autowired
 	private GenerateImage generateImage;
 
-	public HashMap<String, String> generateThumb(String pre, File f, Integer thumbSize) throws IOException {
+	public ConverterProcessResult generateThumb(String pre, File f, Integer thumbSize) throws IOException {
 		// Init variables
 		String name = f.getName();
 		File parent = f.getParentFile();
@@ -62,7 +62,7 @@ public class GenerateThumbs {
 		}
 	}
 
-	public HashMap<String, String> decodePDF(String inputfile, String outputfile) {
+	public ConverterProcessResult decodePDF(String inputfile, String outputfile) {
 
 		String[] argv = new String[] { generateImage.getPathToImageMagic(), // FIXME
 				inputfile, outputfile };
@@ -75,7 +75,7 @@ public class GenerateThumbs {
 
 	}
 
-	public HashMap<String, String> generateBatchThumb(File inputfile, File outputpath, Integer thumbSize, String pre) throws IOException {
+	public ConverterProcessResult generateBatchThumb(File inputfile, File outputpath, Integer thumbSize, String pre) throws IOException {
 
 		if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == -1) {
 			String[] argv = new String[] {
@@ -103,7 +103,7 @@ public class GenerateThumbs {
 		}
 	}
 
-	public HashMap<String, String> generateImageBatchByWidth(
+	public ConverterProcessResult generateImageBatchByWidth(
 			String current_dir, String inputfile, String outputpath,
 			Integer thumbWidth, String pre) {
 
@@ -118,7 +118,7 @@ public class GenerateThumbs {
 		}
 	}
 
-	public HashMap<String, String> processImageWindows(String[] args) {
+	public ConverterProcessResult processImageWindows(String[] args) {
 		return ProcessHelper.executeScriptWindows("processImageWindows", args);
 	}
 }

Added: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/ConverterProcessResult.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/ConverterProcessResult.java?rev=1421084&view=auto
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/ConverterProcessResult.java (added)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/ConverterProcessResult.java Thu Dec 13 06:29:11 2012
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.documents.beans;
+
+/**
+ * Object created by each conversion step,
+ * each conversion step that invokes and external tool like ImageMagick is one single 
+ * ConverterProcessMessage
+ * 
+ * if exitValue equals "-1" then there was an issue.
+ * 
+ * @author sebawagner
+ *
+ */
+public class ConverterProcessResult {
+	
+	private String process;
+	private String command;
+	private String exception;
+	private String error;
+	private String exitValue;
+	private String out;
+	
+	public ConverterProcessResult() {
+		
+	}
+	
+	public ConverterProcessResult (String process,
+			String error, Exception ex) {
+		setProcess(process);
+		setException(ex.toString());
+		setError(error);
+		setExitValue("-1");
+	}
+	
+	public ConverterProcessResult(String error) {
+		setError(error);
+		setExitValue("-1");
+	}
+
+	public String getOut() {
+		return out;
+	}
+	public void setOut(String out) {
+		this.out = out;
+	}
+	public String getCommand() {
+		return command;
+	}
+	public void setCommand(String command) {
+		this.command = command;
+	}
+	public String getProcess() {
+		return process;
+	}
+	public void setProcess(String process) {
+		this.process = process;
+	}
+	public String getException() {
+		return exception;
+	}
+	public void setException(String exception) {
+		this.exception = exception;
+	}
+	public String getError() {
+		return error;
+	}
+	public void setError(String error) {
+		this.error = error;
+	}
+	public String getExitValue() {
+		return exitValue;
+	}
+	public void setExitValue(String exitValue) {
+		this.exitValue = exitValue;
+	}
+	
+	public String buildLogMessage() {
+		StringBuilder strBuilder = new StringBuilder();
+		strBuilder.append("process: ");
+		strBuilder.append(getProcess());
+		strBuilder.append("\r\n");
+		strBuilder.append("command; ");
+		strBuilder.append(getCommand());
+		strBuilder.append("\r\n");
+		strBuilder.append("exception: ");
+		strBuilder.append(getException());
+		strBuilder.append("\r\n");
+		strBuilder.append("error: ");
+		strBuilder.append(getError());
+		strBuilder.append("\r\n");
+		strBuilder.append("exitValue: ");
+		strBuilder.append(getException());
+		strBuilder.append("\r\n");
+		strBuilder.append("out: ");
+		strBuilder.append(getOut());
+		strBuilder.append("\r\n");
+		return strBuilder.toString();
+	}
+
+}

Added: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/ConverterProcessResultList.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/ConverterProcessResultList.java?rev=1421084&view=auto
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/ConverterProcessResultList.java (added)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/ConverterProcessResultList.java Thu Dec 13 06:29:11 2012
@@ -0,0 +1,146 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.documents.beans;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.openmeetings.OpenmeetingsVariables;
+import org.apache.openmeetings.axis.services.FileImportError;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * 
+ * Collects all results of conversion jobs
+ * 
+ * @author sebawagner
+ * 
+ */
+public class ConverterProcessResultList {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			ConverterProcessResultList.class,
+			OpenmeetingsVariables.webAppRootKey);
+
+	private Map<String, ConverterProcessResult> jobslist = new HashMap<String, ConverterProcessResult>();
+
+	private Long fileExplorerItemId;
+	private String completeName;
+
+	public Long getFileExplorerItemId() {
+		return fileExplorerItemId;
+	}
+
+	public void setFileExplorerItemId(Long fileExplorerItemId) {
+		this.fileExplorerItemId = fileExplorerItemId;
+	}
+
+	public String getCompleteName() {
+		return completeName;
+	}
+
+	public void setCompleteName(String completeName) {
+		this.completeName = completeName;
+	}
+
+	public ConverterProcessResult addItem(String name,
+			ConverterProcessResult processResult) {
+		if (jobslist.containsKey(name)) {
+			log.error("Duplicate key in jobslist");
+			return null;
+		}
+		return jobslist.put(name, processResult);
+	}
+
+	/**
+	 * returns true if there was an job with exitValue "-1"
+	 * 
+	 * @return
+	 */
+	public boolean hasError() {
+		for (Entry<String, ConverterProcessResult> entry : jobslist.entrySet()) {
+			if (entry.getValue().getExitValue().equals("-1")) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * converts all job results into a human readable format
+	 * 
+	 * @return
+	 */
+	public String getLogMessage() {
+		StringBuilder logMessage = new StringBuilder();
+		for (Entry<String, ConverterProcessResult> entry : jobslist.entrySet()) {
+			logMessage.append("key: ");
+			logMessage.append(entry.getKey());
+			logMessage.append("\r\n");
+			logMessage.append(entry.getValue().buildLogMessage());
+		}
+		return logMessage.toString();
+	}
+
+	/**
+	 * Axis need Objects or array of objects, Map won't work
+	 * 
+	 * @return
+	 */
+	public FileImportError[] convertToFileImportErrors() {
+		FileImportError[] fileImportErrors = new FileImportError[jobslist
+				.size()];
+
+		int i = 0;
+		// Axis need Objects or array of objects, Map won't work
+		for (Iterator<String> iter = jobslist.keySet().iterator(); iter
+				.hasNext();) {
+
+			ConverterProcessResult returnAttribute = jobslist.get(iter
+					.next());
+
+			fileImportErrors[i] = new FileImportError();
+			fileImportErrors[i]
+					.setCommand((returnAttribute.getCommand() != null) ? returnAttribute
+							.getCommand().toString() : "");
+			fileImportErrors[i]
+					.setError((returnAttribute.getError() != null) ? returnAttribute
+							.getError().toString() : "");
+			fileImportErrors[i]
+					.setExitValue((returnAttribute.getExitValue() != null) ? Integer
+							.valueOf(returnAttribute.getExitValue().toString())
+							.intValue() : 0);
+			fileImportErrors[i]
+					.setProcess((returnAttribute.getProcess() != null) ? returnAttribute
+							.getProcess().toString() : "");
+
+			i++;
+		}
+		
+		return fileImportErrors;
+	}
+
+	public int size() {
+		return jobslist.size();
+	}
+
+}

Added: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/UploadCompleteMessage.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/UploadCompleteMessage.java?rev=1421084&view=auto
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/UploadCompleteMessage.java (added)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/documents/beans/UploadCompleteMessage.java Thu Dec 13 06:29:11 2012
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.documents.beans;
+
+import org.apache.openmeetings.persistence.beans.files.FileExplorerItem;
+import org.apache.openmeetings.persistence.beans.user.Users;
+
+/**
+ * Helper bean that is send to client(s) once the servlet has completed the upload
+ * 
+ * @author sebawagner
+ *
+ */
+public class UploadCompleteMessage {
+	
+	private Users user;
+	private String message;
+	private String action;
+	private String error;
+	private boolean hasError = false;
+	private String fileName;
+	private FileExplorerItem fileExplorerItem;
+	
+	public UploadCompleteMessage() {
+	}
+	
+	public UploadCompleteMessage(Users user, String message, String action,
+			String error, String fileName) {
+		super();
+		this.user = user;
+		this.message = message;
+		this.action = action;
+		this.error = error;
+		this.fileName = fileName;
+	}
+
+	public Users getUser() {
+		return user;
+	}
+	public void setUser(Users user) {
+		this.user = user;
+	}
+	public String getMessage() {
+		return message;
+	}
+	public void setMessage(String message) {
+		this.message = message;
+	}
+	public String getAction() {
+		return action;
+	}
+	public void setAction(String action) {
+		this.action = action;
+	}
+	public String getError() {
+		return error;
+	}
+	public void setError(String error) {
+		this.error = error;
+	}
+	public String getFileName() {
+		return fileName;
+	}
+	public void setFileName(String fileName) {
+		this.fileName = fileName;
+	}
+	public boolean isHasError() {
+		return hasError;
+	}
+	public void setHasError(boolean hasError) {
+		this.hasError = hasError;
+	}
+	public FileExplorerItem getFileExplorerItem() {
+		return fileExplorerItem;
+	}
+	public void setFileExplorerItem(FileExplorerItem fileExplorerItem) {
+		this.fileExplorerItem = fileExplorerItem;
+	}
+
+}

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java Thu Dec 13 06:29:11 2012
@@ -44,6 +44,7 @@ import org.apache.openmeetings.data.conf
 import org.apache.openmeetings.data.logs.ConferenceLogDao;
 import org.apache.openmeetings.data.user.Usermanagement;
 import org.apache.openmeetings.data.user.dao.UsersDao;
+import org.apache.openmeetings.documents.beans.UploadCompleteMessage;
 import org.apache.openmeetings.persistence.beans.calendar.Appointment;
 import org.apache.openmeetings.persistence.beans.calendar.MeetingMember;
 import org.apache.openmeetings.persistence.beans.rooms.Rooms;
@@ -2499,6 +2500,21 @@ public class ScopeApplicationAdapter ext
 		}
 		return 1;
 	}
+	
+	public synchronized void sendUploadCompletMessageByPublicSID(UploadCompleteMessage message, String publicSID) {
+		
+		//if the upload is locally, just proceed to the normal function
+		//Search for RoomClient on current server (serverId == null means it will look on the master for the RoomClient)
+		RoomClient currentClient = this.clientListManager
+							.getClientByPublicSID(publicSID, false, null);
+		
+		if (currentClient != null) {
+			sendMessageWithClientByPublicSID(message, publicSID);
+		}
+		
+		//Check if the client is on any slave host
+	}
+	
 
 	public synchronized void sendMessageWithClientByPublicSID(Object message,
 			String publicSID) {

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/BackupImportController.java Thu Dec 13 06:29:11 2012
@@ -27,7 +27,6 @@ import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
@@ -60,7 +59,6 @@ import org.apache.openmeetings.backup.Us
 import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
 import org.apache.openmeetings.data.basic.dao.LdapConfigDao;
 import org.apache.openmeetings.data.basic.dao.OmTimeZoneDao;
-import org.apache.openmeetings.data.basic.dao.ServerDao;
 import org.apache.openmeetings.data.calendar.daos.AppointmentCategoryDao;
 import org.apache.openmeetings.data.calendar.daos.AppointmentDao;
 import org.apache.openmeetings.data.calendar.daos.AppointmentReminderTypDao;
@@ -68,10 +66,8 @@ import org.apache.openmeetings.data.cale
 import org.apache.openmeetings.data.conference.PollManagement;
 import org.apache.openmeetings.data.conference.RoomDAO;
 import org.apache.openmeetings.data.conference.Roommanagement;
-import org.apache.openmeetings.data.conference.dao.RoomModeratorsDao;
 import org.apache.openmeetings.data.file.dao.FileExplorerItemDao;
 import org.apache.openmeetings.data.flvrecord.FlvRecordingDao;
-import org.apache.openmeetings.data.flvrecord.FlvRecordingMetaDataDao;
 import org.apache.openmeetings.data.user.Organisationmanagement;
 import org.apache.openmeetings.data.user.dao.OrganisationDao;
 import org.apache.openmeetings.data.user.dao.PrivateMessageFolderDao;
@@ -79,6 +75,7 @@ import org.apache.openmeetings.data.user
 import org.apache.openmeetings.data.user.dao.StateDao;
 import org.apache.openmeetings.data.user.dao.UserContactsDao;
 import org.apache.openmeetings.data.user.dao.UsersDao;
+import org.apache.openmeetings.documents.beans.UploadCompleteMessage;
 import org.apache.openmeetings.persistence.beans.adresses.Adresses;
 import org.apache.openmeetings.persistence.beans.adresses.States;
 import org.apache.openmeetings.persistence.beans.basic.Configuration;
@@ -158,8 +155,6 @@ public class BackupImportController exte
 	@Autowired
 	private FlvRecordingDao flvRecordingDao;
 	@Autowired
-	private FlvRecordingMetaDataDao flvRecordingMetaDataDao;
-	@Autowired
 	private PrivateMessageFolderDao privateMessageFolderDao;
 	@Autowired
 	private PrivateMessagesDao privateMessagesDao;
@@ -168,8 +163,6 @@ public class BackupImportController exte
 	@Autowired
 	private LdapConfigDao ldapConfigDao;
 	@Autowired
-	private RoomModeratorsDao roomModeratorsDao;
-	@Autowired
 	private FileExplorerItemDao fileExplorerItemDao;
 	@Autowired
 	private UserContactsDao userContactsDao;
@@ -181,8 +174,6 @@ public class BackupImportController exte
 	private ConfigurationDao configurationDao;
 	@Autowired
 	private AsteriskDAOImpl asteriskDAOImpl;
-	@Autowired
-	private ServerDao serverDaoImpl;
 
 	private final HashMap<Long, Long> usersMap = new HashMap<Long, Long>();
 	private final HashMap<Long, Long> organisationsMap = new HashMap<Long, Long>();
@@ -651,15 +642,15 @@ public class BackupImportController exte
 			InputStream is = multipartFile.getInputStream();
 			performImport(is);
 
-			LinkedHashMap<String, Object> hs = new LinkedHashMap<String, Object>();
-			hs.put("user", usersDao.get(info.userId));
-			hs.put("message", "library");
-			hs.put("action", "import");
-			hs.put("error", "");
-			hs.put("fileName", info.filename);
-
-			scopeApplicationAdapter.sendMessageWithClientByPublicSID(
-					hs, info.publicSID);
+			UploadCompleteMessage uploadCompleteMessage = new UploadCompleteMessage(
+						usersDao.get(info.userId),
+						"library", //message
+						"import", //action
+						"", //error
+						info.filename);
+			
+			scopeApplicationAdapter.sendUploadCompletMessageByPublicSID(
+					uploadCompleteMessage, info.publicSID);
 
 		} catch (Exception e) {
 

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/ImportController.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/ImportController.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/ImportController.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/ImportController.java Thu Dec 13 06:29:11 2012
@@ -19,7 +19,6 @@
 package org.apache.openmeetings.servlet.outputhandler;
 
 import java.io.InputStream;
-import java.util.LinkedHashMap;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -27,6 +26,7 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.data.user.dao.UsersDao;
+import org.apache.openmeetings.documents.beans.UploadCompleteMessage;
 import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
 import org.apache.openmeetings.xmlimport.LanguageImport;
 import org.apache.openmeetings.xmlimport.UserImport;
@@ -84,18 +84,20 @@ public class ImportController extends Ab
 
 			log.debug("Return And Close");
 
-			LinkedHashMap<String, Object> hs = new LinkedHashMap<String, Object>();
-			hs.put("user", usersDao.get(info.userId));
-			hs.put("message", "library");
-			hs.put("action", "import");
-
 			log.debug("moduleName.equals(userprofile) ? " + moduleName);
 
 			log.debug("moduleName.equals(userprofile) ! ");
-
-			scopeApplicationAdapter.sendMessageWithClientByPublicSID(hs, 
-					info.publicSID);
-
+			
+			UploadCompleteMessage uploadCompleteMessage = new UploadCompleteMessage(
+					usersDao.get(info.userId),
+					"library", //message
+					"import", //action
+					"", //error
+					info.filename);
+		
+			scopeApplicationAdapter.sendUploadCompletMessageByPublicSID(
+					uploadCompleteMessage, info.publicSID);
+			
 		} catch (Exception er) {
 			log.error("ERROR importing:", er);
 			throw new ServletException(er);

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/UploadController.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/UploadController.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/UploadController.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/UploadController.java Thu Dec 13 06:29:11 2012
@@ -20,9 +20,6 @@ package org.apache.openmeetings.servlet.
 
 import java.io.File;
 import java.io.InputStream;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -38,6 +35,8 @@ import org.apache.openmeetings.data.user
 import org.apache.openmeetings.documents.GenerateImage;
 import org.apache.openmeetings.documents.GeneratePDF;
 import org.apache.openmeetings.documents.GenerateThumbs;
+import org.apache.openmeetings.documents.beans.ConverterProcessResultList;
+import org.apache.openmeetings.documents.beans.UploadCompleteMessage;
 import org.apache.openmeetings.persistence.beans.user.Users;
 import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
 import org.apache.openmeetings.utils.OmFileHelper;
@@ -77,7 +76,6 @@ public class UploadController extends Ab
     public void handleFileUpload(HttpServletRequest request, HttpServletResponse response, HttpSession session) throws ServletException {
     	UploadInfo info = validate(request, false);
     	try {
-	    	LinkedHashMap<String, Object> hs = prepareMessage(info);
 			String room_idAsString = request.getParameter("room_id");
 			if (room_idAsString == null) {
 				throw new ServletException("Missing Room ID");
@@ -105,25 +103,30 @@ public class UploadController extends Ab
 			InputStream is = multipartFile.getInputStream();
 			log.debug("fileSystemName: " + info.filename);
 	
-			HashMap<String, HashMap<String, String>> returnError = fileProcessor
+			ConverterProcessResultList returnError = fileProcessor
 					.processFile(info.userId, room_id_to_Store, isOwner, is,
-							parentFolderId, info.filename, hs, 0L, ""); // externalFilesId,
-																						// externalType
+							parentFolderId, info.filename, 0L, ""); // externalFilesId, externalType
 	
-			HashMap<String, String> returnAttributes = returnError
-					.get("returnAttributes");
+			UploadCompleteMessage uploadCompleteMessage = new UploadCompleteMessage();
+	    	uploadCompleteMessage.setUser(usersDao.get(info.userId));
 	
 			// Flash cannot read the response of an upload
 			// httpServletResponse.getWriter().print(returnError);
-			hs.put("message", "library");
-			hs.put("action", "newFile");
-			hs.put("fileExplorerItem",
+	    	uploadCompleteMessage.setMessage("library");
+	    	uploadCompleteMessage.setAction("newFile");
+	    	uploadCompleteMessage.setFileExplorerItem(
 					fileExplorerItemDao.getFileExplorerItemsById(
-							Long.parseLong(returnAttributes.get(
-									"fileExplorerItemId").toString())));
-			hs.put("error", returnError);
-			hs.put("fileName", returnAttributes.get("completeName"));
-			sendMessage(info, hs);
+							returnError.getFileExplorerItemId()));
+			
+			uploadCompleteMessage.setHasError(returnError.hasError());
+			//we only send the complete log to the client if there is really something 
+			//to show because of an error
+			if (returnError.hasError()) {
+				uploadCompleteMessage.setError(returnError.getLogMessage());
+			}
+			uploadCompleteMessage.setFileName(returnError.getCompleteName());
+			
+			sendMessage(info, uploadCompleteMessage);
 		} catch (ServletException e) {
 			throw e;
 		} catch (Exception e) {
@@ -136,7 +139,7 @@ public class UploadController extends Ab
     public void handleFormUpload(HttpServletRequest request, HttpServletResponse response) throws ServletException {
 		try {
 	    	UploadInfo info = validate(request, false);
-	    	LinkedHashMap<String, Object> hs = prepareMessage(info);
+	    	
 			String room_id = request.getParameter("room_id");
 			if (room_id == null) {
 				room_id = "default";
@@ -158,10 +161,13 @@ public class UploadController extends Ab
 			String fileSystemName = info.filename;
 			fileSystemName = StringUtils.deleteWhitespace(fileSystemName);
 	
+			UploadCompleteMessage uploadCompleteMessage = new UploadCompleteMessage();
+	    	uploadCompleteMessage.setUser(usersDao.get(info.userId));
+			
 			// Flash cannot read the response of an upload
 			// httpServletResponse.getWriter().print(returnError);
-			uploadFile(request, userProfile, info.userId, roomName, is, fileSystemName, hs);
-			sendMessage(info, hs);
+			uploadFile(request, userProfile, info.userId, roomName, is, fileSystemName, uploadCompleteMessage);
+			sendMessage(info, uploadCompleteMessage);
 		} catch (ServletException e) {
 			throw e;
 		} catch (Exception e) {
@@ -170,21 +176,27 @@ public class UploadController extends Ab
 		}
     }
 
-    private LinkedHashMap<String, Object> prepareMessage(UploadInfo info) {
-		LinkedHashMap<String, Object> hs = new LinkedHashMap<String, Object>();
-		hs.put("user", usersDao.get(info.userId));
-		return hs;
-    }
     
-    private void sendMessage(UploadInfo info, LinkedHashMap<String, Object> hs) {
-		scopeApplicationAdapter.sendMessageWithClientByPublicSID(hs,
-				info.publicSID);
+    private void sendMessage(UploadInfo info, UploadCompleteMessage uploadCompleteMessage) {
+    	
+//    	UploadCompleteMessage uploadCompleteMessage = new UploadCompleteMessage(
+//				usersDao.get(info.userId),
+//				"library", //message
+//				"import", //action
+//				"", //error
+//				info.filename);
+	
+		scopeApplicationAdapter.sendUploadCompletMessageByPublicSID(
+				uploadCompleteMessage, info.publicSID);
+    	
+//		scopeApplicationAdapter.sendMessageWithClientByPublicSID(hs,
+//				info.publicSID);
     }
     
 	private void uploadFile(HttpServletRequest request, boolean userProfile, Long userId, String roomName,
-			InputStream is, String fileSystemName, Map<String, Object> hs)
+			InputStream is, String fileSystemName, UploadCompleteMessage uploadCompleteMessage)
 			throws Exception {
-		HashMap<String, HashMap<String, String>> returnError = new HashMap<String, HashMap<String, String>>();
+		ConverterProcessResultList returnError = new ConverterProcessResultList();
 
 		// Check variable to see if this file is a presentation
 		int dotidx = fileSystemName.lastIndexOf('.');
@@ -287,11 +299,11 @@ public class UploadController extends Ab
 				// User Profile Update
 				this.deleteUserProfileFiles(userId);
 				// is UserProfile Picture
-				returnError.put("processThumb1", generateThumbs
+				returnError.addItem("processThumb1", generateThumbs
 						.generateThumb("_chat_", completeName, 40));
-				returnError.put("processThumb2", generateThumbs
+				returnError.addItem("processThumb2", generateThumbs
 						.generateThumb("_profile_", completeName, 126));
-				returnError.put("processThumb3", generateThumbs
+				returnError.addItem("processThumb3", generateThumbs
 						.generateThumb("_big_", completeName, 240));
 
 				String pictureuri = completeName.getName();
@@ -302,16 +314,23 @@ public class UploadController extends Ab
 
 				//FIXME: After updating the picture url all other users should refresh
 			} else {
-				HashMap<String, String> processThumb = generateThumbs
-						.generateThumb("_thumb_", completeName, 50);
-				returnError.put("processThumb", processThumb);
+				returnError.addItem("processThumb", generateThumbs
+						.generateThumb("_thumb_", completeName, 50));
 			}
 		}
 
-		hs.put("message", "library");
-		hs.put("action", "newFile");
-		hs.put("error", returnError);
-		hs.put("fileName", completeName.getName());
+		uploadCompleteMessage.setMessage("library");
+		uploadCompleteMessage.setAction("newFile");
+		
+		uploadCompleteMessage.setHasError(returnError.hasError());
+		
+		//we only send the complete log to the client if there is really something 
+		//to show because of an error
+		if (returnError.hasError()) {
+			uploadCompleteMessage.setError(returnError.getLogMessage());
+		}
+		uploadCompleteMessage.setFileName(completeName.getName());
+		
 	}
 
 	private void deleteUserProfileFilesStoreTemp(Long users_id) throws Exception {

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/ProcessHelper.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/ProcessHelper.java?rev=1421084&r1=1421083&r2=1421084&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/ProcessHelper.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/utils/ProcessHelper.java Thu Dec 13 06:29:11 2012
@@ -29,6 +29,7 @@ import java.util.Map;
 import java.util.concurrent.TimeoutException;
 
 import org.apache.openmeetings.OpenmeetingsVariables;
+import org.apache.openmeetings.documents.beans.ConverterProcessResult;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
@@ -78,39 +79,35 @@ public class ProcessHelper {
 		}
 	}
 
-	public static HashMap<String, String> executeScriptWindows(String process, String[] argv) {
-		HashMap<String, String> returnMap = new HashMap<String, String>();
-		returnMap.put("process", process);
+	public static ConverterProcessResult executeScriptWindows(String process, String[] argv) {
 		try {
 			String[] cmd = new String[argv.length + 2];
 			cmd[0] = "cmd.exe";
 			cmd[1] = "/C";
 			System.arraycopy(argv, 0, cmd, 2, argv.length);
 			Map<String, String> env = new HashMap<String, String>();
-			returnMap = executeScript(process, cmd, env);
-		} catch (Throwable t) {
+			return executeScript(process, cmd, env);
+		} catch (Exception t) {
 			log.error("executeScriptWindows", t);
-			returnMap.put("error", t.getMessage());
-			returnMap.put("exitValue", "-1");
+			return new ConverterProcessResult(process, t.getMessage(), t);
 		}
-		return returnMap;
 	}
 	
-	public static HashMap<String, String> executeScript(String process, String[] argv) {
+	public static ConverterProcessResult 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,
+	public static ConverterProcessResult executeScript(String process,
 			String[] argv, Map<? extends String, ? extends String> env) {
-		HashMap<String, String> returnMap = new HashMap<String, String>();
-		returnMap.put("process", process);
+		ConverterProcessResult returnMap = new ConverterProcessResult();
+		returnMap.setProcess(process);
 		log.debug("process: " + process);
 		log.debug("args: " + Arrays.toString(argv));
 	
 		try {
-			returnMap.put("command", Arrays.toString(argv));
-			returnMap.put("out","");
+			returnMap.setCommand(Arrays.toString(argv));
+			returnMap.setOut("");
 	
 			// By using the process Builder we have access to modify the
 			// environment variables
@@ -135,13 +132,13 @@ public class ProcessHelper {
 			try {
 				worker.join(timeout);
 				if (worker.exitCode != null) {
-					returnMap.put("exitValue", "" + worker.exitCode);
+					returnMap.setExitValue(""+worker.exitCode);
 					log.debug("exitVal: " + worker.exitCode);
-					returnMap.put("error", errorWatcher.output.toString());
+					returnMap.setError(errorWatcher.output.toString());
 				} else {
-					returnMap.put("exception", "timeOut");
-					returnMap.put("error", errorWatcher.output.toString());
-					returnMap.put("exitValue", "-1");
+					returnMap.setException("timeOut");
+					returnMap.setError(errorWatcher.output.toString());
+					returnMap.setExitValue("-1");
 	
 					throw new TimeoutException();
 				}
@@ -151,8 +148,8 @@ public class ProcessHelper {
 				inputWatcher.interrupt();
 				Thread.currentThread().interrupt();
 	
-				returnMap.put("error", ex.getMessage());
-				returnMap.put("exitValue", "-1");
+				returnMap.setError(ex.getMessage());
+				returnMap.setExitValue("-1");
 	
 				throw ex;
 			} finally {
@@ -162,15 +159,15 @@ public class ProcessHelper {
 		} catch (TimeoutException e) {
 			// Timeout exception is processed above
 			log.error("executeScript",e);
-			returnMap.put("error", e.getMessage());
-			returnMap.put("exception", e.toString());
-			returnMap.put("exitValue", "-1");
+			returnMap.setError(e.getMessage());
+			returnMap.setException(e.toString());
+			returnMap.setExitValue("-1");
 		} catch (Throwable t) {
 			// Any other exception is shown in debug window
 			log.error("executeScript",t);
-			returnMap.put("error", t.getMessage());
-			returnMap.put("exception", t.toString());
-			returnMap.put("exitValue", "-1");
+			returnMap.setError(t.getMessage());
+			returnMap.setException(t.toString());
+			returnMap.setExitValue("-1");
 		}
 		
 		return returnMap;