Example usage for io.vertx.core.json JsonArray JsonArray

List of usage examples for io.vertx.core.json JsonArray JsonArray

Introduction

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

Prototype

public JsonArray() 

Source Link

Document

Create an empty instance

Usage

From source file:org.entcore.blog.services.impl.DefaultPostService.java

License:Open Source License

@Override
public void addComment(String blogId, String postId, final String comment, final UserInfos author,
        final Handler<Either<String, JsonObject>> result) {
    if (comment == null || comment.trim().isEmpty()) {
        result.handle(new Either.Left<String, JsonObject>("Validation error : invalid comment."));
        return;/*  w  ww.  ja  v a2s.  c o m*/
    }
    QueryBuilder query = QueryBuilder.start("_id").is(postId).put("blog.$id").is(blogId);
    final JsonObject q = MongoQueryBuilder.build(query);
    JsonObject keys = new JsonObject().put("blog", 1);
    JsonArray fetch = new JsonArray().add("blog");
    mongo.findOne(POST_COLLECTION, q, keys, fetch, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> event) {
            if ("ok".equals(event.body().getString("status"))
                    && event.body().getJsonObject("result", new JsonObject()).size() > 0) {
                BlogService.CommentType type = Utils.stringToEnum(
                        event.body().getJsonObject("result").getJsonObject("blog", new JsonObject())
                                .getString("comment-type"),
                        BlogService.CommentType.RESTRAINT, BlogService.CommentType.class);
                if (BlogService.CommentType.NONE.equals(type)) {
                    result.handle(new Either.Left<String, JsonObject>("Comments are disabled for this blog."));
                    return;
                }
                StateType s = BlogService.CommentType.IMMEDIATE.equals(type) ? StateType.PUBLISHED
                        : StateType.SUBMITTED;
                JsonObject user = new JsonObject().put("userId", author.getUserId())
                        .put("username", author.getUsername()).put("login", author.getLogin());
                JsonObject c = new JsonObject().put("comment", comment).put("id", UUID.randomUUID().toString())
                        .put("state", s.name()).put("author", user).put("created", MongoDb.now());
                MongoUpdateBuilder updateQuery = new MongoUpdateBuilder().push("comments", c);
                mongo.update(POST_COLLECTION, q, updateQuery.build(), new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> res) {
                        result.handle(Utils.validResult(res));
                    }
                });
            } else {
                result.handle(Utils.validResult(event));
            }
        }
    });
}

From source file:org.entcore.blog.services.impl.DefaultPostService.java

License:Open Source License

@Override
public void listComment(String blogId, String postId, final UserInfos user,
        final Handler<Either<String, JsonArray>> result) {
    final QueryBuilder query = QueryBuilder.start("_id").is(postId).put("blog.$id").is(blogId);
    JsonObject keys = new JsonObject().put("comments", 1).put("blog", 1);
    JsonArray fetch = new JsonArray().add("blog");
    mongo.findOne(POST_COLLECTION, MongoQueryBuilder.build(query), keys, fetch,
            new Handler<Message<JsonObject>>() {
                @Override//from w  w  w .j  ava  2 s  . com
                public void handle(Message<JsonObject> event) {
                    JsonArray comments = new JsonArray();
                    if ("ok".equals(event.body().getString("status"))
                            && event.body().getJsonObject("result", new JsonObject()).size() > 0) {
                        JsonObject res = event.body().getJsonObject("result");
                        boolean userIsManager = userIsManager(user, res.getJsonObject("blog"));
                        for (Object o : res.getJsonArray("comments", new JsonArray())) {
                            if (!(o instanceof JsonObject))
                                continue;
                            JsonObject j = (JsonObject) o;
                            if (userIsManager || StateType.PUBLISHED.name().equals(j.getString("state"))
                                    || user.getUserId().equals(
                                            j.getJsonObject("author", new JsonObject()).getString("userId"))) {
                                comments.add(j);
                            }
                        }
                    }
                    result.handle(new Either.Right<String, JsonArray>(comments));
                }
            });
}

From source file:org.entcore.common.notification.NotificationUtils.java

License:Open Source License

