Example usage for io.vertx.core.json JsonObject getJsonArray

List of usage examples for io.vertx.core.json JsonObject getJsonArray

Introduction

In this page you can find the example usage for io.vertx.core.json JsonObject getJsonArray.

Prototype

public JsonArray getJsonArray(String key) 

Source Link

Document

Get the JsonArray value with the specified key

Usage

From source file:org.entcore.conversation.controllers.ConversationController.java

License:Open Source License

@Put("delete")
@SecuredAction(value = "", type = ActionType.RESOURCE)
@ResourceFilter(MultipleMessageUserFilter.class)
public void delete(final HttpServerRequest request) {
    bodyToJson(request, new Handler<JsonObject>() {
        @Override//from  w  w  w . jav a2s  . c  om
        public void handle(JsonObject body) {
            JsonArray ids = body.getJsonArray("id");
            if (ids == null || ids.isEmpty()) {
                badRequest(request);
                return;
            }
            deleteMessages(request, ids.getList(), false);
        }
    });
}

From source file:org.entcore.conversation.controllers.ConversationController.java

License:Open Source License

@Post("toggleUnread")
@SecuredAction(value = "", type = ActionType.RESOURCE)
@ResourceFilter(MultipleMessageUserFilter.class)
public void toggleUnread(final HttpServerRequest request) {
    bodyToJson(request, new Handler<JsonObject>() {
        @Override//from   w w w .  ja  v a 2s  .c o  m
        public void handle(JsonObject body) {
            final JsonArray ids = body.getJsonArray("id");
            final Boolean unread = body.getBoolean("unread");
            if (ids == null || ids.isEmpty() || unread == null) {
                badRequest(request);
                return;
            }
            UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() {
                @Override
                public void handle(final UserInfos user) {
                    if (user != null) {
                        conversationService.toggleUnread(ids.getList(), unread, user,
                                defaultResponseHandler(request));
                    } else {
                        unauthorized(request);
                    }
                }
            });
        }
    });
}

From source file:org.entcore.conversation.controllers.ConversationController.java

License:Open Source License

@Put("move/userfolder/:folderId")
@SecuredAction(value = "", type = ActionType.RESOURCE)
@ResourceFilter(FoldersMessagesFilter.class)
public void move(final HttpServerRequest request) {
    final String folderId = request.params().get("folderId");
    bodyToJson(request, new Handler<JsonObject>() {
        @Override//from w w  w. j a  v  a2  s  . c  o  m
        public void handle(JsonObject body) {
            final JsonArray messageIds = body.getJsonArray("id");
            if (messageIds == null || messageIds.size() == 0) {
                badRequest(request);
                return;
            }

            Handler<UserInfos> userInfosHandler = new Handler<UserInfos>() {
                public void handle(final UserInfos user) {
                    if (user == null) {
                        unauthorized(request);
                        return;
                    }
                    conversationService.moveToFolder(messageIds.getList(), folderId, user,
                            defaultResponseHandler(request));
                }
            };

            UserUtils.getUserInfos(eb, request, userInfosHandler);

        }
    });
}

From source file:org.entcore.conversation.controllers.ConversationController.java

License:Open Source License

@Put("message/:id/forward/:forwardedId")
@SecuredAction(value = "", type = ActionType.RESOURCE)
@ResourceFilter(MessageUserFilter.class)
public void forwardAttachments(final HttpServerRequest request) {
    final String messageId = request.params().get("id");
    final String forwardedId = request.params().get("forwardedId");

    //1 - get user infos
    Handler<UserInfos> userInfosHandler = new Handler<UserInfos>() {
        public void handle(final UserInfos user) {
            if (user == null) {
                unauthorized(request);//  ww w.j  av  a 2 s.  c  om
                return;
            }
            //2 - get user quota
            getUserQuota(user.getUserId(), new Handler<JsonObject>() {
                public void handle(JsonObject j) {
                    if (j == null || "error".equals(j.getString("status"))) {
                        badRequest(request, j == null ? "" : j.getString("message"));
                        return;
                    }

                    final long quotaLeft = j.getLong("quota", 0l) - j.getLong("storage", 0l);

                    //3 - get forwarded message attachments
                    conversationService.get(forwardedId, user, new Handler<Either<String, JsonObject>>() {
                        @Override
                        public void handle(Either<String, JsonObject> event) {
                            if (event.isLeft()) {
                                badRequest(request, event.left().getValue());
                                return;
                            }
                            if (event.isRight() && event.right().getValue() == null) {
                                badRequest(request, event.right().getValue().toString());
                                return;
                            }
                            final JsonObject neoResult = event.right().getValue();
                            final JsonArray attachments = neoResult.getJsonArray("attachments");

                            long attachmentsSize = 0l;
                            for (Object genericObj : attachments) {
                                JsonObject attachment = (JsonObject) genericObj;
                                attachmentsSize += attachment.getLong("size", 0l);
                            }
                            final long finalAttachmentsSize = attachmentsSize;

                            // if total attachment size > quota left, return 403
                            if (attachmentsSize > quotaLeft) {
                                forbidden(request, "forward.failed.quota");
                                return;
                            }

                            //4 - forward attachments, add relationships between the message and the already existing attachments
                            conversationService.forwardAttachments(forwardedId, messageId, user,
                                    new Handler<Either<String, JsonObject>>() {
                                        @Override
                                        public void handle(Either<String, JsonObject> event) {
                                            if (event.isLeft()) {
                                                badRequest(request, event.left().getValue());
                                                return;
                                            }

                                            //5 - update user quota
                                            updateUserQuota(user.getUserId(), finalAttachmentsSize,
                                                    new Handler<Void>() {
                                                        @Override
                                                        public void handle(Void event) {
                                                            ok(request);
                                                        }
                                                    });
                                        }

                                    });
                        }
                    });
                }
            });
        }
    };
    UserUtils.getUserInfos(eb, request, userInfosHandler);
}

