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.

Reply via email to