public static void getFcmTokensByUser(String userId, final Handler<Either<String, JsonArray>> handler) {
    final JsonObject params = new JsonObject().put("userId", userId);

    String query = "MATCH (u:User {id:{userId}})-[:PREFERS]->(uac:UserAppConf)"
            + " RETURN uac.fcmTokens AS tokens";

    Neo4j.getInstance().execute(query, params,
            validUniqueResultHandler(new Handler<Either<String, JsonObject>>() {
                @Override// w  w w .j a  va 2s  . c  o m
                public void handle(Either<String, JsonObject> event) {
                    if (event.isRight()) {
                        JsonArray result = event.right().getValue().getJsonArray("tokens");
                        if (result == null)
                            result = new JsonArray();
                        handler.handle(new Either.Right<String, JsonArray>(result));
                    } else {
                        handler.handle(new Either.Left<String, JsonArray>(event.left().getValue()));
                    }
                }
            }));
}

From source file:org.entcore.common.notification.NotificationUtils.java

License:Open Source License

public static void getFcmTokensByUsers(JsonArray userIds, final Handler<Either<String, JsonArray>> handler) {
    final JsonObject params = new JsonObject().put("userIds", userIds);

    String query = "MATCH (u:User)-[:PREFERS]->(uac:UserAppConf) WHERE u.id IN {userIds} "
            + " UNWIND(uac.fcmTokens) as token WITH DISTINCT token RETURN collect(token) as tokens";

    Neo4j.getInstance().execute(query, params,
            validUniqueResultHandler(new Handler<Either<String, JsonObject>>() {
                @Override/*  w  w  w  .  jav  a 2 s  . com*/
                public void handle(Either<String, JsonObject> event) {
                    if (event.isRight()) {
                        JsonArray result = event.right().getValue().getJsonArray("tokens");
                        if (result == null)
                            result = new JsonArray();
                        handler.handle(new Either.Right<String, JsonArray>(result));
                    } else {
                        handler.handle(new Either.Left<String, JsonArray>(event.left().getValue()));
                    }
                }
            }));
}

From source file:org.entcore.common.share.impl.GenericShareService.java

License:Open Source License

protected void getNotifyMembers(Handler<Either<String, JsonObject>> handler, JsonArray oldShared,
        JsonArray members, Function<Object, String> f) {
    JsonArray notifyMembers;/*from   w  w w  . j a  v  a 2  s .com*/
    if (oldShared != null && oldShared.size() > 0 && members != null && members.size() > 0) {
        final Set<String> oldMembersIds = oldShared.stream().map(f).collect(Collectors.toSet());
        notifyMembers = new JsonArray();
        for (Object o : members) {
            final JsonObject j = (JsonObject) o;
            final String memberId = getOrElse(j.getString("groupId"), j.getString("userId"));
            if (!oldMembersIds.contains(memberId)) {
                notifyMembers.add(j);
            }
        }
    } else {
        notifyMembers = members;
    }
    handler.handle(new Either.Right<>(new JsonObject().put("notify-timeline-array", notifyMembers)));
}

From source file:org.entcore.common.share.impl.SqlShareService.java

License:Open Source License

@Override
public void share(String userId, String resourceId, JsonObject share,
        Handler<Either<String, JsonObject>> handler) {
    shareValidation(resourceId, userId, share, res -> {
        if (res.isRight()) {
            final SqlStatementsBuilder s = new SqlStatementsBuilder();
            s.prepared("SELECT member_id FROM " + shareTable + " WHERE resource_id = ?",
                    new JsonArray().add(resourceId));
            s.prepared("DELETE FROM " + shareTable + " WHERE resource_id = ?", new JsonArray().add(resourceId));
            final JsonArray users = res.right().getValue().getJsonArray("users");
            if (users != null && users.size() > 0) {
                s.raw("LOCK TABLE " + schema + "users IN SHARE ROW EXCLUSIVE MODE");
                for (Object u : users) {
                    s.raw("INSERT INTO " + schema + "users (id) SELECT '" + u.toString()
                            + "' WHERE NOT EXISTS (SELECT * FROM " + schema + "users WHERE id='" + u.toString()
                            + "');");
                }/*  w w  w  .j  a  va 2  s.  co m*/
            }
            final JsonArray groups = res.right().getValue().getJsonArray("groups");
            if (groups != null && groups.size() > 0) {
                s.raw("LOCK TABLE " + schema + "groups IN SHARE ROW EXCLUSIVE MODE");
                for (Object g : groups) {
                    s.raw("INSERT INTO " + schema + "groups (id) SELECT '" + g.toString()
                            + "' WHERE NOT EXISTS (SELECT * FROM " + schema + "groups WHERE id='" + g.toString()
                            + "');");
                }
            }
            s.insert(shareTable, new JsonArray().add("member_id").add("resource_id").add("action"),
                    res.right().getValue().getJsonArray("shared"));
            sql.transaction(s.build(), SqlResult.validResultHandler(0, old -> {
                if (old.isRight()) {
                    JsonArray oldMembers = old.right().getValue();
                    JsonArray members = res.right().getValue().getJsonArray("notify-members");
                    getNotifyMembers(handler, oldMembers, members,
                            (m -> ((JsonObject) m).getString("member_id")));
                } else {
                    handler.handle(new Either.Left<>(old.left().getValue()));
                }
            }));
        } else {
            handler.handle(res);
        }
    });
}

