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

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

Introduction

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

Prototype

public String getString(String key) 

Source Link

Document

Get the string value with the specified key, special cases are addressed for extended JSON types Instant , byte[] and Enum which can be converted to String.

Usage

From source file:org.entcore.blog.controllers.PostController.java

License:Open Source License

@Post("/comment/:blogId/:postId")
@SecuredAction(value = "blog.comment", type = ActionType.RESOURCE)
public void comment(final HttpServerRequest request) {
    final String blogId = request.params().get("blogId");
    final String postId = request.params().get("postId");
    if (blogId == null || blogId.trim().isEmpty() || postId == null || postId.trim().isEmpty()) {
        badRequest(request);//from ww  w  . ja  v  a  2 s . co  m
        return;
    }
    RequestUtils.bodyToJson(request, new Handler<JsonObject>() {
        public void handle(final JsonObject data) {
            UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() {
                @Override
                public void handle(final UserInfos user) {
                    if (user != null) {
                        Handler<Either<String, JsonObject>> notifyHandler = new Handler<Either<String, JsonObject>>() {
                            @Override
                            public void handle(Either<String, JsonObject> event) {
                                if (event.isRight()) {
                                    timelineService.notifyPublishComment(request, blogId, postId, user,
                                            pathPrefix + "#/view/" + blogId);
                                    renderJson(request, event.right().getValue());
                                } else {
                                    JsonObject error = new JsonObject().put("error", event.left().getValue());
                                    renderJson(request, error, 400);
                                }
                            }
                        };
                        post.addComment(blogId, postId, data.getString("comment"), user, notifyHandler);
                    } else {
                        unauthorized(request);
                    }
                }
            });
        }
    });
}

From source file:org.entcore.blog.events.BlogSearchingEvents.java

License:Open Source License

@Override
public void searchResource(List<String> appFilters, String userId, JsonArray groupIds,
        final JsonArray searchWords, final Integer page, final Integer limit, final JsonArray columnsHeader,
        final String locale, final Handler<Either<String, JsonArray>> handler) {
    if (appFilters.contains(BlogSearchingEvents.class.getSimpleName())) {

        final List<String> groupIdsLst = groupIds.getList();
        final List<DBObject> groups = new ArrayList<DBObject>();
        groups.add(QueryBuilder.start("userId").is(userId).get());
        for (String gpId : groupIdsLst) {
            groups.add(QueryBuilder.start("groupId").is(gpId).get());
        }//from   w ww.j a va 2s . com

        final QueryBuilder rightsQuery = new QueryBuilder().or(
                QueryBuilder.start("visibility").is(VisibilityFilter.PUBLIC.name()).get(),
                QueryBuilder.start("visibility").is(VisibilityFilter.PROTECTED.name()).get(),
                QueryBuilder.start("visibility").is(VisibilityFilter.PROTECTED.name()).get(),
                QueryBuilder.start("author.userId").is(userId).get(),
                QueryBuilder.start("shared")
                        .elemMatch(new QueryBuilder().or(groups.toArray(new DBObject[groups.size()])).get())
                        .get());

        final JsonObject projection = new JsonObject();
        projection.put("_id", 1);
        //search all blogs of user
        mongo.find(Blog.BLOGS_COLLECTION, MongoQueryBuilder.build(rightsQuery), null, projection,
                new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> event) {
                        final Either<String, JsonArray> ei = validResults(event);
                        if (ei.isRight()) {
                            final JsonArray blogsResult = ei.right().getValue();

                            final Set<String> setIds = new HashSet<String>();
                            for (int i = 0; i < blogsResult.size(); i++) {
                                final JsonObject j = blogsResult.getJsonObject(i);
                                setIds.add(j.getString("_id"));
                            }

                            //search posts for the blogs found
                            searchPosts(page, limit, searchWords.getList(), setIds,
                                    new Handler<Either<String, JsonArray>>() {
                                        @Override
                                        public void handle(Either<String, JsonArray> event) {
                                            if (event.isRight()) {
                                                if (log.isDebugEnabled()) {
                                                    log.debug(
                                                            "[BlogSearchingEvents][searchResource] The resources searched by user are found");
                                                }
                                                final JsonArray res = formatSearchResult(
                                                        event.right().getValue(), columnsHeader,
                                                        searchWords.getList());
                                                handler.handle(new Right<String, JsonArray>(res));
                                            } else {
                                                handler.handle(new Either.Left<String, JsonArray>(
                                                        event.left().getValue()));
                                            }
                                        }
                                    });
                        } else {
                            handler.handle(new Either.Left<String, JsonArray>(ei.left().getValue()));
                        }
                    }
                });
    } else {
        handler.handle(new Right<String, JsonArray>(new JsonArray()));
    }
}

