Revision: 3859
Author:   seba.wagner
Date:     Fri Jun 24 08:16:56 2011
Log:      Restructuring File-Service Part 1
http://code.google.com/p/openmeetings/source/detail?r=3859

Added:
/trunk/singlewebapp/src/app/org/openmeetings/app/data/file/FileProcessor.java /trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java
Modified:
/trunk/singlewebapp/WebContent/WEB-INF/red5-services/fileservice.service.xml /trunk/singlewebapp/WebContent/openmeetings/base/components/upload/fileUpload.lzx /trunk/singlewebapp/server/red5/webapps/openmeetings/WEB-INF/red5-services/fileservice.service.xml /trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/FileExplorerUploadHandler.java /trunk/singlewebapp/src/fileservice/org/openmeetings/axis/services/FileService.java

=======================================
--- /dev/null
+++ /trunk/singlewebapp/src/app/org/openmeetings/app/data/file/FileProcessor.java Fri Jun 24 08:16:56 2011
@@ -0,0 +1,226 @@
+package org.openmeetings.app.data.file;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl;
+import org.openmeetings.app.data.flvrecord.converter.FlvExplorerConverter;
+import org.openmeetings.app.documents.GenerateImage;
+import org.openmeetings.app.documents.GeneratePDF;
+import org.openmeetings.app.documents.GenerateThumbs;
+import org.openmeetings.app.hibernate.beans.files.FileExplorerItem;
+import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.utils.StoredFile;
+import org.openmeetings.utils.crypt.MD5;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class FileProcessor {
+
+ private static final Logger log = Red5LoggerFactory.getLogger(FileProcessor.class, ScopeApplicationAdapter.webAppRootKey);
+
+       //Spring loaded Beans
+       private FlvExplorerConverter flvExplorerConverter;
+
+       public FlvExplorerConverter getFlvExplorerConverter() {
+               return flvExplorerConverter;
+       }
+ public void setFlvExplorerConverter(FlvExplorerConverter flvExplorerConverter) {
+               this.flvExplorerConverter = flvExplorerConverter;
+       }
+
+       private static FileProcessor instance;
+
+       private String workingDir = "";
+       private String working_dirppt = "";
+
+       private FileProcessor() {}
+
+       public static synchronized FileProcessor getInstance() {
+               if (instance == null) {
+                       instance = new FileProcessor();
+               }
+               return instance;
+       }
+
+       private void prepareFolderStructure(String current_dir) throws 
Exception {
+
+               this.workingDir = current_dir + "upload" + File.separatorChar
+                                                       + "files" + 
File.separatorChar;
+
+               // System.out.println("IS SYSTEM PROFILE");
+               // Add the Folder for the Room if it does not exist yet
+               File localFolder = new File(workingDir);
+               if (!localFolder.exists()) {
+                   localFolder.mkdir();
+               }
+
+               this.working_dirppt = current_dir + "uploadtemp" + 
File.separatorChar
+                       + "files" + File.separatorChar;
+
+               // add Temp Folder Structure
+               File localFolderppt = new File(working_dirppt);
+               if (!localFolderppt.exists()) {
+                   localFolderppt.mkdir();
+               }
+
+               log.debug("this.workingDir: " + this.workingDir);
+
+       }
+
+ public HashMap<String, HashMap<String, Object>> processFile(Long userId, Long room_id, boolean isOwner, InputStream is, Long parentFolderId, String fileSystemName, String current_dir, Map<String, Object> hs) throws Exception {
+
+ HashMap<String, HashMap<String, Object>> returnError = new HashMap<String, HashMap<String, Object>>();
+
+               HashMap<String, Object> returnAttributes = new HashMap<String, 
Object>();
+        returnAttributes.put("process", "");
+        returnAttributes.put("command", "");
+        returnAttributes.put("exitValue",0);
+        returnAttributes.put("error","");
+
+               //prepare the necessary folders
+               this.prepareFolderStructure(current_dir);
+
+               int dotidx = fileSystemName.lastIndexOf('.');
+
+        // Generate a random string to prevent any problems with
+        // foreign characters and duplicates
+        Date d = new Date();
+        String newFileSystemName = MD5.do_checksum("FILE_" + d.getTime());
+
+ String newFileExtDot = fileSystemName.substring(dotidx, fileSystemName.length()).toLowerCase();
+        String newFileExt = newFileExtDot.substring(1);
+        log.debug("newFileExt: " + newFileExt);
+ StoredFile storedFile = new StoredFile(newFileSystemName, newFileExt);
+
+        // Check variable to see if this file is a presentation
+        // check if this is a a file that can be converted by
+        // openoffice-service
+        boolean canBeConverted = storedFile.isConvertable();
+        boolean isPdf = storedFile.isPdf();
+        boolean isImage = storedFile.isImage();
+        boolean isChart = storedFile.isChart();
+        boolean isAsIs = storedFile.isAsIs();
+        boolean isVideo = storedFile.isVideo();
+
+        String completeName = "";
+        log.debug("isAsIs: " + isAsIs);
+
+        // add outputfolders for profiles
+        // if it is a presenation it will be copied to another place
+        if (!(canBeConverted || isPdf || isImage || isVideo || isAsIs)) {
+            return null;
+        }
+
+        if (isAsIs) {
+            // check if this is a room file or UserProfile
+            completeName = workingDir + newFileSystemName;
+        } else {
+            completeName = working_dirppt + newFileSystemName;
+        }
+        log.debug("writing file to: " + completeName + newFileExtDot);
+
+        returnAttributes.put("completeName", completeName);
+
+ FileOutputStream fos = new FileOutputStream(completeName + newFileExtDot);
+        byte[] buffer = new byte[1024];
+        int len = 0;
+
+        while (len != (-1)) {
+            len = is.read(buffer, 0, 1024);
+            if (len != (-1))
+                fos.write(buffer, 0, len);
+        }
+
+        fos.close();
+        is.close();
+
+        Long ownerId = null;
+        if (parentFolderId == -2) {
+            parentFolderId = 0L;
+            ownerId = userId;
+        }
+        if (isOwner) {
+            ownerId = userId;
+        }
+
+        String fileHashName = newFileSystemName + newFileExtDot;
+        Boolean isPresentation = false;
+        if (canBeConverted || isPdf) {
+            // In case of a presentation the hash is a folder-name
+            fileHashName = newFileSystemName;
+            isPresentation = true;
+        }
+        if (isImage) {
+            fileHashName = newFileSystemName + ".jpg";
+        }
+        if (isVideo) {
+            fileHashName = newFileSystemName + ".flv";
+        }
+
+        FileExplorerItem fileExplorerItem = FileExplorerItemDaoImpl
+                .getInstance().getFileExplorerItemsById(parentFolderId);
+
+        if (fileExplorerItem != null) {
+            if (fileExplorerItem.getIsFolder() == null
+                    || !fileExplorerItem.getIsFolder()) {
+                parentFolderId = 0L;
+            }
+        }
+
+ Long fileExplorerItemId = FileExplorerItemDaoImpl.getInstance().add(
+                fileSystemName, fileHashName, // The Hashname of the file
+ parentFolderId, ownerId, room_id, userId, false, // isFolder
+                isImage, isPresentation, "", false, isChart);
+        log.debug("fileExplorerItemId: " + fileExplorerItemId);
+
+
+        returnAttributes.put("fileExplorerItemId",fileExplorerItemId);
+
+        log.debug("canBeConverted: " + canBeConverted);
+        if (canBeConverted) {
+            // convert to pdf, thumbs, swf and xml-description
+            returnError = GeneratePDF.getInstance().convertPDF(current_dir,
+                    newFileSystemName, newFileExtDot, "files", true,
+                    completeName);
+        } else if (isPdf) {
+            // convert to thumbs, swf and xml-description
+            returnError = GeneratePDF.getInstance().convertPDF(current_dir,
+                    newFileSystemName, newFileExtDot, "files", false,
+                    completeName);
+        } else if (isChart) {
+            log.debug("uploaded chart file");
+        } else if (isImage && !isAsIs) {
+            // convert it to JPG
+            log.debug("##### convert it to JPG: ");
+ returnError = GenerateImage.getInstance().convertImage(current_dir,
+                    newFileSystemName, newFileExtDot, "files",
+                    newFileSystemName, false);
+        } else if (isAsIs) {
+ HashMap<String, Object> processThumb = GenerateThumbs.getInstance() + .generateThumb("_thumb_", current_dir, completeName, 50);
+            returnError.put("processThumb", processThumb);
+        } else if (isVideo) {
+
+            // ApplicationContext context =
+ // WebApplicationContextUtils.getWebApplicationContext(getServletContext());
+
+            // FlvExplorerConverter flvExplorerConverter =
+            // (FlvExplorerConverter)
+            // context.getBean("openmeetings.FlvExplorerConverter");
+
+ this.flvExplorerConverter.startConversion(fileExplorerItemId, completeName + newFileExtDot);
+
+        }
+
+        returnError.put("returnAttributes", returnAttributes);
+
+               return returnError;
+
+       }
+
+}
=======================================
--- /dev/null
+++ /trunk/singlewebapp/src/app/org/openmeetings/app/data/flvrecord/converter/FlvExplorerConverter.java Fri Jun 24 08:16:56 2011
@@ -0,0 +1,157 @@
+package org.openmeetings.app.data.flvrecord.converter;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.openmeetings.app.data.basic.Configurationmanagement;
+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.hibernate.beans.files.FileExplorerItem;
+import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class FlvExplorerConverter {
+
+ private static final Logger log = Red5LoggerFactory.getLogger(FlvExplorerConverter.class);
+
+       //Spring loaded Beans
+       private Configurationmanagement configurationmanagement;
+       private FileExplorerItemDaoImpl fileExplorerItemDaoImpl;
+       private FlvRecordingLogDaoImpl flvRecordingLogDaoImpl;
+
+       public Configurationmanagement getConfigurationmanagement() {
+               return configurationmanagement;
+       }
+       public void setConfigurationmanagement(
+                       Configurationmanagement configurationmanagement) {
+               this.configurationmanagement = configurationmanagement;
+       }
+
+       public FileExplorerItemDaoImpl getFileExplorerItemDaoImpl() {
+               return fileExplorerItemDaoImpl;
+       }
+       public void setFileExplorerItemDaoImpl(
+                       FileExplorerItemDaoImpl fileExplorerItemDaoImpl) {
+               this.fileExplorerItemDaoImpl = fileExplorerItemDaoImpl;
+       }
+
+       public FlvRecordingLogDaoImpl getFlvRecordingLogDaoImpl() {
+               return flvRecordingLogDaoImpl;
+       }
+       public void setFlvRecordingLogDaoImpl(
+                       FlvRecordingLogDaoImpl flvRecordingLogDaoImpl) {
+               this.flvRecordingLogDaoImpl = flvRecordingLogDaoImpl;
+       }
+
+       private String getPathToFFMPEG() {
+               String pathToFFMPEG = this.configurationmanagement.getConfKey(3,
+                               "ffmpeg_path").getConf_value();
+               if (!pathToFFMPEG.equals("") && 
!pathToFFMPEG.endsWith(File.separator)) {
+                       pathToFFMPEG += File.separator;
+               }
+               pathToFFMPEG += "ffmpeg";
+               return pathToFFMPEG;
+       }
+
+       public void startConversion(Long fileExplorerItemId, String moviePath) {
+               try {
+
+ FileExplorerItem fileExplorerItem = this.fileExplorerItemDaoImpl.getFileExplorerItemsById(fileExplorerItemId);
+
+ log.debug("fileExplorerItem " + fileExplorerItem.getFileExplorerItemId());
+
+                       // Strip Audio out of all Audio-FLVs
+                       this.convertToFLV(fileExplorerItem, moviePath);
+
+                       // Add empty pieces at the beginning and end of the wav
+
+               } catch (Exception err) {
+                       log.error("[startConversion]", err);
+               }
+
+       }
+
+ private void convertToFLV(FileExplorerItem fileExplorerItem, String moviePath) {
+               try {
+
+ List<HashMap<String, Object>> returnLog = new LinkedList<HashMap<String, Object>>();
+
+                       String streamFolderName = 
ScopeApplicationAdapter.webAppPath
+                                                                               + 
File.separatorChar + "streams" + File.separatorChar
+                                                                               + 
"hibernate" + File.separatorChar;
+
+ String outputFullFlv = streamFolderName + "UPLOADFLV_" + fileExplorerItem.getFileExplorerItemId() + ".flv";
+
+                       int flvWidth = 300;
+                       int flvHeight = 240;
+
+                       fileExplorerItem.setFlvWidth(flvWidth);
+                       fileExplorerItem.setFlvHeight(flvHeight);
+                       fileExplorerItem.setIsVideo(true);
+
+                       String[] argv_fullFLV = null;
+
+                       argv_fullFLV = new String[] { this.getPathToFFMPEG(), 
"-i",
+                                       moviePath, "-ar", "22050",
+                                       "-acodec", "libmp3lame", "-ab", "32k", 
"-s",
+                                       flvWidth + "x" + flvHeight, "-vcodec", 
"flv",
+                                       outputFullFlv };
+
+                       log.debug("START generateFullFLV ################# ");
+                       String tString = "";
+                       for (int i = 0; i < argv_fullFLV.length; i++) {
+                               tString += argv_fullFLV[i] + " ";
+                               //log.debug(" i " + i + " argv-i " + 
argv_fullFLV[i]);
+                       }
+                       log.debug(tString);
+                       log.debug("END generateFullFLV ################# ");
+
+ returnLog.add(GenerateSWF.executeScript("uploadFLV ID :: "+fileExplorerItem.getFileExplorerItemId(),
+                                       argv_fullFLV));
+
+
+ String hashFileFullNameJPEG = "UPLOADFLV_" + fileExplorerItem.getFileExplorerItemId() + ".jpg";
+                       String outPutJpeg = streamFolderName + 
hashFileFullNameJPEG;
+
+                       fileExplorerItem.setPreviewImage(hashFileFullNameJPEG);
+
+                       String[] argv_previewFLV = new String[] { 
this.getPathToFFMPEG(),
+                                       "-i", outputFullFlv, "-vcodec", "mjpeg", 
"-vframes", "1",
+                                       "-an", "-f", "rawvideo", "-s", flvWidth + 
"x" + flvHeight,
+                                       outPutJpeg };
+
+                       log.debug("START previewFullFLV ################# ");
+                       log.debug(argv_previewFLV.toString());
+                       String kString = "";
+                       for (int i = 0; i < argv_previewFLV.length; i++) {
+                               kString += argv_previewFLV[i] + " ";
+                               //log.debug(" i " + i + " argv-i " + 
argv_previewFLV[i]);
+                       }
+                       log.debug(kString);
+                       log.debug("END previewFullFLV ################# ");
+
+ returnLog.add(GenerateSWF.executeScript("previewUpload ID :: "+fileExplorerItem.getFileExplorerItemId(),
+                                       argv_previewFLV));
+
+                       
this.fileExplorerItemDaoImpl.updateFileOrFolder(fileExplorerItem);
+
+                       for (HashMap<String, Object> returnMap : returnLog) {
+                               this.flvRecordingLogDaoImpl.addFLVRecordingLog(
+                                               "generateFFMPEG", null, 
returnMap);
+                       }
+
+               } catch (Exception err) {
+                       log.error("[convertToFLV]", err);
+               }
+
+       }
+
+}
=======================================
--- /trunk/singlewebapp/WebContent/WEB-INF/red5-services/fileservice.service.xml Sat Jun 11 00:57:08 2011 +++ /trunk/singlewebapp/WebContent/WEB-INF/red5-services/fileservice.service.xml Fri Jun 24 08:16:56 2011
@@ -12,5 +12,21 @@
         class="org.openmeetings.app.remote.ConferenceLibrary" >
