Revision: 3973
Author:   seba.wagner
Date:     Wed Jul  6 06:13:08 2011
Log:      Rework parts of the File-Explorer to use REST instead of RTMP
http://code.google.com/p/openmeetings/source/detail?r=3973

Modified:
/trunk/singlewebapp/WebContent/openmeetings/plugins/fileexplorer/fileExplorer.lzx /trunk/singlewebapp/WebContent/openmeetings/plugins/fileexplorer/treeitems/baseFileExplorerItem.lzx /trunk/singlewebapp/src/fileservice/org/openmeetings/axis/services/FileService.java

=======================================
--- /trunk/singlewebapp/WebContent/openmeetings/plugins/fileexplorer/fileExplorer.lzx Tue Jul 5 08:18:10 2011 +++ /trunk/singlewebapp/WebContent/openmeetings/plugins/fileexplorer/fileExplorer.lzx Wed Jul 6 06:13:08 2011
@@ -128,14 +128,173 @@

     <method name="loadFiles">
        <![CDATA[
-            this.getFileExplorerByRoom.doCall();
+            //this.getFileExplorerByRoom.doCall();
+ var downloadurl = 'http://'+canvas.rtmphostlocal+':'+canvas.red5httpport + +canvas.httpRootKey+'services/FileService/getFileExplorerByRoomSelf?'
+                            +'SID='+canvas.sessionId
+                            +'&room_id='+hib.currentroomid;
+
+            this.getFileExplorerByRoomSelf.setAttribute("src",downloadurl);
+ if ($debug) Debug.write("getFileExplorerByRoomSelf doRequest ",downloadurl);
+            this.getFileExplorerByRoomSelf.doRequest();
         ]]>
     </method>

-
-    <!--
+    <dataset name="getFileExplorerByRoomSelf" type="http" >
+       <handler name="ondata" args="d">
+               <![CDATA[
+                //if ($debug) Debug.write("ondata ",d);
+                parent.parseRootItems(parent.parseRootToRoomObject(d));
+            ]]>
+       </handler>
+    </dataset>
+
+    <method name="parseParentToRoomObject" args="dObj">
+        <![CDATA[
+
+            var filesObject = new Array();
+
+            var tFiles = dObj.childNodes[0].childNodes;
+
+ if ($debug) Debug.write("parseParentToRoomObject tFiles ",tFiles);
+
+            for (var i=0;i<tFiles.length;i++) {
+
+ filesObject.push(this.parseToFileObj(tFiles[i].childNodes));
+
+            }
+
+            return filesObject;
+        ]]>
+    </method>
+
+    <method name="parseRootToRoomObject" args="dObj">
+        <![CDATA[
+
+            var roomObject = new Object();
+
+            roomObject.userHome = new Array();
+            roomObject.roomHome = new Array();
+            roomObject.userHomeSize = 0;
+            roomObject.roomHomeSize = 0;
+
+            var tFiles = dObj.childNodes[0].childNodes[0].childNodes;
+
+            //if ($debug) Debug.write("tFiles ",tFiles);
+
+            for (var i=0;i<tFiles.length;i++) {
+
+                //if ($debug) Debug.write("nodeName",tFiles[i].nodeName);
+
+                if (tFiles[i].nodeName == "userHomeSize") {
+ if ($debug) Debug.write("roomHomeSize",tFiles[i].childNodes[0].data); + roomObject.userHomeSize = Number(tFiles[i].childNodes[0].data);
+                } else if (tFiles[i].nodeName == "roomHomeSize") {
+ if ($debug) Debug.write("roomHomeSize",tFiles[i].childNodes[0].data); + roomObject.roomHomeSize = Number(tFiles[i].childNodes[0].data);
+                } else if (tFiles[i].nodeName == "roomHome") {
+ roomObject.roomHome.push(this.parseToFileObj(tFiles[i].childNodes));
+                } else if (tFiles[i].nodeName == "userHome") {
+ roomObject.userHome.push(this.parseToFileObj(tFiles[i].childNodes));
+                }
+
+            }
+
+            return roomObject;
+        ]]>
+    </method>
+
+    <method name="parseToFileObj" args="dObj">
+        <![CDATA[
+
+            var tFileObj = new Object();
+
+            var type = "string";
+
+            for (var i=0;i<dObj.length;i++) {
+
+                type = "string";
+
+                switch (dObj[i].nodeName){
+                    case "externalFileId":
+                        type = "int";
+                        break;
+                    case "fileExplorerItemId":
+                        type = "int";
+                        break;
+                    case "fileSize":
+                        type = "int";
+                        break;
+                    case "flvHeight":
+                        type = "int";
+                        break;
+                    case "flvWidth":
+                        type = "int";
+                        break;
+                    case "insertedBy":
+                        type = "int";
+                        break;
+                    case "isChart":
+                        type = "boolean";
+                        break;
+                    case "isFolder":
+                        type = "boolean";
+                        break;
+                    case "isImage":
+                        type = "boolean";
+                        break;
+                    case "isPresentation":
+                        type = "boolean";
+                        break;
+                    case "isStoredWmlFile":
+                        type = "boolean";
+                        break;
+                    case "isVideo":
+                        type = "boolean";
+                        break;
+                    case "ownerId":
+                        type = "int";
+                        break;
+                    case "parentFileExplorerItemId":
+                        type = "int";
+                        break;
+                    case "room_id":
+                        type = "int";
+                        break;
+                    default:
+                        break;
+                }
+
+ //if ($debug) Debug.write("Obj attr ",dObj[i].nodeName,type);
+
+                if (dObj[i].childNodes.length > 0) {
+                    switch (type) {
+                        case "int":
+ tFileObj[dObj[i].nodeName] = Number(dObj[i].childNodes[0].data);
+                            break;
+                        case "boolean":
+ tFileObj[dObj[i].nodeName] = (dObj[i].childNodes[0].data == "true") ? true : false;
+                            break;
+                        default:
+ tFileObj[dObj[i].nodeName] = dObj[i].childNodes[0].data;
+                            break;
+                    }
+                } else {
+                    tFileObj[dObj[i].nodeName] = null;
+                }
+
+ //if ($debug) Debug.write("Obj attr ",dObj[i].nodeName,tFileObj[dObj[i].nodeName]);
+
+            }
+
+            return tFileObj;
+
+        ]]>
+    </method>
+
+    <!--
public FileExplorerObject getFileExplorerByRoom(String SID, Long room_id)
-     -->
+
<netRemoteCallHib name="getFileExplorerByRoom" funcname="fileservice.getFileExplorerByRoom"
         remotecontext="$once{ canvas.thishib }" >
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
@@ -145,7 +304,7 @@
             parent.parseRootItems(value);
         </handler>
     </netRemoteCallHib>
