List of usage examples for io.vertx.core.json JsonObject getString
public String getString(String key)
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"))); } } } }); } }