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.