From source file:org.entcore.conversation.service.impl.DefaultConversationService.java

License:Open Source License

private boolean displayNamesCondition(JsonObject message) {
    return message != null && ((message.containsKey("from") && !message.getString("from").trim().isEmpty())
            || (message.containsKey("to") && message.getJsonArray("to").size() > 0)
            || (message.containsKey("cc") && message.getJsonArray("cc").size() > 0));
}

From source file:org.entcore.conversation.service.impl.DefaultConversationService.java

License:Open Source License

private void sendWithAttachments(final String parentMessageId, final String messageId, JsonArray attachments,
        final UserInfos user, final Handler<Either<String, JsonObject>> result) {
    long totalAttachmentsSize = 0l;
    for (Object o : attachments) {
        totalAttachmentsSize = totalAttachmentsSize + ((JsonObject) o).getLong("size", 0l);
    }/*from www .jav a2 s .  com*/

    final String usersQuery;
    JsonObject params = new JsonObject().put("userId", user.getUserId()).put("messageId", messageId)
            .put("draft", State.DRAFT.name()).put("outbox", "OUTBOX").put("inbox", "INBOX")
            .put("sent", State.SENT.name()).put("attachmentsSize", totalAttachmentsSize).put("true", true);
    if (parentMessageId != null && !parentMessageId.trim().isEmpty()) { // reply
        usersQuery = "MATCH (m:ConversationMessage { id : {parentMessageId}}) "
                + "WITH (COLLECT(visibles.id) + coalesce(m.to, '') + coalesce(m.cc, '') + coalesce(m.from, '')) as vis "
                + "MATCH (v:Visible) " + "WHERE v.id IN vis " + "WITH DISTINCT v ";
        params.put("parentMessageId", parentMessageId);
    } else {
        usersQuery = "WITH visibles as v ";
    }

    String query = usersQuery
            + "MATCH v<-[:IN*0..1]-(u:User), (message:ConversationMessage)-[:HAS_ATTACHMENT]->(attachment: MessageAttachment) "
            + "WHERE (v: User or v:Group) "
            + "AND message.id = {messageId} AND message.state = {draft} AND message.from = {userId} AND "
            + "(v.id IN message.to OR v.id IN message.cc) "
            + "WITH DISTINCT u, message, (v.id + '$' + coalesce(v.displayName, ' ') + '$' + "
            + "coalesce(v.name, ' ') + '$' + coalesce(v.groupDisplayName, ' ')) as dNames, COLLECT(distinct attachment.id) as attachments "
            + "MATCH (ub: UserBook)<-[:USERBOOK]-(u)-[:HAS_CONVERSATION]->(c:Conversation {active:{true}})"
            + "-[:HAS_CONVERSATION_FOLDER]->(f:ConversationSystemFolder {name:{inbox}}) "
            + "WHERE (ub.quota - ub.storage) >= {attachmentsSize} "
            + "CREATE UNIQUE f-[:HAS_CONVERSATION_MESSAGE { unread: {true}, attachments: attachments }]->message "
            + "SET ub.storage = ub.storage + {attachmentsSize} "
            + "WITH message, COLLECT(c.userId) as sentIds, COLLECT(distinct u) as users, "
            + "COLLECT(distinct dNames) as displayNames "
            + "MATCH (s:User {id : {userId}})-[:HAS_CONVERSATION]->(:Conversation)"
            + "-[:HAS_CONVERSATION_FOLDER]->(fOut:ConversationSystemFolder {name : {outbox}}), "
            + "message<-[r:HAS_CONVERSATION_MESSAGE]-(fDraft:ConversationSystemFolder {name : {draft}}) "
            + "SET message.state = {sent}, "
            + "message.displayNames = displayNames + (s.id + '$' + coalesce(s.displayName, ' ') + '$ $ ') "
            + "CREATE UNIQUE fOut-[:HAS_CONVERSATION_MESSAGE { insideFolder: r.insideFolder, attachments: r.attachments }]->message "
            + "DELETE r " + "RETURN sentIds, message.id as id";

    findVisibles(eb, user.getUserId(), query, params, true, true, false, new Handler<JsonArray>() {
        @Override
        public void handle(JsonArray event) {
            if (event != null && event.size() == 1 && (event.getValue(0) instanceof JsonObject)) {

                JsonObject resultObj = event.getJsonObject(0);
                JsonArray sentIds = resultObj.getJsonArray("sentIds");
                String messageId = resultObj.getString("id");

                String query = usersQuery + "MATCH v<-[:IN*0..1]-(u:User), (message:ConversationMessage) "
                        + "WHERE (v: User or v:Group) "
                        + "AND message.id = {messageId} AND message.from = {userId} AND "
                        + "(v.id IN message.to OR v.id IN message.cc) "
                        + "RETURN EXTRACT(user IN FIlTER(x IN COLLECT(u) WHERE NOT(x.id IN {sentIds}))|user.displayName) as undelivered, {sentIds} as sentIds, [] as inactive, "
                        + "{sentIdsLength} as sent, message.id as id, message.subject as subject";

                JsonObject params = new JsonObject().put("userId", user.getUserId()).put("messageId", messageId)
                        .put("sentIds", sentIds).put("sentIdsLength", sentIds.size());
                if (parentMessageId != null && !parentMessageId.trim().isEmpty()) {
                    params.put("parentMessageId", parentMessageId);
                }

                findVisibles(eb, user.getUserId(), query, params, true, true, false, new Handler<JsonArray>() {
                    @Override
                    public void handle(JsonArray event) {
                        if (event != null && event.size() == 1 && (event.getValue(0) instanceof JsonObject)) {
                            result.handle(new Either.Right<String, JsonObject>(event.getJsonObject(0)));
                        } else {
                            result.handle(new Either.Left<String, JsonObject>("conversation.send.error"));
                        }
                    }
                });
            } else {
                result.handle(new Either.Left<String, JsonObject>("conversation.send.error"));
            }
        }
    });
}