From source file:org.entcore.blog.events.BlogSearchingEvents.java

License:Open Source License

private JsonArray formatSearchResult(final JsonArray results, final JsonArray columnsHeader,
        final List<String> words) {
    final List<String> aHeader = columnsHeader.getList();
    final JsonArray traity = new JsonArray();

    for (int i = 0; i < results.size(); i++) {
        final JsonObject j = results.getJsonObject(i);
        final JsonObject jr = new JsonObject();
        if (j != null) {
            final String blogId = j.getJsonObject("blog").getString("$id");
            jr.put(aHeader.get(0), j.getString("title"));
            jr.put(aHeader.get(1), j.getString("content", ""));
            jr.put(aHeader.get(2), j.getJsonObject("modified"));
            jr.put(aHeader.get(3), j.getJsonObject("author").getString("username"));
            jr.put(aHeader.get(4), j.getJsonObject("author").getString("userId"));
            jr.put(aHeader.get(5), "/blog#/view/" + blogId + "/" + j.getString("_id"));
            traity.add(jr);//from w w  w  .j  a v a 2 s .  c om
        }
    }
    return traity;
}

From source file:org.entcore.blog.security.BlogResourcesProvider.java

License:Open Source License

private void hasRightOnPost(final HttpServerRequest request, final UserInfos user,
        final Handler<Boolean> handler, String action) {
    String postId = request.params().get("postId");
    if (StringUtils.isEmpty(postId)) {
        handler.handle(false);/* w w  w  .  j av a2 s .c o m*/
        return;
    }
    //
    QueryBuilder query = QueryBuilder.start("_id").is(postId);
    request.pause();
    mongo.findOne("posts", MongoQueryBuilder.build(query), null, new JsonArray().add("blog"),
            new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> event) {
                    request.resume();
                    if ("ok".equals(event.body().getString("status"))) {
                        JsonObject res = event.body().getJsonObject("result");
                        if (res == null) {
                            handler.handle(false);
                            return;
                        }
                        /**
                         * Is author?
                         */
                        if (res.getJsonObject("author") != null
                                && user.getUserId().equals(res.getJsonObject("author").getString("userId"))) {
                            handler.handle(true);
                            return;
                        }
                        if (res.getJsonObject("blog") != null
                                && res.getJsonObject("blog").getJsonArray("shared") != null) {
                            /**
                             * is author?
                             */
                            String blogAuthorId = res.getJsonObject("blog")
                                    .getJsonObject("author", new JsonObject()).getString("userId");
                            if (blogAuthorId != null && blogAuthorId.equals(user.getUserId())) {
                                handler.handle(true);
                                return;
                            }
                            /**
                             * has right action?
                             */
                            for (Object o : res.getJsonObject("blog").getJsonArray("shared")) {
                                if (!(o instanceof JsonObject))
                                    continue;
                                JsonObject json = (JsonObject) o;
                                if (json != null && json.getBoolean(action, false)
                                        && (user.getUserId().equals(json.getString("userId"))
                                                || user.getGroupsIds().contains(json.getString("groupId")))) {
                                    handler.handle(true);
                                    return;
                                }
                            }
                        }
                        handler.handle(false);
                    }
                }
            });
}

From source file:org.entcore.blog.security.BlogResourcesProvider.java

License:Open Source License

private void executeCountQuery(final HttpServerRequest request, String collection, JsonObject query,
        final int expectedCountResult, final Handler<Boolean> handler) {
    request.pause();/*from   w w w .j a  v  a  2  s .  co  m*/
    mongo.count(collection, query, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> event) {
            request.resume();
            JsonObject res = event.body();
            handler.handle(res != null && "ok".equals(res.getString("status"))
                    && expectedCountResult == res.getInteger("count"));
        }
    });
}

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

License:Open Source License

