List of usage examples for io.vertx.core.json JsonArray JsonArray
public 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 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)); } } }); }