From source file:org.entcore.directory.controllers.ClassController.java

License:Open Source License

@Put("/class/:classId/apply")
@SecuredAction(value = "", type = ActionType.RESOURCE)
public void applyComRulesAndRegistryEvent(final HttpServerRequest request) {
    bodyToJson(request, new Handler<JsonObject>() {
        @Override/*from  www.  j  a  v a 2s. com*/
        public void handle(JsonObject body) {
            final String classId = request.params().get("classId");
            JsonArray userIds = body.getJsonArray("userIds");
            if (userIds != null) {
                ClassController.this.initPostCreate(classId, userIds);
                request.response().end();
            } else {
                badRequest(request);
            }
        }
    });
}

From source file:org.entcore.directory.controllers.GroupController.java

License:Open Source License

@Put("/group/:groupId/users/add")
@SecuredAction(value = "", type = ActionType.RESOURCE)
@ResourceFilter(AdminFilter.class)
public void addUsers(final HttpServerRequest request) {
    final String groupId = request.params().get("groupId");
    if (groupId != null && !groupId.trim().isEmpty()) {
        bodyToJson(request, new Handler<JsonObject>() {
            @Override//from  ww w  .  j a v  a2s. com
            public void handle(JsonObject body) {
                final JsonArray userIds = body.getJsonArray("userIds");
                groupService.addUsers(groupId, userIds, new Handler<Either<String, JsonObject>>() {
                    @Override
                    public void handle(Either<String, JsonObject> res) {
                        if (res.isRight()) {
                            JsonObject j = new JsonObject().put("action", "setCommunicationRules")
                                    .put("groupId", groupId);
                            eb.send("wse.communication", j);
                            ApplicationUtils.publishModifiedUserGroup(eb, userIds);
                            renderJson(request, res.right().getValue());
                        } else {
                            renderJson(request, new JsonObject().put("error", res.left().getValue()), 400);
                        }
                    }
                });
            }
        });
    }
}

From source file:org.entcore.directory.controllers.GroupController.java

License:Open Source License

@Put("/group/:groupId/users/delete")
@SecuredAction(value = "", type = ActionType.RESOURCE)
@ResourceFilter(AdminFilter.class)
public void removeUsers(final HttpServerRequest request) {
    final String groupId = request.params().get("groupId");
    if (groupId != null && !groupId.trim().isEmpty()) {
        bodyToJson(request, new Handler<JsonObject>() {
            @Override//from   www  .  jav a 2  s  . c om
            public void handle(JsonObject body) {
                final JsonArray userIds = body.getJsonArray("userIds");
                groupService.removeUsers(groupId, userIds, defaultResponseHandler(request));
            }
        });
    }
}

From source file:org.entcore.directory.controllers.ProfileController.java

License:Open Source License

@Post("/functiongroup")
@SecuredAction("profile.create.function.group")
public void createFunctionGroup(final HttpServerRequest request) {
    bodyToJson(request, pathPrefix + "createFunctionGroup", new Handler<JsonObject>() {
        @Override// ww w. j a  v a  2 s.  c o  m
        public void handle(JsonObject event) {
            profileService.createFunctionGroup(event.getJsonArray("functionsCodes"), event.getString("name"),
                    event.getString("externalId"), notEmptyResponseHandler(request, 201));
        }
    });
}