<property name="clientListManager" ref="openmeetings.ClientListManager" />
     </bean>
+
+    <bean id="openmeetings.FileProcessor"
+         class="org.openmeetings.app.data.file.FileProcessor">
+ <property name="flvExplorerConverter" ref="openmeetings.FlvExplorerConverter" />
+    </bean>
+
+    <bean id="openmeetings.FlvExplorerConverter"
+ class="org.openmeetings.app.data.flvrecord.converter.FlvExplorerConverter"> + <property name="fileExplorerItemDaoImpl" ref="openmeetings.FileExplorerItemDaoImpl" /> + <property name="configurationmanagement" ref="openmeetings.Configurationmanagement" /> + <property name="flvRecordingLogDaoImpl" ref="openmeetings.FlvRecordingLogDaoImpl" />
+    </bean>
+
+    <bean id="openmeetings.FileExplorerItemDaoImpl"
+        class="org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl">
+    </bean>

 </beans>
=======================================
--- /trunk/singlewebapp/WebContent/openmeetings/base/components/upload/fileUpload.lzx Fri May 7 00:40:45 2010 +++ /trunk/singlewebapp/WebContent/openmeetings/base/components/upload/fileUpload.lzx Fri Jun 24 08:16:56 2011
@@ -72,6 +72,11 @@
                                imageTypes.description = "Documents";
                                allTypes.push(imageTypes);

