You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2015/11/30 12:06:10 UTC
svn commit: r1717228 - in /openmeetings:
branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/
branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/
branches/3.1.x/openmeetings-core/sr...
Author: solomax
Date: Mon Nov 30 11:06:09 2015
New Revision: 1717228
URL: http://svn.apache.org/viewvc?rev=1717228&view=rev
Log:
[OPENMEETINGS-1279] file upload somehow works, need more testing and better error handling
Removed:
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/servlet/outputhandler/AbstractUploadController.java
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/servlet/outputhandler/UploadController.java
openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/UploadCompleteMessage.java
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/servlet/outputhandler/AbstractUploadController.java
openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/UploadCompleteMessage.java
Modified:
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/components/upload/uploadWindowExplorer.lzx
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx
openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx
openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/web.xml
openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
Modified: openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java Mon Nov 30 11:06:09 2015
@@ -18,7 +18,10 @@
*/
package org.apache.openmeetings.core.data.file;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadFilesDir;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadTempFilesDir;
import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import java.io.File;
import java.io.InputStream;
@@ -33,8 +36,6 @@ import org.apache.openmeetings.core.docu
import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
import org.apache.openmeetings.db.entity.file.FileExplorerItem;
import org.apache.openmeetings.db.entity.file.FileItem.Type;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
import org.apache.openmeetings.util.StoredFile;
import org.apache.openmeetings.util.crypt.MD5;
import org.apache.openmeetings.util.process.ConverterProcessResult;
@@ -44,8 +45,7 @@ import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
public class FileProcessor {
-
- private static final Logger log = Red5LoggerFactory.getLogger(FileProcessor.class, OpenmeetingsVariables.webAppRootKey);
+ private static final Logger log = Red5LoggerFactory.getLogger(FileProcessor.class, webAppRootKey);
//Spring loaded Beans
@Autowired
@@ -59,124 +59,93 @@ public class FileProcessor {
@Autowired
private GeneratePDF generatePDF;
- public ConverterProcessResultList processFile(Long userId, Long roomId,
- boolean isOwner, InputStream is, Long parentFolderId, String fileSystemName,
- String externalFileId, String externalType) throws Exception {
-
+ //FIXME TODO this method need to be refactored to throw exceptions
+ public ConverterProcessResultList processFile(Long userId, FileExplorerItem f, InputStream is) throws Exception {
ConverterProcessResultList returnError = new ConverterProcessResultList();
- int dotidx = fileSystemName.lastIndexOf('.');
+ int dotidx = f.getName().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();
-
- 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)) {
- returnError.addItem("wrongType", new ConverterProcessResult("The file type cannot be converted"));
- return returnError;
- }
-
- File completeName = new File(
- isAsIs ? OmFileHelper.getUploadFilesDir() : OmFileHelper.getUploadTempFilesDir()
- , newFileSystemName + newFileExtDot);
- log.debug("writing file to: " + completeName);
- FileHelper.copy(is, completeName);
- 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 = fileExplorerItemDao.get(parentFolderId);
-
- if (fileExplorerItem != null) {
- if (Type.Folder != fileExplorerItem.getType()) {
- parentFolderId = 0L;
- }
- }
-
- Long fileId = fileExplorerItemDao.add(
- fileSystemName, fileHashName, // The Hashname of the file
- parentFolderId, ownerId, roomId, userId, false, // isFolder
- isImage, isPresentation, "", false, isChart,
- externalFileId, externalType);
- log.debug("fileId: " + fileId);
-
-
-
- log.debug("canBeConverted: " + canBeConverted);
- if (canBeConverted) {
- // convert to pdf, thumbs, swf and xml-description
- returnError = generatePDF.convertPDF(newFileSystemName, "files", true, completeName);
- } else if (isPdf) {
- // convert to thumbs, swf and xml-description
- returnError = generatePDF.convertPDF(newFileSystemName, "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.convertImage(newFileSystemName, newFileExtDot, "files",
- newFileSystemName, false);
- } else if (isAsIs) {
- ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, completeName, 50);
- returnError.addItem("processThumb", processThumb);
- } else if (isVideo) {
- List<ConverterProcessResult> returnList = flvExplorerConverter.startConversion(fileId, completeName.getCanonicalPath());
-
- int i=0;
- for (ConverterProcessResult returnMap : returnList) {
- returnError.addItem("processFLV "+i, returnMap);
- }
-
- }
-
- // has to happen at the end, otherwise it will be overwritten
- //cause the variable is new initialized
- returnError.setCompleteName(completeName.getName());
- returnError.setFileExplorerItemId(fileId);
-
- return returnError;
+ // Generate a random string to prevent any problems with
+ // foreign characters and duplicates
+ String newName = MD5.do_checksum("FILE_" + new Date().getTime());
+
+ String extDot = f.getName().substring(dotidx, f.getName().length()).toLowerCase();
+ String ext = extDot.substring(1);
+ log.debug("file extension: " + ext);
+ StoredFile storedFile = new StoredFile(newName, ext);
+
+ // 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();
+
+ 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)) {
+ returnError.addItem("wrongType", new ConverterProcessResult("The file type cannot be converted"));
+ return returnError;
+ }
+
+ File completeName = new File(isAsIs ? getUploadFilesDir() : getUploadTempFilesDir(), newName + extDot);
+ log.debug("writing file to: " + completeName);
+ FileHelper.copy(is, completeName);
+ is.close();
+
+ String hash = newName + extDot;
+ if (isImage) {
+ hash = newName + ".jpg";
+ f.setType(Type.Image);
+ } else if (isVideo) {
+ hash = newName + ".flv";
+ f.setType(Type.Video);
+ } else if (isChart) {
+ f.setType(Type.PollChart);
+ } else if (isPdf || canBeConverted) {
+ hash = newName;
+ f.setType(Type.Presentation);
+ }
+ f.setHash(hash);
+
+ f = fileExplorerItemDao.update(f);
+ log.debug("fileId: " + f.getId());
+ log.debug("canBeConverted: " + canBeConverted);
+ if (canBeConverted) {
+ // convert to pdf, thumbs, swf and xml-description
+ returnError = generatePDF.convertPDF(newName, "files", true, completeName);
+ } else if (isPdf) {
+ // convert to thumbs, swf and xml-description
+ returnError = generatePDF.convertPDF(newName, "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.convertImage(newName, extDot, "files", newName, false);
+ } else if (isAsIs) {
+ ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, completeName, 50);
+ returnError.addItem("processThumb", processThumb);
+ } else if (isVideo) {
+ List<ConverterProcessResult> returnList = flvExplorerConverter.startConversion(f.getId(), completeName.getCanonicalPath());
+
+ int i = 0;
+ for (ConverterProcessResult returnMap : returnList) {
+ returnError.addItem("processFLV " + i, returnMap);
+ }
+ }
+
+ // has to happen at the end, otherwise it will be overwritten
+ //cause the variable is new initialized
+ returnError.setCompleteName(completeName.getName());
+ returnError.setFileExplorerItemId(f.getId());
+
+ return returnError;
}
-
}
Modified: openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Mon Nov 30 11:06:09 2015
@@ -62,7 +62,6 @@ import org.apache.openmeetings.util.Init
import org.apache.openmeetings.util.OmFileHelper;
import org.apache.openmeetings.util.OpenmeetingsVariables;
import org.apache.openmeetings.util.Version;
-import org.apache.openmeetings.util.process.UploadCompleteMessage;
import org.red5.logging.Red5LoggerFactory;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IClient;
@@ -1909,24 +1908,6 @@ public class ScopeApplicationAdapter ext
return 1;
}
- public synchronized void sendUploadCompletMessageByPublicSID(UploadCompleteMessage message, String publicSID) {
- try {
- //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)
- Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
-
- if (currentClient != null) {
- sendMessageWithClientByPublicSID(message, publicSID);
- } else {
- throw new Exception("Could not Find RoomClient on List publicSID: "+ publicSID);
- }
-
- } catch (Exception err) {
- log.error("[sendUploadCompletMessageByPublicSID] ", err);
- }
- }
-
-
public synchronized void sendMessageWithClientByPublicSID(Object message, String publicSID) {
try {
// ApplicationContext appCtx = getContext().getApplicationContext();
Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/components/upload/uploadWindowExplorer.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/components/upload/uploadWindowExplorer.lzx?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/components/upload/uploadWindowExplorer.lzx (original)
+++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/components/upload/uploadWindowExplorer.lzx Mon Nov 30 11:06:09 2015
@@ -50,34 +50,14 @@
</handler>
<method name="remoteComplete" args="tArrayValueObj">
+ if ($debug) Debug.write("remoteComplete ", tArrayValueObj);
+ this.progressBar.setValue(100);
+ this.upload.setAttribute('enabled', false);
+ this.upload.setAttribute("visible", false);
+ this.browse.setAttribute("visible", false);
+ this.txtFile.setAttribute("visible", false);
- if ($debug) Debug.write("onCompleteByRemote ",tArrayValueObj);
- this.parent.progressBar.setValue(100);
- this.parent.upload.setAttribute('enabled', false);
- this.parent.upload.setAttribute("visible",false);
- this.parent.browse.setAttribute("visible",false);
- this.parent.txtFile.setAttribute("visible",false);
-
- if (this.isOnlyZip) {
- this.parent.close();
- return;
- }
-
- if (this.isOnlyXml) {
- parent.returnObj.sendRefresh();
- this.parent.close();
- return;
- }
-
- if (this.isOnlyProfile) {
- parent.returnObj.sendRefresh();
- this.parent.close();
- return;
- }
-
- if (parent._loadToWhiteboard.getValue()) {
-
- if ($debug) Debug.write(tArrayValueObj);
+ if (this._loadToWhiteboard.getValue()) {
if (tArrayValueObj.isPresentation) {
var url = this.formatURL(tArrayValueObj.fileHash);
@@ -90,13 +70,12 @@
tArrayValueObj.fileSystemName);
} else if (tArrayValueObj.isImage) {
canvas._drawarea.parent.parent.clearAreaAndAddImage(this.generateFileLink(tArrayValueObj.fileHash),0,0,
- canvas.getUrl() +'DownloadHandler',
- tArrayValueObj.fileHash,"videoconf1","/","files",hib.conferencedomain);
+ canvas.getUrl() +'DownloadHandler',
+ tArrayValueObj.fileHash,"videoconf1","/","files",hib.conferencedomain);
}
}
if (parent.isdefaultreturn) {
-
var tempSendArray = new Array ();
tempSendArray[0] = 'fileslist';
var nowTime = new Date();
@@ -117,7 +96,7 @@
parent.fileExplorerRef.onClose.sendEvent();
}
- parent.close();
+ close();
</method>
<method name="cancelHandler" args="evt">
@@ -149,17 +128,17 @@
</method>
<method name="errorHandler" args="evt">
- <![CDATA[
- if ($debug) Debug.write('errorHandler invoked: ', evt);
- new lz.errorPopup(canvas, {error: 'HTTP-ERROR: ' + evt});
- this.close();
- var now = new Date();
- var datumsString = now.getHours() + ':' + now.getMinutes();
- var msg = ['fileslist', now.getHours() + ':' + now.getMinutes(), 'newfile', canvas.currentuser];
- //if ($debug) Debug.write("send: ", msg);
- canvas.objMessage = msg;
- canvas.thishib.sendMessage.doCall();
- ]]>
+ <![CDATA[
+ if ($debug) Debug.write('errorHandler invoked: ', evt);
+ new lz.errorPopup(canvas, {error: 'HTTP-ERROR: ' + evt});
+ this.close();
+ var now = new Date();
+ var datumsString = now.getHours() + ':' + now.getMinutes();
+ var msg = ['fileslist', now.getHours() + ':' + now.getMinutes(), 'newfile', canvas.currentuser];
+ //if ($debug) Debug.write("send: ", msg);
+ canvas.objMessage = msg;
+ canvas.thishib.sendMessage.doCall();
+ ]]>
</method>
<method name="selectHandler" args="evt">
@@ -204,20 +183,101 @@
<simpleLabelButton name="upload" x="10" y="120" labelid="593" width="250" enabled="false" height="20">
<handler name="onclick">
<![CDATA[
- //canvas.currentFileExplorer.createFile(parent.fileReference.name, parent.fileReference.data, this, /*FIXME TODO fileObj*/);
- //FIXME TODO canvas.currentFileExplorer
- if ($debug) Debug.write("bytes???: ", parent.fileReference.data, canvas.currentFileExplorer.getSelectedFolder(), canvas.currentFileExplorer);
+ if ($debug) Debug.write("Upload of new file", parent.fileReference.name);
+ parent.progressBar.setAttribute('visible', false);
+ parent.upload.setAttribute('enabled', false);
+ parent.browse.setAttribute('enabled', false);
+ parent.progress2.startShowing();
+ var fold = canvas.currentFileExplorer.getSelectedFolder();
+ canvas.currentFileExplorer.createFile(
+ parent.fileReference.name
+ , parent.fileReference.data
+ , parent
+ , {
+ parentId: fold.fileId
+ , name: parent.fileReference.name
+ , roomId: fold.roomId
+ , ownerId: fold.ownerId
+ , type: 'Image' //dummy, will be rewritten
+ }
+ );
+ //if ($debug) Debug.write("bytes???: ", parent.fileReference.data, canvas.currentFileExplorer.getSelectedFolder(), canvas.currentFileExplorer);
]]>
</handler>
</simpleLabelButton>
+ <method name="createFileComplete" args="event">
+ if ($debug) Debug.write("createFileComplete::File has been created!!!!");
+ //FIXME TODO remove remoteComplete!!!!!
+
+ if ($debug) Debug.write("createFileComplete::0");
+ this.upload.setAttribute("visible", false);
+ this.browse.setAttribute("visible", false);
+ this.txtFile.setAttribute("visible", false);
+
+ if ($debug) Debug.write("createFileComplete::1");
+ var o = JSON.parse(event.target.data);
+ var f = o.fileExplorerItemDTO;
+ if ($debug) Debug.write("createFileComplete::2", f);
+ if (this._loadToWhiteboard.getValue()) {
+ if ($debug) Debug.write("createFileComplete::3");
+ if (f.type == 'Presentation') {
+ var url = this.formatURL(f.hash);
+
+ var uploadmoduleimgfolderVar = '/' + f.hash;
+
+ if ($debug) Debug.write(url);
+
+ if ($debug) Debug.write("createFileComplete::4");
+ canvas._drawarea.loadSWFPresentationSynced(url, f.hash + ".swf",
+ "videoconf1",uploadmoduleimgfolderVar,"files",hib.conferencedomain,1,
+ f.name);
+ } else if (f.type == 'Image') {
+ if ($debug) Debug.write("createFileComplete::5");
+ canvas._drawarea.parent.parent.clearAreaAndAddImage(this.generateFileLink(f.hash),0,0,
+ canvas.getUrl() +'DownloadHandler',
+ f.hash,"videoconf1","/","files",hib.conferencedomain);
+ }
+ }
+
+ if ($debug) Debug.write("createFileComplete::6");
+ /*
+ FIXME TODO investigate this
+ if (parent.isdefaultreturn) {
+ var tempSendArray = new Array ();
+ tempSendArray[0] = 'fileslist';
+ var nowTime = new Date();
+ var datumsString = nowTime.getHours()+':'+nowTime.getMinutes();
+ tempSendArray[1] = datumsString;
+ //if ($debug) Debug.write("Setting Message");
+ tempSendArray[2] = 'newfile';
+ tempSendArray[3] = canvas.currentusename;
+ //if ($debug) Debug.write("send: ",tempSendArray);
+ canvas.objMessage = tempSendArray;
+ canvas.thishib.sendMessageAll.doCall();
+ } else {
+ //FIXME TODO refresh !!! parent.returnObj.sendRefresh();
+ }
+ */
+
+ if ($debug) Debug.write("createFileComplete::7");
+ this.close();
+ if ($debug) Debug.write("createFileComplete::8");
+ </method>
+
+ <method name="createFileError" args="event">
+ if ($debug) Debug.error("Error while creating the file!!!!");
+ //FIXME TODO check this
+ new lz.converterPopup(canvas.main_content._content.inner, {error: event});
+ </method>
+
<view name="progress2" x="10" y="158" width="250" visibility="hidden" height="10" bgcolor="#C6CEDF">
<attribute name="isStarted" value="false" type="boolean" />
<method name="startShowing">
if (!this.isStarted) {
this.isStarted = true;
this.status._hide.setAttribute('started', true);
- this.setAttribute("visibility","visible");
+ this.setAttribute("visibility", "visible");
} else {
return;
}
Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx (original)
+++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx Mon Nov 30 11:06:09 2015
@@ -1472,24 +1472,10 @@
} else if (value.message=='desktop'){
canvas._drawarea.incomingScreenSharing(value);
} else if (value.message=='library'){
-
if (value.action == 'import') {
- canvas.currentUploadWindow.onCompleteByRemote(value);
+ canvas.currentUploadWindow.remoteComplete(value);
return;
}
-
- var error = false;
- for (var eg in value.error){
- if (value.error[eg].exitValue!=0){
- if ($debug) Debug.write("eg ",eg," value ",value.error[eg]);
- if ($debug) Debug.write("eg ",eg," value ",value.error[eg].exitValue);
- error = true;
- }
- }
- canvas.currentUploadWindow.onCompleteByRemote(value);
- if (value.hasError) {
- new lz.converterPopup(canvas.main_content._content.inner,{error:value.error});
- }
} else if (value.message=='startStreaming'){
canvas._drawarea.startStreaming(value);
} else if (value.message=='stopStreaming'){
Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx (original)
+++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx Mon Nov 30 11:06:09 2015
@@ -220,7 +220,7 @@
, successCallback: createFileComplete
});
}
- var vars = UploadPostHelper.getPostData(bytes ? fileName : null, bytes, [
+ var vars = UploadPostHelper.getPostData(bytes == null ? null : fileName, bytes, [
{
name: 'file'
, type: 'application/json'
Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx (original)
+++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx Mon Nov 30 11:06:09 2015
@@ -81,7 +81,7 @@
public static function getPostData(fileName:String, byteArray:ByteArray, parameters:Array = null):ByteArray {
var i:int;
var bytes:String;
-
+
var postData:ByteArray = new ByteArray();
postData.endian = Endian.BIG_ENDIAN;
@@ -89,9 +89,6 @@
if(parameters == null) {
parameters = [];
}
- if (fileName) {
- parameters[parameters.length] = {name: 'Filename', value: fileName};
- }
//add parameters to postData
for (var j:int = 0; j < parameters.length; ++j) {
@@ -115,7 +112,7 @@
//add Filedata to postData
postData = BOUNDARY(postData);
postData = LINEBREAK(postData);
- bytes = 'Content-Disposition: form-data; name="Filedata"; filename="';
+ bytes = 'Content-Disposition: form-data; name="stream"; filename="';
for (i = 0; i < bytes.length; ++i) {
postData.writeByte( bytes.charCodeAt(i) );
}
@@ -125,23 +122,7 @@
addContentType(postData, "application/octet-stream");
postData.writeBytes(byteArray, 0, byteArray.length);
postData = LINEBREAK(postData);
-
- //add upload filed to postData
- postData = LINEBREAK(postData);
- postData = BOUNDARY(postData);
- postData = LINEBREAK(postData);
- bytes = 'Content-Disposition: form-data; name="Upload"';
- for (i = 0; i < bytes.length; ++i) {
- postData.writeByte(bytes.charCodeAt(i));
- }
- postData = LINEBREAK(postData);
- postData = LINEBREAK(postData);
- bytes = 'Submit Query';
- for (i = 0; i < bytes.length; ++i) {
- postData.writeByte(bytes.charCodeAt(i));
- }
- postData = LINEBREAK(postData);
-
+
//closing boundary
postData = BOUNDARY(postData);
postData = DOUBLEDASH(postData);
Modified: openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java Mon Nov 30 11:06:09 2015
@@ -155,7 +155,7 @@ public class OmFileHelper {
}
public static File getUploadTempDir() {
- return new File(OmFileHelper.OM_HOME, UPLOAD_TEMP_DIR);
+ return getDir(OmFileHelper.OM_HOME, UPLOAD_TEMP_DIR);
}
public static File getUploadTempFilesDir() {
Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/web.xml?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/web.xml (original)
+++ openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/web.xml Mon Nov 30 11:06:09 2015
@@ -71,7 +71,7 @@
</init-param>
<init-param>
<param-name>ignorePaths</param-name>
- <param-value>conf,css,default,docs,images,js,persistence,public,screensharing,streams,upload,uploadtemp,services,networktest.,file.,screen.,DownloadHandler</param-value>
+ <param-value>conf,css,default,docs,images,js,persistence,public,screensharing,streams,upload,uploadtemp,services,networktest.,screen.,DownloadHandler</param-value>
</init-param>
</filter>
<filter-mapping>
Modified: openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java (original)
+++ openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java Mon Nov 30 11:06:09 2015
@@ -41,6 +41,7 @@ import javax.ws.rs.core.MediaType;
import org.apache.cxf.feature.Features;
import org.apache.cxf.jaxrs.ext.multipart.Multipart;
+import org.apache.openmeetings.core.data.file.FileProcessor;
import org.apache.openmeetings.core.data.file.FileUtils;
import org.apache.openmeetings.core.documents.LoadLibraryPresentation;
import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
@@ -55,6 +56,7 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.user.User.Right;
import org.apache.openmeetings.db.util.AuthLevelUtil;
import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
import org.apache.openmeetings.webservice.error.ServiceException;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
@@ -84,6 +86,8 @@ public class FileWebService {
private FileExplorerItemDao fileDao;
@Autowired
private FileUtils fileUtils;
+ @Autowired
+ private FileProcessor fileProcessor;
/**
* deletes files or folders based on it id
@@ -173,7 +177,7 @@ public class FileWebService {
@Path("/")
public FileExplorerItemDTO add(@WebParam(name="sid") @QueryParam("sid") String sid
, @Multipart(value = "file", type = MediaType.APPLICATION_JSON) @WebParam(name="file") FileExplorerItemDTO file
- , @Multipart(value = "stream", type = MediaType.APPLICATION_OCTET_STREAM, required = false) @WebParam(name="stream") InputStream attach //TODO check this
+ , @Multipart(value = "stream", type = MediaType.APPLICATION_OCTET_STREAM, required = false) @WebParam(name="stream") InputStream stream
) throws ServiceException
{
try {
@@ -189,10 +193,17 @@ public class FileWebService {
|| (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))*/
if (AuthLevelUtil.hasUserLevel(rights))
{
- //TODO permissions
- //TODO attachment
f.setInsertedBy(userId);
- fileDao.update(f);
+ //TODO permissions
+ if (stream != null) {
+ //TODO attachment
+ ConverterProcessResultList result = fileProcessor.processFile(userId, f, stream);
+ if (result.hasError()) {
+ throw new ServiceException(result.getLogMessage());
+ }
+ } else {
+ f = fileDao.update(f);
+ }
return new FileExplorerItemDTO(f);
} else {
throw new ServiceException("Insufficient permissins"); //TODO code -26
Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java Mon Nov 30 11:06:09 2015
@@ -18,7 +18,10 @@
*/
package org.apache.openmeetings.core.data.file;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadFilesDir;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadTempFilesDir;
import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import java.io.File;
import java.io.InputStream;
@@ -33,8 +36,6 @@ import org.apache.openmeetings.core.docu
import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
import org.apache.openmeetings.db.entity.file.FileExplorerItem;
import org.apache.openmeetings.db.entity.file.FileItem.Type;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
import org.apache.openmeetings.util.StoredFile;
import org.apache.openmeetings.util.crypt.MD5;
import org.apache.openmeetings.util.process.ConverterProcessResult;
@@ -44,8 +45,7 @@ import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
public class FileProcessor {
-
- private static final Logger log = Red5LoggerFactory.getLogger(FileProcessor.class, OpenmeetingsVariables.webAppRootKey);
+ private static final Logger log = Red5LoggerFactory.getLogger(FileProcessor.class, webAppRootKey);
//Spring loaded Beans
@Autowired
@@ -59,124 +59,93 @@ public class FileProcessor {
@Autowired
private GeneratePDF generatePDF;
- public ConverterProcessResultList processFile(Long userId, Long roomId,
- boolean isOwner, InputStream is, Long parentFolderId, String fileSystemName,
- String externalFileId, String externalType) throws Exception {
-
+ //FIXME TODO this method need to be refactored to throw exceptions
+ public ConverterProcessResultList processFile(Long userId, FileExplorerItem f, InputStream is) throws Exception {
ConverterProcessResultList returnError = new ConverterProcessResultList();
- int dotidx = fileSystemName.lastIndexOf('.');
+ int dotidx = f.getName().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();
-
- 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)) {
- returnError.addItem("wrongType", new ConverterProcessResult("The file type cannot be converted"));
- return returnError;
- }
-
- File completeName = new File(
- isAsIs ? OmFileHelper.getUploadFilesDir() : OmFileHelper.getUploadTempFilesDir()
- , newFileSystemName + newFileExtDot);
- log.debug("writing file to: " + completeName);
- FileHelper.copy(is, completeName);
- 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 = fileExplorerItemDao.get(parentFolderId);
-
- if (fileExplorerItem != null) {
- if (Type.Folder != fileExplorerItem.getType()) {
- parentFolderId = 0L;
- }
- }
-
- Long fileId = fileExplorerItemDao.add(
- fileSystemName, fileHashName, // The Hashname of the file
- parentFolderId, ownerId, roomId, userId, false, // isFolder
- isImage, isPresentation, "", false, isChart,
- externalFileId, externalType);
- log.debug("fileId: " + fileId);
-
-
-
- log.debug("canBeConverted: " + canBeConverted);
- if (canBeConverted) {
- // convert to pdf, thumbs, swf and xml-description
- returnError = generatePDF.convertPDF(newFileSystemName, "files", true, completeName);
- } else if (isPdf) {
- // convert to thumbs, swf and xml-description
- returnError = generatePDF.convertPDF(newFileSystemName, "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.convertImage(newFileSystemName, newFileExtDot, "files",
- newFileSystemName, false);
- } else if (isAsIs) {
- ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, completeName, 50);
- returnError.addItem("processThumb", processThumb);
- } else if (isVideo) {
- List<ConverterProcessResult> returnList = flvExplorerConverter.startConversion(fileId, completeName.getCanonicalPath());
-
- int i=0;
- for (ConverterProcessResult returnMap : returnList) {
- returnError.addItem("processFLV "+i, returnMap);
- }
-
- }
-
- // has to happen at the end, otherwise it will be overwritten
- //cause the variable is new initialized
- returnError.setCompleteName(completeName.getName());
- returnError.setFileExplorerItemId(fileId);
-
- return returnError;
+ // Generate a random string to prevent any problems with
+ // foreign characters and duplicates
+ String newName = MD5.do_checksum("FILE_" + new Date().getTime());
+
+ String extDot = f.getName().substring(dotidx, f.getName().length()).toLowerCase();
+ String ext = extDot.substring(1);
+ log.debug("file extension: " + ext);
+ StoredFile storedFile = new StoredFile(newName, ext);
+
+ // 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();
+
+ 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)) {
+ returnError.addItem("wrongType", new ConverterProcessResult("The file type cannot be converted"));
+ return returnError;
+ }
+
+ File completeName = new File(isAsIs ? getUploadFilesDir() : getUploadTempFilesDir(), newName + extDot);
+ log.debug("writing file to: " + completeName);
+ FileHelper.copy(is, completeName);
+ is.close();
+
+ String hash = newName + extDot;
+ if (isImage) {
+ hash = newName + ".jpg";
+ f.setType(Type.Image);
+ } else if (isVideo) {
+ hash = newName + ".flv";
+ f.setType(Type.Video);
+ } else if (isChart) {
+ f.setType(Type.PollChart);
+ } else if (isPdf || canBeConverted) {
+ hash = newName;
+ f.setType(Type.Presentation);
+ }
+ f.setHash(hash);
+
+ f = fileExplorerItemDao.update(f);
+ log.debug("fileId: " + f.getId());
+ log.debug("canBeConverted: " + canBeConverted);
+ if (canBeConverted) {
+ // convert to pdf, thumbs, swf and xml-description
+ returnError = generatePDF.convertPDF(newName, "files", true, completeName);
+ } else if (isPdf) {
+ // convert to thumbs, swf and xml-description
+ returnError = generatePDF.convertPDF(newName, "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.convertImage(newName, extDot, "files", newName, false);
+ } else if (isAsIs) {
+ ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, completeName, 50);
+ returnError.addItem("processThumb", processThumb);
+ } else if (isVideo) {
+ List<ConverterProcessResult> returnList = flvExplorerConverter.startConversion(f.getId(), completeName.getCanonicalPath());
+
+ int i = 0;
+ for (ConverterProcessResult returnMap : returnList) {
+ returnError.addItem("processFLV " + i, returnMap);
+ }
+ }
+
+ // has to happen at the end, otherwise it will be overwritten
+ //cause the variable is new initialized
+ returnError.setCompleteName(completeName.getName());
+ returnError.setFileExplorerItemId(f.getId());
+
+ return returnError;
}
-
}
Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Mon Nov 30 11:06:09 2015
@@ -61,7 +61,6 @@ import org.apache.openmeetings.util.Init
import org.apache.openmeetings.util.OmFileHelper;
import org.apache.openmeetings.util.OpenmeetingsVariables;
import org.apache.openmeetings.util.Version;
-import org.apache.openmeetings.util.process.UploadCompleteMessage;
import org.red5.logging.Red5LoggerFactory;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IClient;
@@ -1899,24 +1898,6 @@ public class ScopeApplicationAdapter ext
return 1;
}
- public synchronized void sendUploadCompletMessageByPublicSID(UploadCompleteMessage message, String publicSID) {
- try {
- //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)
- Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
-
- if (currentClient != null) {
- sendMessageWithClientByPublicSID(message, publicSID);
- } else {
- throw new Exception("Could not Find RoomClient on List publicSID: "+ publicSID);
- }
-
- } catch (Exception err) {
- log.error("[sendUploadCompletMessageByPublicSID] ", err);
- }
- }
-
-
public synchronized void sendMessageWithClientByPublicSID(Object message, String publicSID) {
try {
// ApplicationContext appCtx = getContext().getApplicationContext();
Modified: openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java Mon Nov 30 11:06:09 2015
@@ -155,7 +155,7 @@ public class OmFileHelper {
}
public static File getUploadTempDir() {
- return new File(OmFileHelper.OM_HOME, UPLOAD_TEMP_DIR);
+ return getDir(OmFileHelper.OM_HOME, UPLOAD_TEMP_DIR);
}
public static File getUploadTempFilesDir() {
Modified: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java?rev=1717228&r1=1717227&r2=1717228&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java Mon Nov 30 11:06:09 2015
@@ -41,6 +41,7 @@ import javax.ws.rs.core.MediaType;
import org.apache.cxf.feature.Features;
import org.apache.cxf.jaxrs.ext.multipart.Multipart;
+import org.apache.openmeetings.core.data.file.FileProcessor;
import org.apache.openmeetings.core.data.file.FileUtils;
import org.apache.openmeetings.core.documents.LoadLibraryPresentation;
import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
@@ -55,6 +56,7 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.user.User.Right;
import org.apache.openmeetings.db.util.AuthLevelUtil;
import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
import org.apache.openmeetings.webservice.error.ServiceException;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
@@ -84,6 +86,8 @@ public class FileWebService {
private FileExplorerItemDao fileDao;
@Autowired
private FileUtils fileUtils;
+ @Autowired
+ private FileProcessor fileProcessor;
/**
* deletes files or folders based on it id
@@ -173,7 +177,7 @@ public class FileWebService {
@Path("/")
public FileExplorerItemDTO add(@WebParam(name="sid") @QueryParam("sid") String sid
, @Multipart(value = "file", type = MediaType.APPLICATION_JSON) @WebParam(name="file") FileExplorerItemDTO file
- , @Multipart(value = "stream", type = MediaType.APPLICATION_OCTET_STREAM, required = false) @WebParam(name="stream") InputStream attach //TODO check this
+ , @Multipart(value = "stream", type = MediaType.APPLICATION_OCTET_STREAM, required = false) @WebParam(name="stream") InputStream stream
) throws ServiceException
{
try {
@@ -189,10 +193,17 @@ public class FileWebService {
|| (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))*/
if (AuthLevelUtil.hasUserLevel(rights))
{
- //TODO permissions
- //TODO attachment
f.setInsertedBy(userId);
- fileDao.update(f);
+ //TODO permissions
+ if (stream != null) {
+ //TODO attachment
+ ConverterProcessResultList result = fileProcessor.processFile(userId, f, stream);
+ if (result.hasError()) {
+ throw new ServiceException(result.getLogMessage());
+ }
+ } else {
+ f = fileDao.update(f);
+ }
return new FileExplorerItemDTO(f);
} else {
throw new ServiceException("Insufficient permissins"); //TODO code -26