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.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 ww w .j  a v  a 2 s  .co m
        }
    }
    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);//from ww w. j  a v a  2 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.services.impl.DefaultBlogService.java

License:Open Source License

@Override
public void create(JsonObject blog, UserInfos author, final Handler<Either<String, JsonObject>> result) {
    CommentType commentType = Utils.stringToEnum(blog.getString("comment-type", "").toUpperCase(),
            CommentType.NONE, CommentType.class);
    PublishType publishType = Utils.stringToEnum(blog.getString("publish-type", "").toUpperCase(),
            PublishType.RESTRAINT, PublishType.class);
    JsonObject now = MongoDb.now();/*from w  ww. j a  va2  s  .  c  o  m*/
    JsonObject owner = new JsonObject().put("userId", author.getUserId()).put("username", author.getUsername())
            .put("login", author.getLogin());
    blog.put("created", now).put("modified", now).put("author", owner).put("comment-type", commentType.name())
            .put("publish-type", publishType.name()).put("shared", new JsonArray());
    JsonObject b = Utils.validAndGet(blog, FIELDS, FIELDS);
    if (validationError(result, b))
        return;
    mongo.save(BLOG_COLLECTION, b, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> res) {
            result.handle(Utils.validResult(res));
        }
    });
}

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

License:Open Source License

@Override
public void list(UserInfos user, final Integer page, final String search,
        final Handler<Either<String, JsonArray>> result) {

    List<DBObject> groups = new ArrayList<>();
    groups.add(QueryBuilder.start("userId").is(user.getUserId()).get());
    for (String gpId : user.getProfilGroupsIds()) {
        groups.add(QueryBuilder.start("groupId").is(gpId).get());
    }/*from   w  w w.  ja va 2  s  .  c  o m*/
    QueryBuilder rightQuery = new QueryBuilder()
            .or(QueryBuilder.start("author.userId").is(user.getUserId()).get(), QueryBuilder.start("shared")
                    .elemMatch(new QueryBuilder().or(groups.toArray(new DBObject[groups.size()])).get()).get());

    final QueryBuilder query;

    if (!StringUtils.isEmpty(search)) {
        final List<String> searchWords = checkAndComposeWordFromSearchText(search, this.searchWordMinSize);
        if (!searchWords.isEmpty()) {
            final QueryBuilder searchQuery = new QueryBuilder();
            searchQuery.text(MongoDbSearchService.textSearchedComposition(searchWords));
            query = new QueryBuilder().and(rightQuery.get(), searchQuery.get());
        } else {
            query = null;
            //empty result (no word to search)
            result.handle(new Either.Right<String, JsonArray>(new JsonArray()));
            return;
        }
    } else {
        query = rightQuery;
    }

    JsonObject sort = new JsonObject().put("modified", -1);

    if (page != null && query != null) {
        final int skip = (0 == page) ? -1 : page * this.pagingSize;
        mongo.find(BLOG_COLLECTION, MongoQueryBuilder.build(query), sort, null, skip, this.pagingSize,
                this.pagingSize, new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> event) {
                        result.handle(Utils.validResults(event));
                    }
                });
    } else if (query != null) {
        mongo.find(BLOG_COLLECTION, MongoQueryBuilder.build(query), sort, null,
                new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> event) {
                        result.handle(Utils.validResults(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 w  ww  . j  a v  a  2  s .c o m
                    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/* w w w.ja v  a  2 s  .  co m*/
            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")));
                    }
                }
            }
        });
    }
}

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

License:Open Source License

@Override
public void notifyPublishComment(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);
        JsonArray fetch = new JsonArray().add("blog");
        findRecipiants("posts", query, keys, fetch, user, new Handler<Map<String, Object>>() {
            @Override//ww  w  .ja v  a 2  s  .c o  m
            public void handle(Map<String, Object> event) {
                if (event != null) {
                    List<String> recipients = (List<String>) event.get("recipients");
                    JsonObject blog = (JsonObject) event.get("blog");
                    String ownerId = blog.getJsonObject("blog", new JsonObject())
                            .getJsonObject("author", new JsonObject()).getString("userId");
                    if (ownerId != null && !ownerId.equals(user.getUserId())) {
                        if (recipients == null) {
                            recipients = new ArrayList<String>();
                        }
                        recipients.add(ownerId);
                    }
                    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("disableAntiFlood", true);
                        notification.notifyTimeline(request, "blog.publish-comment", user, recipients, blogId,
                                postId, p);
                    }
                }
            }
        });
    }
}

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