+                               imageTypes = new Object();
+                imageTypes.extension = "*.avi; *.mov; *.flv; *.mp4";
+                imageTypes.description = "Videos";
+                allTypes.push(imageTypes);
+
                                imageTypes = new Object();
imageTypes.extension = "*.tga; *.xcf; *.wpg; *.ico; *.ttf; *.pcd; *.pcds; *.ps; *.psd; *.tiff; *.bmp; *.svg; *.dpx; *.exr; *.jpg; *.jpeg; *.gif; *.png";
                                imageTypes.description = "Pictures";
=======================================
--- /trunk/singlewebapp/server/red5/webapps/openmeetings/WEB-INF/red5-services/fileservice.service.xml Sat Jun 11 00:57:08 2011 +++ /trunk/singlewebapp/server/red5/webapps/openmeetings/WEB-INF/red5-services/fileservice.service.xml Fri Jun 24 08:16:56 2011
@@ -11,5 +11,22 @@
     <bean id="fileservice.service"
         class="org.openmeetings.app.remote.ConferenceLibrary">
<property name="clientListManager" ref="openmeetings.ClientListManager" />
-    </bean>
+    </bean>
+
+    <bean id="openmeetings.FileProcessor"
+          class="org.openmeetings.app.data.file.FileProcessor">
+ <property name="flvExplorerConverter" ref="openmeetings.FlvExplorerConverter" />
+    </bean>
+
+    <bean id="openmeetings.FlvExplorerConverter"
+ class="org.openmeetings.app.data.flvrecord.converter.FlvExplorerConverter"> + <property name="fileExplorerItemDaoImpl" ref="openmeetings.FileExplorerItemDaoImpl" /> + <property name="configurationmanagement" ref="openmeetings.Configurationmanagement" /> + <property name="flvRecordingLogDaoImpl" ref="openmeetings.FlvRecordingLogDaoImpl" />
+    </bean>
+
+    <bean id="openmeetings.FileExplorerItemDaoImpl"
+        class="org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl">
+    </bean>
+
 </beans>
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java Mon May 30 13:39:45 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java Fri Jun 24 08:16:56 2011
@@ -3008,7 +3008,7 @@
                                                                        if 