From source file:org.entcore.common.share.impl.SqlShareService.java

License:Open Source License

@Override
protected void prepareSharedArray(String resourceId, String type, JsonArray shared, String attr,
        Set<String> actions) {
    for (String action : actions) {
        shared.add(new JsonArray().add(attr).add(resourceId).add(action));
    }//from w  w w.  java 2  s .  c  o m

}

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

License:Open Source License

private void deleteMessages(final HttpServerRequest request, final List<String> ids, final Boolean deleteAll,
        Handler<Either<String, JsonArray>> handler) {
    getUserInfos(eb, request, new Handler<UserInfos>() {
        @Override/*from  ww  w .j a v a 2 s.com*/
        public void handle(final UserInfos user) {
            if (user != null) {
                conversationService.delete(ids, deleteAll, user, new Handler<Either<String, JsonArray>>() {
                    @Override
                    public void handle(Either<String, JsonArray> event) {
                        if (event.isLeft()) {
                            if (handler != null) {
                                handler.handle(event);
                            } else {
                                badRequest(request, event.left().getValue());
                            }
                            return;
                        }

                        JsonArray results = event.right().getValue();
                        final long freeQuota = results.getJsonArray(0).getJsonObject(0).getLong("totalquota",
                                0L);

                        updateUserQuota(user.getUserId(), -freeQuota, new Handler<Void>() {
                            public void handle(Void event) {
                                if (handler != null) {
                                    handler.handle(new Either.Right<>(new JsonArray()));
                                } else {
                                    ok(request);
                                }
                            }
                        });

                    }
                });
            } else {
                unauthorized(request);
            }
        }
    });
}

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

License:Open Source License

private void deleteFolders(final HttpServerRequest request, final String folderId, final Boolean deleteAll,
        final Handler<Either<String, JsonArray>> handler) {
    Handler<UserInfos> userInfosHandler = new Handler<UserInfos>() {
        public void handle(final UserInfos user) {
            if (user == null) {
                unauthorized(request);/*from  w  w  w.  ja v  a2s  .c  o m*/
                return;
            }
            conversationService.deleteFolder(folderId, deleteAll, user,
                    new Handler<Either<String, JsonArray>>() {
                        public void handle(Either<String, JsonArray> event) {
                            if (event.isLeft()) {
                                if (handler != null) {
                                    handler.handle(event);
                                } else {
                                    badRequest(request, event.left().getValue());
                                }
                                return;
                            }

                            JsonArray results = event.right().getValue();
                            final long freeQuota = results.getJsonArray(0).getJsonObject(0)
                                    .getLong("totalquota", 0L);

                            updateUserQuota(user.getUserId(), -freeQuota, new Handler<Void>() {
                                public void handle(Void event) {
                                    if (handler != null) {
                                        handler.handle(new Either.Right<>(new JsonArray()));
                                    } else {
                                        ok(request);
                                    }
                                }
                            });

                        }
                    });
        }
    };

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

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

License:Open Source License

@Get("/group/:groupId")
@SecuredAction(value = "", type = ActionType.AUTHENTICATED)
public void getGroup(HttpServerRequest request) {
    groupService.getInfos(request.params().get("groupId"), r -> {
        if (r.isRight()) {
            JsonObject res = r.right().getValue();
            UserUtils.translateGroupsNames(new JsonArray().add(res), I18n.acceptLanguage(request));
            renderJson(request, res);/*from   ww w  . j  av a2s .  c  o  m*/
        } else {
            leftToResponse(request, r.left());
        }
    });
}