Revision: 3861
Author: seba.wagner
Date: Fri Jun 24 11:06:18 2011
Log: SOAP Call to import files from external systems
http://code.google.com/p/openmeetings/source/detail?r=3861
Added:
/trunk/singlewebapp/src/fileservice/org/openmeetings/axis/services/FileImportError.java
Modified:
/trunk/singlewebapp/src/app/org/openmeetings/app/data/file/FileProcessor.java
/trunk/singlewebapp/src/fileservice/org/openmeetings/axis/services/FileService.java
=======================================
--- /dev/null
+++
/trunk/singlewebapp/src/fileservice/org/openmeetings/axis/services/FileImportError.java
Fri Jun 24 11:06:18 2011
@@ -0,0 +1,35 @@
+package org.openmeetings.axis.services;
+
+public class FileImportError {
+
+ private int exitValue = 0;
+ private String error = "";
+ private String process = "";
+ private String command = "";
+
+ public int getExitValue() {
+ return exitValue;
+ }
+ public void setExitValue(int exitValue) {
+ this.exitValue = exitValue;
+ }
+ public String getError() {
+ return error;
+ }
+ public void setError(String error) {
+ this.error = error;
+ }
+ public String getProcess() {
+ return process;
+ }
+ public void setProcess(String process) {
+ this.process = process;
+ }
+ public String getCommand() {
+ return command;
+ }
+ public void setCommand(String command) {
+ this.command = command;
+ }
+
+}
=======================================
---
/trunk/singlewebapp/src/app/org/openmeetings/app/data/file/FileProcessor.java
Fri Jun 24 08:16:56 2011
+++
/trunk/singlewebapp/src/app/org/openmeetings/app/data/file/FileProcessor.java
Fri Jun 24 11:06:18 2011
@@ -113,7 +113,9 @@
// add outputfolders for profiles
// if it is a presenation it will be copied to another place
if (!(canBeConverted || isPdf || isImage || isVideo || isAsIs)) {
- return null;
+ returnAttributes.put("error","The file type cannot be
converted");
+ returnAttributes.put("exitValue",-1);
+ return returnError;
}
if (isAsIs) {
=======================================
---
/trunk/singlewebapp/src/fileservice/org/openmeetings/axis/services/FileService.java
Fri Jun 24 08:16:56 2011
+++
/trunk/singlewebapp/src/fileservice/org/openmeetings/axis/services/FileService.java
Fri Jun 24 11:06:18 2011
@@ -1,22 +1,124 @@
package org.openmeetings.axis.services;
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.LinkedList;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.transport.http.HTTPConstants;
import org.slf4j.Logger;
+import org.springframework.context.ApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;
import org.red5.logging.Red5LoggerFactory;
+import org.openmeetings.app.data.basic.AuthLevelmanagement;
import org.openmeetings.app.data.basic.Sessionmanagement;
import org.openmeetings.app.data.basic.files.*;
+import org.openmeetings.app.data.file.FileProcessor;
+import org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl;
+import org.openmeetings.app.data.user.Usermanagement;
+import org.openmeetings.app.data.user.dao.UsersDaoImpl;
+import org.openmeetings.app.hibernate.beans.user.Users;
import org.openmeetings.app.remote.ConferenceLibrary;
import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import javax.servlet.ServletContext;
import javax.xml.stream.XMLStreamException;
public class FileService {
private static final Logger log =
Red5LoggerFactory.getLogger(FileService.class,
ScopeApplicationAdapter.webAppRootKey);
+
+ public ServletContext getServletContext()
+ {
+ MessageContext mc = MessageContext.getCurrentMessageContext();
+ return (ServletContext)
mc.getProperty(HTTPConstants.MC_HTTP_SERVLETCONTEXT);
+ }
+
+ /**
+ * Method to upload a File to a Conference Room via SOAP
+ *
+ * @param SID
+ * @param externalUserId
+ * @param externalUserType
+ * @param externalFileId
+ * @param room_id
+ * @param isOwner
+ * @param path
+ * @param parentFolderId
+ * @param fileSystemName
+ * @return
+ * @throws AxisFault
+ */
+ public FileImportError[] importFile(String SID, Long externalUserId,
String externalUserType,
+ String externalFileId, Long room_id,
boolean isOwner, String path,
+ Long parentFolderId, String
fileSystemName) throws AxisFault{
+ try {
+
+ Long users_id =
Sessionmanagement.getInstance().checkSession(SID);
+ Long User_level =
Usermanagement.getInstance().getUserLevelByID(users_id);
+
+ if
(AuthLevelmanagement.getInstance().checkWebServiceLevel(User_level)){
+
+ String current_dir =
getServletContext().getRealPath("/");
+
+ ApplicationContext context =
WebApplicationContextUtils.getWebApplicationContext(getServletContext());
+ FileProcessor fileProcessor = (FileProcessor)
context.getBean("openmeetings.FileProcessor");
+
+ URL url = new URL(path);
+ URLConnection uc = url.openConnection();
+ InputStream inputstream = new
BufferedInputStream(uc.getInputStream());
+
+ Users externalUser =
Usermanagement.getInstance().getUserByExternalIdAndType(externalUserId,
externalUserType);
+
+ LinkedHashMap<String, Object> hs = new LinkedHashMap<String,
Object>();
+ hs.put("user", externalUser);
+
+ HashMap<String, HashMap<String, Object>> returnError =
fileProcessor.processFile(externalUser.getExternalUserId(), room_id,
isOwner, inputstream, 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(Long.parseLong(returnAttributes.get("fileExplorerItemId").toString())));
+ hs.put("error", returnError);
+ hs.put("fileName",
returnAttributes.get("completeName"));
+
+ FileImportError[] fileImportErrors = new
FileImportError[returnError.size()];
+
+ int i = 0;
+ //Axis need Objects or array of objects, Map
won't work
+ for (Iterator<String> iter =
returnError.keySet().iterator();iter.hasNext();) {
+
+ HashMap<String, Object> returnAttribute =
returnError.get(iter.next());
+
+ fileImportErrors[i] = new
FileImportError();
+
fileImportErrors[i].setCommand(returnAttribute.get("command").toString());
+
fileImportErrors[i].setError(returnAttribute.get("error").toString());
+
fileImportErrors[i].setExitValue(Integer.valueOf(returnAttribute.get("exitValue").toString()).intValue());
+
fileImportErrors[i].setProcess(returnAttribute.get("process").toString());
+
+ i++;
+ }
+
+ return fileImportErrors;
+
+ }
+ } catch (Exception err) {
+ log.error("[importFile]",err);
+ }
+ return null;
+ }
/**
* this Method does not work yet,
--
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.