(rcl.getPublicSID().equals(publicSID)){
                                                                                
//log.debug("IS EQUAL ");
((IServiceCapableConnection) conn).invoke("newMessageByRoomAndDomain",new Object[] { message }, this); - log.debug("sendMessageWithClientByPublicSID RPC:newMessageByRoomAndDomain"+message); + log.debug("newMessageByRoomAndDomain RPC:newMessageByRoomAndDomain"+message);
                                                                        }
                                                                }
                                                        }
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/FileExplorerUploadHandler.java Mon May 30 13:39:45 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/FileExplorerUploadHandler.java Fri Jun 24 08:16:56 2011
@@ -12,6 +12,7 @@
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;

+import org.openmeetings.app.data.file.FileProcessor;
 import org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl;
 import org.openmeetings.app.documents.GenerateImage;
 import org.openmeetings.app.documents.GeneratePDF;
@@ -22,6 +23,8 @@
 import org.openmeetings.utils.crypt.MD5;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
+import org.springframework.context.ApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;

 public class FileExplorerUploadHandler extends UploadHandler {

@@ -31,17 +34,15 @@

     private static final long serialVersionUID = 2848421357849982426L;

+    @Override
     protected void fileService(HttpServletRequest httpServletRequest,
             String sid, Long userId, Map<String, Object> hs)
             throws ServletException, Exception {

- HashMap<String, HashMap<String, Object>> returnError = new HashMap<String, HashMap<String, Object>>();
-
String room_idAsString = httpServletRequest.getParameter("room_id");
         if (room_idAsString == null) {
             throw new ServletException("Missing Room ID");
         }
-        // String room_id = room_idAsString;

         Long room_id_to_Store = Long.parseLong(room_idAsString);

@@ -61,38 +62,7 @@
         }
         Long parentFolderId = Long.parseLong(parentFolderIdAsString);

-        // String fileSystemName =
-        // httpServletRequest.getParameter("filename");
-        // if (fileSystemName == null || fileSystemName.length() ==
-        // 0) {
-        // throw new Exception("Missing filename");
-        // }
-
-        // Get the current User-Directory
-
         String current_dir = getServletContext().getRealPath("/");
-        String workingDir = current_dir + "upload" + File.separatorChar
-                + "files" + File.separatorChar;
-
-        String working_dirppt = "";
-
-        // System.out.println("IS SYSTEM PROFILE");
-        // Add the Folder for the Room if it does not exist yet
-        File localFolder = new File(workingDir);
-        if (!localFolder.exists()) {
-            localFolder.mkdir();
-        }
-
-        working_dirppt = current_dir + "uploadtemp" + File.separatorChar
-                + "files" + File.separatorChar;
-
-        // add Temp Folder Structure
-        File localFolderppt = new File(working_dirppt);
-        if (!localFolderppt.exists()) {
-            localFolderppt.mkdir();
-        }
-
-        log.debug("workingDir: " + workingDir);

         ServletMultipartRequest upload = new ServletMultipartRequest(
                 httpServletRequest, 104857600 * 5, // max 500 mb
@@ -101,145 +71,22 @@
         String fileSystemName = upload.getBaseFilename("Filedata");
         log.debug("fileSystemName: " + fileSystemName);

-        int dotidx = fileSystemName.lastIndexOf('.');
-
-        // Generate a random string to prevent any problems with
-        // foreign characters and duplicates
-        Date d = new Date();
-        String newFileSystemName = MD5.do_checksum("FILE_" + d.getTime());
-
-        String newFileExtDot = fileSystemName.substring(dotidx,
-                fileSystemName.length()).toLowerCase();
-        String newFileExt = newFileExtDot.substring(1);
-        log.debug("newFileExt: " + newFileExt);
- StoredFile storedFile = new StoredFile(newFileSystemName, newFileExt);
-
-        // Check variable to see if this file is a presentation
-        // check if this is a a file that can be converted by
-        // openoffice-service
-        boolean canBeConverted = storedFile.isConvertable();
-        boolean isPdf = storedFile.isPdf();
-        boolean isImage = storedFile.isImage();
-        boolean isChart = storedFile.isChart();
-        boolean isAsIs = storedFile.isAsIs();
-        boolean isVideo = storedFile.isVideo();
-
-        String completeName = "";
-        log.debug("isAsIs: " + isAsIs);
-
-        // add outputfolders for profiles
-        // if it is a presenation it will be copied to another place
-        if (!(canBeConverted || isPdf || isImage || isVideo || isAsIs)) {
-            return;
-        }
-
-        if (isAsIs) {
-            // check if this is a room file or UserProfile
-            completeName = workingDir + newFileSystemName;
-        } else {
-            completeName = working_dirppt + newFileSystemName;
-        }
-        log.debug("writing file to: " + completeName + newFileExtDot);
-
-        FileOutputStream fos = new FileOutputStream(completeName
-                + newFileExtDot);
-        byte[] buffer = new byte[1024];
-        int len = 0;
-
-        while (len != (-1)) {
-            len = is.read(buffer, 0, 1024);
-            if (len != (-1))
-                fos.write(buffer, 0, len);
-        }
-
-        fos.close();
-        is.close();
-
-        Long ownerId = null;
-        if (parentFolderId == -2) {
-            parentFolderId = 0L;
-            ownerId = userId;
-        }
-        if (isOwner) {
-            ownerId = userId;
-        }
-
-        String fileHashName = newFileSystemName + newFileExtDot;
-        Boolean isPresentation = false;
-        if (canBeConverted || isPdf) {
-            // In case of a presentation the hash is a folder-name
-            fileHashName = newFileSystemName;
-            isPresentation = true;
-        }
-        if (isImage) {
-            fileHashName = newFileSystemName + ".jpg";
-        }
-        if (isVideo) {
-            fileHashName = newFileSystemName + ".flv";
-        }
-
-        FileExplorerItem fileExplorerItem = FileExplorerItemDaoImpl
-                .getInstance().getFileExplorerItemsById(parentFolderId);
-
-        if (fileExplorerItem != null) {
-            if (fileExplorerItem.getIsFolder() == null
-                    || !fileExplorerItem.getIsFolder()) {
-                parentFolderId = 0L;
-            }
-        }
-
- Long fileExplorerItemId = FileExplorerItemDaoImpl.getInstance().add(
-                fileSystemName, fileHashName, // The Hashname of the file
- parentFolderId, ownerId, room_id_to_Store, userId, false, // isFolder
-                isImage, isPresentation, "", false, isChart);
-        log.debug("fileExplorerItemId: " + fileExplorerItemId);
-
-        log.debug("canBeConverted: " + canBeConverted);
-        if (canBeConverted) {
-            // convert to pdf, thumbs, swf and xml-description
-            returnError = GeneratePDF.getInstance().convertPDF(current_dir,
-                    newFileSystemName, newFileExtDot, "files", true,
-                    completeName);
-        } else if (isPdf) {
-            // convert to thumbs, swf and xml-description
-            returnError = GeneratePDF.getInstance().convertPDF(current_dir,
-                    newFileSystemName, newFileExtDot, "files", false,
-                    completeName);
-        } else if (isChart) {
-            log.debug("uploaded chart file");
-        } else if (isImage && !isAsIs) {
-            // convert it to JPG
-            log.debug("##### convert it to JPG: ");
- returnError = GenerateImage.getInstance().convertImage(current_dir,
-                    newFileSystemName, newFileExtDot, "files",
-                    newFileSystemName, false);
-        } else if (isAsIs) {
- HashMap<String, Object> processThumb = GenerateThumbs.getInstance() - .generateThumb("_thumb_", current_dir, completeName, 50);
-            returnError.put("processThumb", processThumb);
-        } else if (isVideo) {
-            // openmeetings.FlvExplorerConverter
-
-            // ApplicationContext context =
- // WebApplicationContextUtils.getWebApplicationContext(getServletContext());
-            //
-            // FlvExplorerConverter flvExplorerConverter =
-            // (FlvExplorerConverter)
-            // context.getBean("openmeetings.FlvExplorerConverter");
-            //
-            // flvExplorerConverter.startConversion(fileExplorerItemId,
-            // completeName + newFileSystemExtName);
-
-        }
-
+ ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
+
+ FileProcessor fileProcessor = (FileProcessor) context.getBean("openmeetings.FileProcessor");
+
+ HashMap<String, HashMap<String, Object>> returnError = fileProcessor.processFile(userId, room_id_to_Store, isOwner, is, parentFolderId, fileSystemName, current_dir, hs);
+
+ HashMap<String, Object> 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", FileExplorerItemDaoImpl.getInstance()
-                .getFileExplorerItemsById(fileExplorerItemId));
+                
.getFileExplorerItemsById(Long.parseLong(returnAttributes.get("fileExplorerItemId").toString())));
         hs.put("error", returnError);