@Override
public void deleteUsers(JsonArray users) {
    if (users == null || users.size() == 0) {
        return;/* w w  w . j  a v a 2s  .c  o m*/
    }

    final String[] userIds = new String[users.size()];
    for (int i = 0; i < users.size(); i++) {
        JsonObject j = users.getJsonObject(i);
        userIds[i] = j.getString("id");
    }

    final JsonObject criteria = MongoQueryBuilder.build(QueryBuilder.start("shared.userId").in(userIds));

    MongoUpdateBuilder modifier = new MongoUpdateBuilder();
    modifier.pull("shared", MongoQueryBuilder.build(QueryBuilder.start("userId").in(userIds)));

    final String collection = DefaultBlogService.BLOG_COLLECTION;
    mongo.update(collection, criteria, modifier.build(), false, true, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> event) {
            if (!"ok".equals(event.body().getString("status"))) {
                log.error("Error deleting users shared in collection " + collection + " : "
                        + event.body().getString("message"));
            }

            final JsonObject criteria = MongoQueryBuilder
                    .build(QueryBuilder.start("author.userId").in(userIds));
            MongoUpdateBuilder modifier = new MongoUpdateBuilder();
            modifier.set("author.deleted", true);
            mongo.update(collection, criteria, modifier.build(), false, true,
                    new Handler<Message<JsonObject>>() {
                        @Override
                        public void handle(Message<JsonObject> event) {
                            if (!"ok".equals(event.body().getString("status"))) {
                                log.error("Error deleting users shared in collection " + collection + " : "
                                        + event.body().getString("message"));
                            } else {
                                delete(collection);
                            }
                        }
                    });
        }
    });
}

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

License:Open Source License

private void delete(final String collection) {
    final JsonObject query = MongoQueryBuilder
            .build(QueryBuilder.start("shared.org-entcore-blog-controllers-BlogController|shareJson")
                    .notEquals(true).put("author.deleted").is(true));

    mongo.find(collection, query, null, new JsonObject().put("_id", 1), new Handler<Message<JsonObject>>() {
        @Override/*from  w  ww .j  a  va2 s.com*/
        public void handle(Message<JsonObject> res) {
            String status = res.body().getString("status");
            JsonArray results = res.body().getJsonArray("results");
            if ("ok".equals(status) && results != null && results.size() > 0) {
                String[] blogIds = new String[results.size()];
                for (int i = 0; i < results.size(); i++) {
                    JsonObject j = results.getJsonObject(i);
                    blogIds[i] = j.getString("_id");
                }
                QueryBuilder q = QueryBuilder.start("blog.$id").in(blogIds);
                mongo.delete(DefaultPostService.POST_COLLECTION, MongoQueryBuilder.build(q),
                        new Handler<Message<JsonObject>>() {
                            @Override
                            public void handle(Message<JsonObject> event) {
                                if (!"ok".equals(event.body().getString("status"))) {
                                    log.error("Error deleting posts : " + event.body().encode());
                                } else {
                                    log.info("Posts deleted : " + event.body().getInteger("number"));
                                }
                            }
                        });
                QueryBuilder query = QueryBuilder.start("_id").in(blogIds);
                mongo.delete(collection, MongoQueryBuilder.build(query), new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> event) {
                        if (!"ok".equals(event.body().getString("status"))) {
                            log.error("Error deleting blogs : " + event.body().encode());
                        } else {
                            log.info("Blogs deleted : " + event.body().getInteger("number"));
                        }
                    }
                });
            }
        }
    });
}

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

License:Open Source License

@Override
public void update(String blogId, JsonObject blog, final Handler<Either<String, JsonObject>> result) {
    blog.put("modified", MongoDb.now());
    if (blog.getString("comment-type") != null) {
        try {/*from  ww w  . j a v  a  2s  . c o  m*/
            CommentType.valueOf(blog.getString("comment-type").toUpperCase());
            blog.put("comment-type", blog.getString("comment-type").toUpperCase());
        } catch (IllegalArgumentException | NullPointerException e) {
            blog.remove("comment-type");
        }
    }
    if (blog.getString("publish-type") != null) {
        try {
            PublishType.valueOf(blog.getString("publish-type").toUpperCase());
            blog.put("publish-type", blog.getString("publish-type").toUpperCase());
        } catch (IllegalArgumentException | NullPointerException e) {
            blog.remove("publish-type");
        }
    }
    JsonObject b = Utils.validAndGet(blog, UPDATABLE_FIELDS, Collections.<String>emptyList());
    if (validationError(result, b))
        return;
    QueryBuilder query = QueryBuilder.start("_id").is(blogId);
    MongoUpdateBuilder modifier = new MongoUpdateBuilder();
    for (String attr : b.fieldNames()) {
        modifier.set(attr, b.getValue(attr));
    }
    mongo.update(BLOG_COLLECTION, MongoQueryBuilder.build(query), modifier.build(),
            new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> event) {
                    result.handle(Utils.validResult(event));
                }
            });
}

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

License:Open Source License