License:Open Source License

@Override
public void create(String blogId, JsonObject post, UserInfos author,
        final Handler<Either<String, JsonObject>> result) {
    JsonObject now = MongoDb.now();//  ww w  . j  a  va  2 s .  c  o m
    JsonObject blogRef = new JsonObject().put("$ref", "blogs").put("$id", blogId);
    JsonObject owner = new JsonObject().put("userId", author.getUserId()).put("username", author.getUsername())
            .put("login", author.getLogin());
    post.put("created", now).put("modified", now).put("author", owner).put("state", StateType.DRAFT.name())
            .put("comments", new JsonArray()).put("views", 0).put("blog", blogRef);
    JsonObject b = Utils.validAndGet(post, FIELDS, FIELDS);
    if (validationError(result, b))
        return;
    b.put("sorted", now);
    if (b.containsKey("content")) {
        b.put("contentPlain", StringUtils.stripHtmlTag(b.getString("content", "")));
    }
    mongo.save(POST_COLLECTION, b,
            MongoDbResult.validActionResultHandler(new Handler<Either<String, JsonObject>>() {
                public void handle(Either<String, JsonObject> event) {
                    if (event.isLeft()) {
                        result.handle(event);
                        return;
                    }
                    mongo.findOne(POST_COLLECTION,
                            new JsonObject().put("_id", event.right().getValue().getString("_id")),
                            MongoDbResult.validResultHandler(result));
                }
            }));
}

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

License:Open Source License

private QueryBuilder getQueryListBuilder(String search, Handler<Either<String, JsonArray>> result,
        QueryBuilder accessQuery) {// www  .j  av  a  2  s . c  om
    final QueryBuilder query;
    if (!StringUtils.isEmpty(search)) {
        final List<String> searchWords = DefaultBlogService.checkAndComposeWordFromSearchText(search,
                this.searchWordMinSize);
        if (!searchWords.isEmpty()) {
            final QueryBuilder searchQuery = new QueryBuilder();
            searchQuery.text(MongoDbSearchService.textSearchedComposition(searchWords));
            query = new QueryBuilder().and(accessQuery.get(), searchQuery.get());
        } else {
            query = null;
            //empty result (no word to search)
            result.handle(new Either.Right<String, JsonArray>(new JsonArray()));
        }
    } else {
        query = accessQuery;
    }
    return query;
}

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

License:Open Source License

@Override
public void submit(String blogId, String postId, UserInfos user,
        final Handler<Either<String, JsonObject>> result) {
    QueryBuilder query = QueryBuilder.start("_id").is(postId).put("blog.$id").is(blogId).put("state")
            .is(StateType.DRAFT.name()).put("author.userId").is(user.getUserId());
    final JsonObject q = MongoQueryBuilder.build(query);
    JsonObject keys = new JsonObject().put("blog", 1).put("firstPublishDate", 1);
    JsonArray fetch = new JsonArray().add("blog");
    mongo.findOne(POST_COLLECTION, q, keys, fetch, new Handler<Message<JsonObject>>() {
        @Override//from   ww w. j  a va  2s  .  c  o  m
        public void handle(Message<JsonObject> event) {
            final JsonObject res = event.body().getJsonObject("result", new JsonObject());
            if ("ok".equals(event.body().getString("status")) && res.size() > 0) {
                BlogService.PublishType type = Utils.stringToEnum(
                        res.getJsonObject("blog", new JsonObject()).getString("publish-type"),
                        BlogService.PublishType.RESTRAINT, BlogService.PublishType.class);
                final StateType state = (BlogService.PublishType.RESTRAINT.equals(type)) ? StateType.SUBMITTED
                        : StateType.PUBLISHED;
                MongoUpdateBuilder updateQuery = new MongoUpdateBuilder().set("state", state.name());

                // if IMMEDIATE published post, first publishing must define the first published date
                if (StateType.PUBLISHED.equals(state) && res.getJsonObject("firstPublishDate") == null) {
                    updateQuery = updateQuery.set("firstPublishDate", MongoDb.now()).set("sorted",
                            MongoDb.now());
                }

                mongo.update(POST_COLLECTION, q, updateQuery.build(), new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> res) {
                        res.body().put("state", state.name());
                        result.handle(Utils.validResult(res));
                    }
                });
            } else {
                result.handle(Utils.validResult(event));
            }
        }
    });
}