[OPENMEETINGS-1030] more work of files section: wml drop
git-svn-id: https://svn.apache.org/repos/asf/openmeetings/application/trunk@1753640 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
index cf59fce..2065aa1 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
@@ -35,7 +35,7 @@
import com.thoughtworks.xstream.io.xml.XppDriver;
public class LibraryChartLoader {
- private static final Logger log = Red5LoggerFactory.getLogger(LibraryWmlLoader.class, webAppRootKey);
+ private static final Logger log = Red5LoggerFactory.getLogger(LibraryChartLoader.class, webAppRootKey);
private static final String fileExt = ".xchart";
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java
index 6df9f17..47c7b49 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryDocumentConverter.java
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.core.documents;
+import static org.apache.openmeetings.util.OmFileHelper.WML_EXTENSION;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import java.io.File;
@@ -38,13 +39,11 @@
public class LibraryDocumentConverter {
private static final Logger log = Red5LoggerFactory.getLogger(LibraryDocumentConverter.class, webAppRootKey);
- private static final String fileExt = ".wml";
-
public static String writeToLocalFolder(String fileName, @SuppressWarnings("rawtypes")ArrayList objList) {
try {
log.debug("filePath: " + OmFileHelper.getUploadWmlDir().getCanonicalPath());
- File file = new File(OmFileHelper.getUploadWmlDir(), fileName + fileExt);
+ File file = new File(OmFileHelper.getUploadWmlDir(), fileName + WML_EXTENSION);
if (file.exists()){
return "-20";
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java
index 0ab9142..4970738 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.core.documents;
+import static org.apache.openmeetings.util.OmFileHelper.WML_EXTENSION;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import java.io.BufferedReader;
@@ -27,11 +28,9 @@
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
+import java.util.List;
import org.apache.openmeetings.util.OmFileHelper;
-import org.dom4j.Element;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
@@ -40,14 +39,12 @@
public class LibraryWmlLoader {
private static final Logger log = Red5LoggerFactory.getLogger(LibraryWmlLoader.class, webAppRootKey);
- private static final String fileExt = ".wml";
- @SuppressWarnings({ "rawtypes" })
- public ArrayList loadWmlFile(String fileName){
+ public static List<?> loadWmlFile(String fileName){
try {
String name = fileName;
- if (!name.endsWith(fileExt)) {
- name += fileExt;
+ if (!name.endsWith(WML_EXTENSION)) {
+ name += WML_EXTENSION;
}
File file = new File(OmFileHelper.getUploadWmlDir(), name);
log.debug("filepathComplete: " + file);
@@ -58,7 +55,7 @@
try (InputStream is = new FileInputStream(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)))
{
- ArrayList lMapList = (ArrayList) xStream.fromXML(reader);
+ List<?> lMapList = (List<?>) xStream.fromXML(reader);
return lMapList;
}
@@ -66,185 +63,6 @@
log.error("loadWmlFile",err);
}
- return null;
+ return new ArrayList<>();
}
-
- /**
- * @deprecated
- * @param paintElement
- * @param subMap
- */
- @SuppressWarnings({ "unused", "rawtypes" })
- private static void createListObjectPaintByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
- try {
-
- LinkedHashMap<Integer,LinkedHashMap> pointMap = new LinkedHashMap<Integer,LinkedHashMap>();
- Element pointElements = paintElement.element("points");
- Integer k = 0;
-
- for ( Iterator i = pointElements.elementIterator( "point" ); i.hasNext(); ) {
- Element pointElement = (Element) i.next();
- LinkedHashMap<Integer,Object> singlePoint = new LinkedHashMap<Integer,Object>();
- singlePoint.put(0, pointElement.getName());
- singlePoint.put(1, Integer.valueOf(pointElement.attribute("val1").getText()));
- singlePoint.put(2, Integer.valueOf(pointElement.attribute("val2").getText()));
- singlePoint.put(3, Integer.valueOf(pointElement.attribute("val3").getText()));
- singlePoint.put(4, Integer.valueOf(pointElement.attribute("val4").getText()));
- pointMap.put(k, singlePoint);
- log.debug("createListObjectPaintByNode"+singlePoint);
- k++;
- }
- subMap.put(1, pointMap);
-
- subMap.put(2, paintElement.element("fillstyle").getText());
- subMap.put(3, Integer.valueOf(paintElement.element("linewidth").getText()));
- subMap.put(4, Integer.valueOf(paintElement.element("strokestyle").getText()));
- subMap.put(5, Integer.valueOf(paintElement.element("counter").getText()));
- subMap.put(6, Float.valueOf(paintElement.element("x").getText()));
- subMap.put(7, Float.valueOf(paintElement.element("y").getText()));
- subMap.put(8, Float.valueOf(paintElement.element("width").getText()));
- subMap.put(9, Float.valueOf(paintElement.element("height").getText()));
- subMap.put(10, paintElement.element("layername").getText());
-
- } catch (Exception err) {
- log.error("createListObjectPaintByNode",err);
- }
- }
-
- /**
- * @deprecated
- * @param paintElement
- * @param subMap
- */
- public void createListObjectLetterByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
- try {
-
- subMap.put(1, paintElement.element("textforfield").getText());
- subMap.put(2, Integer.valueOf(paintElement.element("fgcolor").getText()));
- subMap.put(3, Integer.valueOf(paintElement.element("fontsize").getText()));
- subMap.put(4, paintElement.element("fontstyle").getText());
- subMap.put(5, Integer.valueOf(paintElement.element("counter").getText()));
- subMap.put(6, Float.valueOf(paintElement.element("x").getText()));
- subMap.put(7, Float.valueOf(paintElement.element("y").getText()));
- subMap.put(8, Float.valueOf(paintElement.element("width").getText()));
- subMap.put(9, Float.valueOf(paintElement.element("height").getText()));
- subMap.put(10, paintElement.element("layername").getText());
-
- } catch (Exception err) {
- log.error("createListObjectLetterByNode",err);
- }
- }
-
- /**
- * @deprecated
- * @param paintElement
- * @param subMap
- */
- public void createListObjectImageByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
- try {
-
- subMap.put(1, paintElement.element("urlname").getText());
- subMap.put(2, paintElement.element("baseurl").getText());
- subMap.put(3, paintElement.element("filename").getText());
- subMap.put(4, paintElement.element("modulename").getText());
- subMap.put(5, paintElement.element("parentpath").getText());
- subMap.put(6, paintElement.element("room").getText());
- subMap.put(7, paintElement.element("domain").getText());
- subMap.put(8, Integer.valueOf(paintElement.element("counter").getText()));
- subMap.put(9, Float.valueOf(paintElement.element("x").getText()));
- subMap.put(10, Float.valueOf(paintElement.element("y").getText()));
- subMap.put(11, Float.valueOf(paintElement.element("width").getText()));
- subMap.put(12, Float.valueOf(paintElement.element("height").getText()));
- subMap.put(13, paintElement.element("layername").getText());
-
- } catch (Exception err) {
- log.error("createListObjectImageByNode",err);
- }
- }
-
- /**
- * @deprecated
- * @param paintElement
- * @param subMap
- */
- public void createListObjectObjecByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
- try {
-
- subMap.put(1, paintElement.element("fillstyle").getText());
- subMap.put(2, paintElement.element("linewidth").getText());
- subMap.put(3, Integer.valueOf(paintElement.element("strokestyle").getText()));
- subMap.put(4, Float.valueOf(paintElement.element("startx").getText()));
- subMap.put(5, Float.valueOf(paintElement.element("starty").getText()));
- subMap.put(6, Float.valueOf(paintElement.element("endx").getText()));
- subMap.put(7, Float.valueOf(paintElement.element("endy").getText()));
- subMap.put(8, Integer.valueOf(paintElement.element("counter").getText()));
- subMap.put(9, Float.valueOf(paintElement.element("x").getText()));
- subMap.put(10, Float.valueOf(paintElement.element("y").getText()));
- subMap.put(11, Float.valueOf(paintElement.element("width").getText()));
- subMap.put(12, Float.valueOf(paintElement.element("height").getText()));
- subMap.put(13, paintElement.element("layername").getText());
-
- } catch (Exception err) {
- log.error("createListObjectObjecByNode",err);
- }
- }
-
- /**
- * @deprecated
- * @param paintElement
- * @param subMap
- */
- public void createListObjectRectAndEllipseByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
- try {
-
- subMap.put(1, Integer.valueOf(paintElement.element("stroke").getText()));
- subMap.put(2, paintElement.element("line").getText());
- subMap.put(3, Integer.valueOf(paintElement.element("counter").getText()));
- subMap.put(4, Float.valueOf(paintElement.element("x").getText()));
- subMap.put(5, Float.valueOf(paintElement.element("y").getText()));
- subMap.put(6, Float.valueOf(paintElement.element("width").getText()));
- subMap.put(7, Float.valueOf(paintElement.element("height").getText()));
- subMap.put(8, paintElement.element("layername").getText());
-
- } catch (Exception err) {
- log.error("createListObjectObjecByNode",err);
- }
- }
-
- /**
- * @deprecated
- * @param paintElement
- * @param subMap
- */
- public void createListObjectSWFByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
- try {
-
- subMap.put(1, paintElement.element("urlname").getText());
- subMap.put(2, paintElement.element("baseurl").getText());
- subMap.put(3, paintElement.element("filename").getText());
- subMap.put(4, paintElement.element("modulename").getText());
- subMap.put(5, paintElement.element("parentpath").getText());
- subMap.put(6, paintElement.element("room").getText());
- subMap.put(7, paintElement.element("domain").getText());
- subMap.put(8, Integer.valueOf(paintElement.element("slideNumber").getText()));
- subMap.put(9, Float.valueOf(paintElement.element("innerx").getText()));
- subMap.put(10, Float.valueOf(paintElement.element("innery").getText()));
- subMap.put(11, Float.valueOf(paintElement.element("innerwidth").getText()));
- subMap.put(12, Float.valueOf(paintElement.element("innerheight").getText()));
- subMap.put(13, Integer.valueOf(paintElement.element("zoomlevel").getText()));
- subMap.put(14, Float.valueOf(paintElement.element("initwidth").getText()));
- subMap.put(15, Float.valueOf(paintElement.element("initheight").getText()));
- subMap.put(16, Integer.valueOf(paintElement.element("currentzoom").getText()));
- subMap.put(17, Integer.valueOf(paintElement.element("counter").getText()));
- subMap.put(18, Float.valueOf(paintElement.element("x").getText()));
- subMap.put(19, Float.valueOf(paintElement.element("y").getText()));
- subMap.put(20, Float.valueOf(paintElement.element("width").getText()));
- subMap.put(21, Float.valueOf(paintElement.element("height").getText()));
- subMap.put(22, paintElement.element("layername").getText());
-
- } catch (Exception err) {
- log.error("createListObjectImageByNode",err);
- }
- }
-
}
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
index 59bc84e..63be9f2 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
@@ -24,6 +24,7 @@
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.commons.transaction.util.FileHelper;
@@ -32,12 +33,14 @@
import org.apache.openmeetings.core.documents.LibraryDocumentConverter;
import org.apache.openmeetings.core.documents.LibraryWmlLoader;
import org.apache.openmeetings.core.documents.LoadLibraryPresentation;
+import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
import org.apache.openmeetings.db.dao.server.ISessionManager;
import org.apache.openmeetings.db.dao.server.SessiondataDao;
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.file.LibraryPresentation;
import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.file.FileItem;
import org.apache.openmeetings.db.entity.file.FileItem.Type;
import org.apache.openmeetings.db.entity.room.Client;
import org.apache.openmeetings.db.util.AuthLevelUtil;
@@ -47,7 +50,6 @@
import org.red5.server.api.Red5;
import org.red5.server.api.service.IPendingServiceCall;
import org.red5.server.api.service.IPendingServiceCallback;
-import org.red5.server.api.service.IServiceCapableConnection;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -68,9 +70,9 @@
@Autowired
private FileExplorerItemDao fileDao;
@Autowired
- private LibraryWmlLoader libraryWmlLoader;
- @Autowired
private WhiteboardManager whiteboardManagement;
+ @Autowired
+ private ScopeApplicationAdapter scopeAdapter;
public LibraryPresentation getPresentationPreviewFileExplorer(String SID, String parentFolder) {
try {
@@ -134,73 +136,45 @@
}
/**
- *
* Loads a Object from the library into the whiteboard of all participant of
* the current room
*
- * @param SID
- * @param room_id
- * @param fileId
- * @param whiteboardId
+ * @param uid - uid of the client performing operation
+ * @param wbId - id of whiteboard
+ * @param fi - FileItem of the Wml being loaded
*/
- @SuppressWarnings({ "rawtypes", "unchecked" })
- public void loadWmlObject(String SID, Long room_id, Long fileId, Long whiteboardId) {
- try {
- Long users_id = sessiondataDao.check(SID);
+ public void sendToWhiteboard(String uid, Long wbId, FileItem fi) {
+ Client client = sessionManager.getClientByPublicSIDAnyServer(uid).getRcl();
- if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
- IConnection current = Red5.getConnectionLocal();
- Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
-
- if (currentClient == null) {
- return;
- }
-
- FileExplorerItem fileExplorerItem = fileDao.get(fileId);
- if (fileExplorerItem == null) {
- log.warn("[loadWmlObject] Unable to load Wml file by Id {}", fileId);
- return;
- }
-
- ArrayList roomItems = libraryWmlLoader.loadWmlFile(fileExplorerItem.getHash());
-
- Map whiteboardObjClear = new HashMap();
- whiteboardObjClear.put(2, "clear");
- whiteboardObjClear.put(3, null);
-
- whiteboardManagement.addWhiteBoardObjectById(room_id, whiteboardObjClear, whiteboardId);
-
- for (int k = 0; k < roomItems.size(); k++) {
- ArrayList actionObject = (ArrayList)roomItems.get(k);
-
- Map whiteboardObj = new HashMap();
- whiteboardObj.put(2, "draw");
- whiteboardObj.put(3, actionObject);
-
- whiteboardManagement.addWhiteBoardObjectById(room_id, whiteboardObj, whiteboardId);
- }
-
- Map<String, Object> sendObject = new HashMap<String, Object>();
- sendObject.put("id", whiteboardId);
- sendObject.put("roomitems", roomItems);
-
- // Notify all Clients of that Scope (Room)
- for (IConnection conn : current.getScope().getClientConnections()) {
- if (conn != null) {
- if (conn instanceof IServiceCapableConnection) {
- Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
- if ((rcl == null) || rcl.isScreenClient()) {
- continue;
- } else {
- ((IServiceCapableConnection) conn).invoke("loadWmlToWhiteboardById", new Object[] { sendObject }, this);
- }
- }
- }
- }
- }
- } catch (Exception err) {
- log.error("[loadWmlObject] ", err);
+ if (client == null) {
+ log.warn("No client was found to send Wml:: {}", uid);
+ return;
}
+
+ List<?> roomItems = LibraryWmlLoader.loadWmlFile(fi.getHash());
+
+ Map<Integer, String> wbClear = new HashMap<>();
+ wbClear.put(2, "clear");
+ wbClear.put(3, null);
+
+ Long roomId = client.getRoomId();
+ whiteboardManagement.addWhiteBoardObjectById(roomId, wbClear, wbId);
+
+ for (int k = 0; k < roomItems.size(); k++) {
+ List<?> actionObject = (List<?>)roomItems.get(k);
+
+ Map<Integer, Object> whiteboardObj = new HashMap<>();
+ whiteboardObj.put(2, "draw");
+ whiteboardObj.put(3, actionObject);
+
+ whiteboardManagement.addWhiteBoardObjectById(roomId, whiteboardObj, wbId);
+ }
+
+ Map<String, Object> sendObject = new HashMap<String, Object>();
+ sendObject.put("id", wbId);
+ sendObject.put("roomitems", roomItems);
+
+ scopeAdapter.sendToScope(roomId, "loadWmlToWhiteboardById", sendObject);
}
/**
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
index 8dab317..bb57c19 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
@@ -1471,7 +1471,7 @@
boolean showDrawStatus = getWhiteboardDrawStatus();
- sendToScope(roomId, "sendVarsToWhiteboardById", new Object[]{showDrawStatus ? client : null, sendObject});
+ sendToScope(roomId, "sendVarsToWhiteboardById", new Object[] { showDrawStatus ? client : null, sendObject });
} catch (Exception err) {
log.error("[sendToWhiteboard]", err);
return -1;
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
index 7dc583e..506d119 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
@@ -70,6 +70,7 @@
public static final String profileImagePrefix = "_profile_";
public static final String thumbImagePrefix = "_thumb_";
public static final String dashboardFile = "dashboard.xml";
+ public static final String WML_EXTENSION = ".wml";
public static final String FLV_EXTENSION = ".flv";
public static final String MP4_EXTENSION = ".mp4";
public static final String OGG_EXTENSION = ".ogg";
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
index f5ba24a..3a22f0a 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
@@ -239,7 +239,6 @@
<bean id="generatePDF" class="org.apache.openmeetings.core.documents.GeneratePDF" />
<bean id="smsHandler" class="org.apache.openmeetings.core.mail.SMSHandler" />
<bean id="importInitvalues" class="org.apache.openmeetings.installation.ImportInitvalues" />
- <bean id="libraryWmlLoader" class="org.apache.openmeetings.core.documents.LibraryWmlLoader" />
<bean id="generateSWF" class="org.apache.openmeetings.core.converter.GenerateSWF" />
<bean id="fileUtils" class="org.apache.openmeetings.core.data.file.FileUtils" />
<bean id="ldapLoginManagement" class="org.apache.openmeetings.core.ldap.LdapLoginManagement" />
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java
index b40045e..a28bd25 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java
@@ -25,20 +25,16 @@
import org.junit.Test;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
public class TestFileParser extends AbstractJUnitDefaults {
private static final Logger log = Red5LoggerFactory.getLogger(TestFileParser.class, webAppRootKey);
- @Autowired
- private LibraryWmlLoader libraryWmlLoader;
-
@Test
public void testLoadWmlFile(){
try {
- libraryWmlLoader.loadWmlFile("filename1");
+ LibraryWmlLoader.loadWmlFile("filename1");
} catch (Exception err) {