@Override
public void notifySubmitPost(final HttpServerRequest request, final String blogId, final String postId,
        final UserInfos user, final String resourceUri) {
    if (resourceUri != null && user != null && blogId != null && request != null) {
        QueryBuilder blogQuery = QueryBuilder.start("_id").is(blogId);
        JsonObject blogKeys = new JsonObject().put("author", 1);
        mongo.findOne("blogs", MongoQueryBuilder.build(blogQuery), blogKeys,
                new Handler<Message<JsonObject>>() {
                    @Override/*from  ww  w .  jav a 2 s  . c om*/
                    public void handle(final Message<JsonObject> event) {
                        if ("ok".equals(event.body().getString("status"))) {
                            final String authorId = event.body().getJsonObject("result", new JsonObject())
                                    .getJsonObject("author", new JsonObject()).getString("userId");

                            final QueryBuilder query = QueryBuilder.start("_id").is(postId);
                            final JsonObject keys = new JsonObject().put("title", 1).put("blog", 1);
                            final JsonArray fetch = new JsonArray().add("blog");

                            mongo.findOne("posts", MongoQueryBuilder.build(query), keys, fetch,
                                    MongoDbResult.validResultHandler(new Handler<Either<String, JsonObject>>() {
                                        public void handle(Either<String, JsonObject> event) {
                                            if (event.isLeft())
                                                return;

                                            final JsonObject post = event.right().getValue();

                                            findRecipiants("posts", query, keys, fetch,
                                                    "org-entcore-blog-controllers-PostController|publish", user,
                                                    new Handler<Map<String, Object>>() {
                                                        @Override
                                                        public void handle(Map<String, Object> event) {
                                                            List<String> recipients = new ArrayList<>();
                                                            if (event != null)
                                                                recipients = (List<String>) event
                                                                        .get("recipients");

                                                            recipients.add(authorId);
                                                            JsonObject p = new JsonObject()
                                                                    .put("uri",
                                                                            "/userbook/annuaire#"
                                                                                    + user.getUserId() + "#"
                                                                                    + user.getType())
                                                                    .put("username", user.getUsername())
                                                                    .put("blogTitle",
                                                                            post.getJsonObject("blog",
                                                                                    new JsonObject())
                                                                                    .getString("title"))
                                                                    .put("blogUri", resourceUri)
                                                                    .put("postTitle", post.getString("title"))
                                                                    .put("postUri", resourceUri + "/" + postId)
                                                                    .put("resourceUri",
                                                                            resourceUri + "/" + postId)
                                                                    .put("disableAntiFlood", true);
                                                            notification.notifyTimeline(request,
                                                                    "blog.submit-post", user, recipients,
                                                                    blogId, postId, p);

                                                        }
                                                    });
                                        }
                                    }));
                        }
                    }
                });
    }
}

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

License:Open Source License

@Override
public void notifyPublishPost(final HttpServerRequest request, final String blogId, final String postId,
        final UserInfos user, final String resourceUri) {
    if (resourceUri != null && user != null && blogId != null && request != null) {
        QueryBuilder query = QueryBuilder.start("_id").is(postId);
        JsonObject keys = new JsonObject().put("title", 1).put("blog", 1).put("content", 1);
        JsonArray fetch = new JsonArray().add("blog");
        findRecipiants("posts", query, keys, fetch, user, new Handler<Map<String, Object>>() {
            @Override/*from  w  w w  . j  av a  2  s  .c  om*/
            public void handle(Map<String, Object> event) {
                if (event != null) {
                    List<String> recipients = (List<String>) event.get("recipients");
                    JsonObject blog = (JsonObject) event.get("blog");
                    if (recipients != null) {
                        JsonObject p = new JsonObject()
                                .put("uri", "/userbook/annuaire#" + user.getUserId() + "#" + user.getType())
                                .put("username", user.getUsername())
                                .put("blogTitle",
                                        blog.getJsonObject("blog", new JsonObject()).getString("title"))
                                .put("blogUri", resourceUri).put("postTitle", blog.getString("title"))
                                .put("postUri", resourceUri + "/" + postId)
                                .put("resourceUri", resourceUri + "/" + postId).put("pushNotif",
                                        new JsonObject().put("title", "push.notif.blog.published.post").put(
                                                "body",
                                                user.getUsername() + " : "
                                                        + blog.getJsonObject("blog", new JsonObject())
                                                                .getString("title")));
                        notification.notifyTimeline(request, "blog.publish-post", user, recipients, blogId,
                                postId, p, true,
                                NotificationUtils.htmlContentToPreview(blog.getString("content")));
                    }
                }
            }
        });
    }
}