-        hs.put("fileName", completeName);
+        hs.put("fileName", returnAttributes.get("completeName"));

     }

=======================================
--- /trunk/singlewebapp/src/fileservice/org/openmeetings/axis/services/FileService.java Tue May 11 13:54:08 2010 +++ /trunk/singlewebapp/src/fileservice/org/openmeetings/axis/services/FileService.java Fri Jun 24 08:16:56 2011
@@ -22,6 +22,7 @@
         * this Method does not work yet,
         * as the Result has to be rewritten in Objects instead
         * of a LinekdHashMap
+        * @deprecated
         * @param SID
         * @param moduleName
         * @param parentFolder
@@ -48,6 +49,15 @@
                return null;
        }

+       /**
+        * @deprecated
+        * @param SID
+        * @param fileName
+        * @param moduleName
+        * @param parentFolder
+        * @param room_id
+        * @return
+        */
public Boolean deleteFile(String SID, String fileName, String moduleName, String parentFolder, Long room_id){
                try {
return ConferenceLibrary.getInstance().deleteFile(SID, fileName, moduleName, parentFolder, room_id);
@@ -56,6 +66,8 @@
                }
                return null;
        }
+
+       //public addFile(String SID, String url, Long parentFolderId, )

        public TestObject getTestObject(){
                TestObject textO = new TestObject();

--
You received this message because you are subscribed to the Google Groups 
"OpenMeetings developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/openmeetings-dev?hl=en.

Reply via email to