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.