Repository: openmeetings Updated Branches: refs/heads/master 7d80d7712 -> 568c47ac6
[OPENMEETINGS-1639] Load is implemented Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/568c47ac Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/568c47ac Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/568c47ac Branch: refs/heads/master Commit: 568c47ac6249f832d629b988f22cae5fefb383db Parents: 7d80d77 Author: Maxim Solodovnik <[email protected]> Authored: Sun Jul 2 00:19:04 2017 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Sun Jul 2 00:19:04 2017 +0700 ---------------------------------------------------------------------- .../core/data/file/FileProcessor.java | 5 +-- .../openmeetings/db/dto/room/Whiteboard.java | 15 +++----- .../apache/openmeetings/util/NullStringer.java | 39 ++++++++++++++++++++ .../web/room/RoomResourceReference.java | 2 +- .../openmeetings/web/room/wb/WbPanel.java | 38 ++++++------------- .../org/apache/openmeetings/web/room/wb/wb.js | 3 ++ 6 files changed, 62 insertions(+), 40 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/568c47ac/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java index 8c4b620..8ae3e6c 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java @@ -98,9 +98,6 @@ public class FileProcessor { } f.setHash(hash); - f = fileDao.update(f); - log.debug("fileId: " + f.getId()); - File file = f.getFile(ext); log.debug("writing file to: " + file); if (!file.getParentFile().exists() && !file.getParentFile().mkdirs()) { @@ -130,6 +127,8 @@ public class FileProcessor { result.addItem("processVideo " + i++, returnMap); } } + f = fileDao.update(f); + log.debug("fileId: " + f.getId()); // has to happen at the end, otherwise it will be overwritten //cause the variable is new initialized http://git-wip-us.apache.org/repos/asf/openmeetings/blob/568c47ac/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java index a11a800..be67d0e 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java @@ -18,8 +18,6 @@ */ package org.apache.openmeetings.db.dto.room; -import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; - import java.util.Collections; import java.util.Date; import java.util.LinkedHashMap; @@ -27,13 +25,11 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import org.red5.logging.Red5LoggerFactory; -import org.slf4j.Logger; +import org.apache.openmeetings.util.NullStringer; import com.github.openjson.JSONObject; public class Whiteboard { - private static final Logger log = Red5LoggerFactory.getLogger(Whiteboard.class, webAppRootKey); private long id; private Integer x = 0; private Integer y = 0; @@ -42,7 +38,6 @@ public class Whiteboard { private Map<String, JSONObject> roomItems = Collections.synchronizedMap(new LinkedHashMap<>()); private Date created = new Date(); private int slide = 0; - private int zIndex = 1; private String name; public Whiteboard() {} @@ -101,10 +96,8 @@ public class Whiteboard { public void clear() { roomItems.clear(); - zIndex = 1; } - //getter is required, otherwise roomItems are not available in red5 public Map<String, JSONObject> getRoomItems() { return roomItems; } @@ -143,11 +136,13 @@ public class Whiteboard { public JSONObject toJson() { //deep-copy - JSONObject json = new JSONObject(new JSONObject(this).toString()); + JSONObject json = new JSONObject(new JSONObject(this).toString(new NullStringer())); json.remove("id"); //filtering JSONObject items = json.getJSONObject("roomItems"); for (String uid : items.keySet()) { - items.getJSONObject(uid).remove("_src"); //filtering + JSONObject o = items.getJSONObject(uid); + o.remove("_src"); + o.remove("src"); //filtering } return json; } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/568c47ac/openmeetings-util/src/main/java/org/apache/openmeetings/util/NullStringer.java ---------------------------------------------------------------------- diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/NullStringer.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/NullStringer.java new file mode 100644 index 0000000..04a8d7c --- /dev/null +++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/NullStringer.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.openmeetings.util; + +import java.util.Map.Entry; + +import com.github.openjson.JSONStringer; + +public class NullStringer extends JSONStringer { + public NullStringer() { + super(); + } + + public NullStringer(int indent) { + //super(indent); FIXME TODO uncomment + super(); + } + + @Override + public JSONStringer entry(Entry<String, Object> entry) { + return this.key(entry.getKey()).value(entry.getValue()); + } +} http://git-wip-us.apache.org/repos/asf/openmeetings/blob/568c47ac/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java index a8d98a6..c4fd8bf 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java @@ -105,7 +105,7 @@ public class RoomResourceReference extends FileItemResourceReference<FileExplore Whiteboards wbs = getBean(WhiteboardCache.class).get(c.getRoomId()); if (!Strings.isEmpty(wuid) && !Strings.isEmpty(ruid) && ruid.equals(wbs.getUid())) { for (Entry<Long, Whiteboard> e : wbs.getWhiteboards().entrySet()) { - JSONObject file = e.getValue().getRoomItems().get(wuid); + JSONObject file = e.getValue().get(wuid); if (file != null && f.getId().equals(file.optLong("fileId"))) { return f; // item IS on WB } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/568c47ac/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java index e9b9aec..e70e410 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java @@ -46,6 +46,7 @@ import org.apache.openmeetings.db.entity.file.FileItem; import org.apache.openmeetings.db.entity.file.FileItem.Type; import org.apache.openmeetings.db.entity.room.Room.Right; import org.apache.openmeetings.db.entity.room.Room.RoomElement; +import org.apache.openmeetings.util.NullStringer; import org.apache.openmeetings.util.OmFileHelper; import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.common.NameDialog; @@ -76,7 +77,6 @@ import org.slf4j.Logger; import com.github.openjson.JSONArray; import com.github.openjson.JSONObject; -import com.github.openjson.JSONStringer; import com.github.openjson.JSONTokener; public class WbPanel extends Panel { @@ -105,6 +105,7 @@ public class WbPanel extends Panel { , clearAll , clearSlide , save + , load } private final AbstractDefaultAjaxBehavior wbAction = new AbstractDefaultAjaxBehavior() { private static final long serialVersionUID = 1L; @@ -242,7 +243,7 @@ public class WbPanel extends Panel { f.setName(getModelObject()); f = getBean(FileExplorerItemDao.class).update(f); try (BufferedWriter writer = Files.newBufferedWriter(f.getFile().toPath())) { - writer.write(wb.toJson().toString(2)); + writer.write(wb.toJson().toString(new NullStringer(2))); } catch (IOException e) { error("Unexpected error while saving WB: " + e.getMessage()); target.add(feedback); @@ -302,7 +303,7 @@ public class WbPanel extends Panel { .append(getAddWbJson(entry.getKey(), entry.getValue().getName()).toString()) .append(");")); JSONArray arr = new JSONArray(); - for (Entry<String, JSONObject> wbEntry : entry.getValue().getRoomItems().entrySet()) { + for (Entry<String, JSONObject> wbEntry : entry.getValue().entrySet()) { JSONObject o = wbEntry.getValue(); arr.put(addFileUrl(wbs.getUid(), o)); } @@ -415,19 +416,14 @@ public class WbPanel extends Panel { File f = fi.getFile(); if (f.exists() && f.isFile()) { try (BufferedReader br = Files.newBufferedReader(f.toPath())) { - JSONObject wbo = new JSONObject(new JSONTokener(br)); - /*WebSocketHelper.sendRoom( - roomId - , new JSONObject().put("type", "wb") - , null - , (o, c) -> { - return o.put("func", String.format("WbArea.%s(%s);" - , Action.createObj.name() - , getObjWbJson(wb.getId(), addFileUrl(ruid, file, fi, c)).toString()) - ).toString(); - } - );*/ - } catch (IOException e) { + JSONObject items = new JSONObject(new JSONTokener(br)).getJSONObject("roomItems"); + JSONArray arr = new JSONArray(); + for (String uid : items.keySet()) { + JSONObject o = items.getJSONObject(uid); + arr.put(addFileUrl(wbs.getUid(), o)); + } + sendWbAll(Action.load, getObjWbJson(wb.getId(), arr)); + } catch (Exception e) { log.error("Unexpected error while loading WB", e); } } @@ -470,14 +466,4 @@ public class WbPanel extends Panel { } } } - - //FIXME TODO openjson 1.0.2 - //private static class ObjectStringer - - private static class NullStringer extends JSONStringer { - @Override - public JSONStringer entry(Entry<String, Object> entry) { - return this.key(entry.getKey()).value(entry.getValue()); - } - } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/568c47ac/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js index cf86951..6c8a7be 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js @@ -200,8 +200,11 @@ var ShapeBase = function(wb) { var Text = function(wb, s) { var text = ShapeBase(wb); text.obj = null; + text.fill.color = '#000000'; text.stroke.width = 1; + text.stroke.color = '#000000'; text.style = {bold: false, italic: false}; + //TODO font size, background color text.mouseDown = function(o) { var canvas = this;