-
+     -->

     <!--
         Parse Items and generate Output
@@ -179,7 +338,7 @@
             //Home area
             for (var i=0; i<roomObject.userHome.length; i++) {
                 var fileExplorerItem = roomObject.userHome[i];
- if ($debug) Debug.write("fileExplorerItem, ",fileExplorerItem); + //if ($debug) Debug.write("fileExplorerItem, ",fileExplorerItem);
                 if (fileExplorerItem.isFolder) {
                     new lz.folderFileExplorerItem(homeIcon.content,{
fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
@@ -256,8 +415,8 @@
             //Public area
             for (var i=0; i<roomObject.roomHome.length; i++) {
                 var fileExplorerItem = roomObject.roomHome[i];
- if ($debug) Debug.write("fileExplorerItem.fileExplorerItemId, ",fileExplorerItem.fileExplorerItemId); - if ($debug) Debug.write("fileExplorerItem, ",fileExplorerItem); + //if ($debug) Debug.write("fileExplorerItem.fileExplorerItemId, ",fileExplorerItem.fileExplorerItemId); + //if ($debug) Debug.write("fileExplorerItem, ",fileExplorerItem);
                 if (fileExplorerItem.isFolder) {
                     new lz.folderFileExplorerItem(roomHome.content,{
fileName:fileExplorerItem.fileName,
=======================================
--- /trunk/singlewebapp/WebContent/openmeetings/plugins/fileexplorer/treeitems/baseFileExplorerItem.lzx Tue Jul 5 06:16:51 2011 +++ /trunk/singlewebapp/WebContent/openmeetings/plugins/fileexplorer/treeitems/baseFileExplorerItem.lzx Wed Jul 6 06:13:08 2011
@@ -50,7 +50,7 @@
                this.icon_folder_pre.setAttribute("frame",2);
                this.content.setAttribute("visibility","visible");
                        this._folderIcon.setAttribute("frame",2);
-                   this.getFileExplorerByParent.doCall();
+                   this.loadFiles();
                }
        </method>

@@ -289,11 +289,38 @@
             }
         ]]>
     </method>
-
+
+    <method name="loadFiles">
+       <![CDATA[
+            //this.getFileExplorerByRoom.doCall();
+ var downloadurl = 'http://'+canvas.rtmphostlocal+':'+canvas.red5httpport + +canvas.httpRootKey+'services/FileService/getFileExplorerByParentSelf?'
+                            +'SID='+canvas.sessionId
+ +'&parentFileExplorerItemId='+this.fileExplorerItemId
+                            +'&room_id='+hib.currentroomid
+                            +'&isOwner='+this.isOwner;
+
+ this.getFileExplorerByParentSelf.setAttribute("src",downloadurl); + if ($debug) Debug.write("getFileExplorerByParentSelf doRequest ",downloadurl);
+            this.getFileExplorerByParentSelf.doRequest();
+        ]]>
+    </method>
+
+    <dataset name="getFileExplorerByParentSelf" type="http" >
+        <handler name="ondata" args="d">
+            <![CDATA[
+                //if ($debug) Debug.write("ondata ",d);
+ parent.renderFilesAndFolders(canvas.currentFileExplorer.parseParentToRoomObject(d));
+            ]]>
+        </handler>
+    </dataset>
+
+    <!--
+ parent.parseRootItems(canvas.currentFileExplorer.parseToRoomObject(d));
+        -->
        <!--
public List<FileExplorerItem> getFileExplorerByParent(String SID, Long parentFileExplorerItemId,
                       Long room_id, Boolean isOwner) {
-     -->
<netRemoteCallHib name="getFileExplorerByParent" funcname="fileservice.getFileExplorerByParent"
         remotecontext="$once{ canvas.thishib }" >
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
@@ -304,7 +331,8 @@
             if ($debug) Debug.write("getFileExplorerByParent: ",value);
             parent.renderFilesAndFolders(value);
         </handler>
-    </netRemoteCallHib>
+    </netRemoteCallHib>
+     -->

     <method name="renderFilesAndFolders" args="roomHome">
         <![CDATA[
=======================================
--- /trunk/singlewebapp/src/fileservice/org/openmeetings/axis/services/FileService.java Tue Jul 5 08:17:38 2011 +++ /trunk/singlewebapp/src/fileservice/org/openmeetings/axis/services/FileService.java Wed Jul 6 06:13:08 2011
@@ -528,6 +528,67 @@
                return null;
            }
        }
+
+ public FileExplorerObject getFileExplorerByRoomSelf(String SID, Long room_id) throws AxisFault {
+
+           try {
+
+               Long users_id = 
Sessionmanagement.getInstance().checkSession(SID);
+               Long user_level = Usermanagement.getInstance().getUserLevelByID(
+                               users_id);
+
+ if (AuthLevelmanagement.getInstance().checkUserLevel(user_level)) {
+
+                       log.debug("room_id " + room_id);
+
+ FileExplorerObject fileExplorerObject = new FileExplorerObject();
+
+                // Home File List
+                FileExplorerItem[] fList = FileExplorerItemDaoImpl
+                        .getInstance()
+                        .getFileExplorerItemsByOwner(users_id, 0L);
+
+                long homeFileSize = 0;
+
+                for (FileExplorerItem homeChildExplorerItem : fList) {
+                    log.debug("FileExplorerItem fList "
+                            + homeChildExplorerItem.getFileName());
+                    homeFileSize += FileUtils.getInstance()
+                            .getSizeOfDirectoryAndSubs(homeChildExplorerItem);
+                }
+
+                fileExplorerObject.setUserHome(fList);
+                fileExplorerObject.setUserHomeSize(homeFileSize);
+
+                // Public File List
+                FileExplorerItem[] rList = FileExplorerItemDaoImpl
+ .getInstance().getFileExplorerItemsByRoom(room_id, 0L);
+
+                long roomFileSize = 0;
+
+                for (FileExplorerItem homeChildExplorerItem : rList) {
+                    log.debug("FileExplorerItem rList "
+                            + homeChildExplorerItem.getFileName());
+                    roomFileSize += FileUtils.getInstance()
+                            .getSizeOfDirectoryAndSubs(homeChildExplorerItem);
+                }
+
+                fileExplorerObject.setRoomHome(rList);
+                fileExplorerObject.setRoomHomeSize(roomFileSize);
+
+                return fileExplorerObject;
+
+               } else {
+
+                   throw new Exception("not Authenticated");
+
+               }
+
+           } catch (Exception e) {
+               log.error("[getFileExplorerByRoomSelf]", e);
+               return null;
+           }
+       }

        public FileExplorerItem[] getFileExplorerByParent(String SID,
Long parentFileExplorerItemId, Long room_id, Boolean isOwner, Long owner_id) throws AxisFault {
@@ -563,6 +624,43 @@
         } catch (Exception err) {
             log.error("[getFileExplorerByParent] ", err);
         }
+        return null;
+    }
+
+       public FileExplorerItem[] getFileExplorerByParentSelf(String SID,
+ Long parentFileExplorerItemId, Long room_id, Boolean isOwner) throws AxisFault {
+
+               try {
+
+               Long users_id = 
Sessionmanagement.getInstance().checkSession(SID);
+               Long user_level = Usermanagement.getInstance().getUserLevelByID(
+                               users_id);
+
+ if (AuthLevelmanagement.getInstance().checkUserLevel(user_level)) {
+
+                log.debug("parentFileExplorerItemId "
+                        + parentFileExplorerItemId);
+
+                if (parentFileExplorerItemId == 0) {
+                    if (isOwner) {
+                        return FileExplorerItemDaoImpl.getInstance()
+                                .getFileExplorerItemsByOwner(users_id,
+                                        parentFileExplorerItemId);
+                    } else {
+                        return FileExplorerItemDaoImpl.getInstance()
+                                .getFileExplorerItemsByRoom(room_id,
+                                        parentFileExplorerItemId);
+                    }
+                } else {
+                    return FileExplorerItemDaoImpl.getInstance()
+                            .getFileExplorerItemsByParent(
+                                    parentFileExplorerItemId);
+                }
+
+            }
+        } catch (Exception err) {
+            log.error("[getFileExplorerByParentSelf] ", err);
+        }
         return null;
     }

@@ -586,6 +684,38 @@
         } catch (Exception err) {
             log.error("[updateFileOrFolderName] ", err);
         }
+        return null;
+    }
+
+ public Long updateFileOrFolderNameSelf(String SID, Long fileExplorerItemId,
+            String fileName) throws AxisFault {
+
+               try {
+
+               Long users_id = 
Sessionmanagement.getInstance().checkSession(SID);
+               Long user_level = Usermanagement.getInstance().getUserLevelByID(
+                               users_id);
+
+ if (AuthLevelmanagement.getInstance().checkUserLevel(user_level)) {
+
+                       //TODO: check if this user is allowed to change this 
file
+                       /*
+ FileExplorerItem fileExItem = FileExplorerItemDaoImpl.getInstance().getFileExplorerItemsById(fileExplorerItemId);
+
+ if (fileExItem.getOwnerId() != null && !fileExItem.getOwnerId().equals(users_id)) { + throw new Exception("This user is not the owner of the file and not allowed to edit its name");
+                       }
+                       */
+
+                log.debug("deleteFileOrFolder " + fileExplorerItemId);
+
+ FileExplorerItemDaoImpl.getInstance().updateFileOrFolderName(
+                        fileExplorerItemId, fileName);
+
+            }
+        } catch (Exception err) {
+            log.error("[updateFileOrFolderNameSelf] ", err);
+        }
         return null;
     }

@@ -616,6 +746,47 @@
FileUtils.getInstance().setFileToOwnerOrRoomByParent(fileExplorerItem,
                                        owner_id, null);

+                } else {
+ // set this file and all subfiles and folders the room_id + FileUtils.getInstance().setFileToOwnerOrRoomByParent(fileExplorerItem, null,
+                            room_id);
+
+                }
+
+            }
+        } catch (Exception err) {
+            log.error("[moveFile] ", err);
+        }
+        return null;
+    }
+
+       public Long moveFileSelf(String SID, Long fileExplorerItemId,
+ Long newParentFileExplorerItemId, Long room_id, Boolean isOwner,
+            Boolean moveToHome) throws AxisFault {
+
+               try {
+
+               Long users_id = 
Sessionmanagement.getInstance().checkSession(SID);
+               Long user_level = Usermanagement.getInstance().getUserLevelByID(
+                               users_id);
+
+ if (AuthLevelmanagement.getInstance().checkWebServiceLevel(user_level)) {
+
+                log.debug("deleteFileOrFolder " + fileExplorerItemId);
+
+                FileExplorerItemDaoImpl.getInstance().moveFile(
+                        fileExplorerItemId, newParentFileExplorerItemId,
+                        room_id, isOwner, users_id);
+
+                FileExplorerItem fileExplorerItem = FileExplorerItemDaoImpl
+                        .getInstance().getFileExplorerItemsById(
+                                fileExplorerItemId);
+
+                if (moveToHome) {
+ // set this file and all subfiles and folders the ownerId + FileUtils.getInstance().setFileToOwnerOrRoomByParent(fileExplorerItem,
+                                       users_id, null);
+
                 } else {
// set this file and all subfiles and folders the room_id FileUtils.getInstance().setFileToOwnerOrRoomByParent(fileExplorerItem, null,

--
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