use of com.github.openjson.JSONArray in project openmeetings by apache.
the class WbPanel method processWbAction.
@Override
protected void processWbAction(WbAction a, JSONObject obj, AjaxRequestTarget target) throws IOException {
Client c = rp.getClient();
if (c == null) {
return;
}
switch(a) {
case createObj:
case modifyObj:
{
JSONObject o = obj.optJSONObject("obj");
if (o != null && "pointer".equals(o.getString(ATTR_TYPE))) {
sendWbOthers(a, obj);
return;
}
}
break;
case downloadPdf:
{
boolean moder = c.hasRight(Room.Right.moderator);
Room r = rp.getRoom();
if ((moder && !r.isHidden(RoomElement.ActionMenu)) || (!moder && r.isAllowUserQuestions())) {
try (PDDocument doc = new PDDocument()) {
JSONArray arr = obj.getJSONArray("slides");
for (int i = 0; i < arr.length(); ++i) {
String base64Image = arr.getString(i).split(",")[1];
byte[] bb = Base64.decodeBase64(base64Image);
BufferedImage img = ImageIO.read(new ByteArrayInputStream(bb));
float width = img.getWidth();
float height = img.getHeight();
PDPage page = new PDPage(new PDRectangle(width, height));
PDImageXObject pdImageXObject = LosslessFactory.createFromImage(doc, img);
try (PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, false)) {
contentStream.drawImage(pdImageXObject, 0, 0, width, height);
}
doc.addPage(page);
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
doc.save(baos);
rp.startDownload(target, baos.toByteArray());
}
}
return;
}
case loadVideos:
{
StringBuilder sb = new StringBuilder("WbArea.initVideos(");
JSONArray arr = new JSONArray();
for (Entry<Long, Whiteboard> entry : wbm.list(roomId)) {
Whiteboard wb = entry.getValue();
for (JSONObject o : wb.list()) {
String ft = o.optString(ATTR_FILE_TYPE);
if (BaseFileItem.Type.Recording.name().equals(ft) || BaseFileItem.Type.Video.name().equals(ft)) {
JSONObject _sts = o.optJSONObject(PARAM_STATUS);
if (_sts == null) {
continue;
}
// copy
JSONObject sts = new JSONObject(_sts.toString());
sts.put("pos", sts.getDouble("pos") + (System.currentTimeMillis() - sts.getLong("updated")) * 1. / 1000);
arr.put(new JSONObject().put("wbId", wb.getId()).put("uid", o.getString("uid")).put(ATTR_SLIDE, o.getString(ATTR_SLIDE)).put(PARAM_STATUS, sts));
}
}
}
sb.append(arr.toString()).append(");");
target.appendJavaScript(sb);
return;
}
default:
break;
}
// presenter-right
if (c.hasRight(Right.presenter)) {
switch(a) {
case createWb:
{
Whiteboard wb = wbm.add(roomId, c.getUser().getLanguageId());
sendWbAll(WbAction.createWb, getAddWbJson(wb));
}
break;
case removeWb:
{
long id = obj.optLong("wbId", -1);
if (id > -1) {
wbm.remove(roomId, id);
sendWbAll(WbAction.removeWb, obj);
}
}
break;
case activateWb:
{
long _id = obj.optLong("wbId", -1);
if (_id > -1) {
wbm.activate(roomId, _id);
sendWbAll(WbAction.activateWb, obj);
}
}
break;
case renameWb:
{
Whiteboard wb = wbm.get(roomId).get(obj.optLong("wbId", -1));
if (wb != null) {
wbm.update(roomId, wb.setName(obj.getString("name")));
sendWbAll(WbAction.renameWb, obj);
}
}
break;
case setSlide:
{
Whiteboard wb = wbm.get(roomId).get(obj.optLong("wbId", -1));
if (wb != null) {
wb.setSlide(obj.optInt(ATTR_SLIDE, 0));
wbm.update(roomId, wb);
sendWbOthers(WbAction.setSlide, obj);
}
}
break;
case clearAll:
{
clearAll(roomId, obj.getLong("wbId"));
}
break;
case setSize:
{
Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
wb.setZoom(obj.getDouble("zoom"));
wb.setZoomMode(ZoomMode.valueOf(obj.getString("zoomMode")));
wbm.update(roomId, wb);
sendWbOthers(WbAction.setSize, getAddWbJson(wb));
}
break;
default:
break;
}
}
// wb-right
if (c.hasRight(Right.presenter) || c.hasRight(Right.whiteBoard)) {
switch(a) {
case createObj:
{
Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
JSONObject o = obj.getJSONObject("obj");
wb.put(o.getString("uid"), o);
wbm.update(roomId, wb);
addUndo(wb.getId(), new UndoObject(UndoObject.Type.add, o));
sendWbOthers(WbAction.createObj, obj);
}
break;
case modifyObj:
{
Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
JSONArray arr = obj.getJSONArray("obj");
JSONArray undo = new JSONArray();
for (int i = 0; i < arr.length(); ++i) {
JSONObject _o = arr.getJSONObject(i);
String uid = _o.getString("uid");
JSONObject po = wb.get(uid);
if (po != null) {
undo.put(po);
wb.put(uid, _o);
}
}
if (arr.length() != 0) {
wbm.update(roomId, wb);
addUndo(wb.getId(), new UndoObject(UndoObject.Type.modify, undo));
}
sendWbOthers(WbAction.modifyObj, obj);
}
break;
case deleteObj:
{
Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
JSONArray arr = obj.getJSONArray("obj");
JSONArray undo = new JSONArray();
for (int i = 0; i < arr.length(); ++i) {
JSONObject _o = arr.getJSONObject(i);
JSONObject u = wb.remove(_o.getString("uid"));
if (u != null) {
undo.put(u);
}
}
if (undo.length() != 0) {
wbm.update(roomId, wb);
addUndo(wb.getId(), new UndoObject(UndoObject.Type.remove, undo));
}
sendWbAll(WbAction.deleteObj, obj);
}
break;
case clearSlide:
{
Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
JSONArray arr = wb.clearSlide(obj.getInt(ATTR_SLIDE));
if (arr.length() != 0) {
wbm.update(roomId, wb);
addUndo(wb.getId(), new UndoObject(UndoObject.Type.remove, arr));
}
sendWbAll(WbAction.clearSlide, obj);
}
break;
case save:
wb2save = obj.getLong("wbId");
fileName.open(target);
break;
case undo:
{
Long wbId = obj.getLong("wbId");
UndoObject uo = getUndo(wbId);
if (uo != null) {
Whiteboard wb = wbm.get(roomId).get(wbId);
switch(uo.getType()) {
case add:
{
JSONObject o = new JSONObject(uo.getObject());
wb.remove(o.getString("uid"));
wbm.update(roomId, wb);
sendWbAll(WbAction.deleteObj, obj.put("obj", new JSONArray().put(o)));
}
break;
case remove:
{
JSONArray arr = new JSONArray(uo.getObject());
for (int i = 0; i < arr.length(); ++i) {
JSONObject o = arr.getJSONObject(i);
wb.put(o.getString("uid"), o);
}
wbm.update(roomId, wb);
sendWbAll(WbAction.createObj, obj.put("obj", new JSONArray(uo.getObject())));
}
break;
case modify:
{
JSONArray arr = new JSONArray(uo.getObject());
for (int i = 0; i < arr.length(); ++i) {
JSONObject o = arr.getJSONObject(i);
wb.put(o.getString("uid"), o);
}
wbm.update(roomId, wb);
sendWbAll(WbAction.modifyObj, obj.put("obj", arr));
}
break;
}
}
}
break;
case videoStatus:
{
Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
String uid = obj.getString("uid");
JSONObject po = wb.get(uid);
if (po != null && "video".equals(po.getString(ATTR_TYPE))) {
JSONObject ns = obj.getJSONObject(PARAM_STATUS);
po.put(PARAM_STATUS, ns.put("updated", System.currentTimeMillis()));
wbm.update(roomId, wb.put(uid, po));
obj.put(ATTR_SLIDE, po.getInt(ATTR_SLIDE));
sendWbAll(WbAction.videoStatus, obj);
}
}
break;
default:
break;
}
}
}
use of com.github.openjson.JSONArray in project openmeetings by apache.
the class WbPanel method getArray.
private static JSONArray getArray(JSONObject wb, Function<JSONObject, JSONObject> postprocess) {
JSONObject items = wb.getJSONObject(ITEMS_KEY);
JSONArray arr = new JSONArray();
for (String uid : items.keySet()) {
JSONObject o = items.getJSONObject(uid);
if (postprocess != null) {
o = postprocess.apply(o);
}
arr.put(o);
}
return arr;
}
use of com.github.openjson.JSONArray in project openmeetings by apache.
the class WbConverter method processPath.
private static void processPath(Whiteboard wb, List<?> props) {
if (props.size() < 13) {
return;
}
String color = getColor(getInt(props, 4));
JSONObject o = setColor(init(wb, props), color, null).put(ATTR_TYPE, "path").put(ATTR_STROKE, props.get(3));
@SuppressWarnings("unchecked") List<List<?>> points = (List<List<?>>) props.get(1);
JSONArray path = new JSONArray();
for (List<?> point : points) {
if (path.length() == 0) {
path.put(new JSONArray(Arrays.asList("M", getInt(point, 1), getInt(point, 2))));
} else if (path.length() == points.size() - 1) {
path.put(new JSONArray(Arrays.asList("L", getInt(point, 3), getInt(point, 4))));
} else {
path.put(new JSONArray(Arrays.asList("Q", getInt(point, 1), getInt(point, 2), getInt(point, 3), getInt(point, 4))));
}
}
add(wb, o.put("path", path).put(ATTR_OPACITY, props.get(5)));
}
use of com.github.openjson.JSONArray in project openmeetings by apache.
the class TestCalendarService method testCreateWithOmMm.
@Test
public void testCreateWithOmMm() throws Exception {
JSONObject o = createAppointment("test").put("meetingMembers", new JSONArray().put(new JSONObject().put("user", new JSONObject().put("id", 1))));
String uuid = UUID.randomUUID().toString();
User u = getUser(uuid);
u.getGroupUsers().add(new GroupUser(getBean(GroupDao.class).get(1L), u));
u = createUser(getBean(UserDao.class), u);
ServiceResult sr = login(u.getLogin(), createPass());
Response resp = getClient(getCalendarUrl()).path("/").query("sid", sr.getMessage()).form(new Form().param("appointment", o.toString()));
assertNotNull("Valid AppointmentDTO should be returned", resp);
assertEquals("Call should be successful", Response.Status.OK.getStatusCode(), resp.getStatus());
AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
assertNotNull("Valid DTO should be returned", dto);
assertNotNull("DTO id should be valid", dto.getId());
}
use of com.github.openjson.JSONArray in project openmeetings by apache.
the class AppointmentParamConverter method fromString.
@Override
public AppointmentDTO fromString(String val) {
JSONObject o = new JSONObject(val);
if (o.has(ROOT)) {
o = o.getJSONObject(ROOT);
}
AppointmentDTO a = new AppointmentDTO();
a.setId(optLong(o, "id"));
a.setTitle(o.optString("title"));
a.setLocation(o.optString("location"));
a.setOwner(UserDTO.get(o.optJSONObject("owner")));
String tzId = a.getOwner() == null ? null : a.getOwner().getTimeZoneId();
a.setStart(CalendarParamConverter.get(o.optString("start"), tzId));
a.setEnd(CalendarParamConverter.get(o.optString("end"), tzId));
a.setDescription(o.optString("description"));
a.setInserted(DateParamConverter.get(o.optString("inserted")));
a.setUpdated(DateParamConverter.get(o.optString("updated")));
a.setDeleted(o.optBoolean("deleted"));
a.setReminder(optEnum(Reminder.class, o, "reminder"));
a.setRoom(RoomDTO.get(o.optJSONObject("room")));
a.setIcalId(o.optString("icalId"));
JSONArray mm = o.optJSONArray("meetingMembers");
if (mm != null) {
for (int i = 0; i < mm.length(); ++i) {
a.getMeetingMembers().add(MeetingMemberDTO.get(mm.getJSONObject(i)));
}
}
a.setLanguageId(o.optLong("languageId"));
a.setPassword(o.optString("password"));
a.setPasswordProtected(o.optBoolean("passwordProtected"));
a.setConnectedEvent(o.optBoolean("connectedEvent"));
a.setReminderEmailSend(o.optBoolean("reminderEmailSend"));
return a;
}
Aggregations