List of usage examples for io.vertx.core.json JsonArray getJsonObject
public JsonObject getJsonObject(int pos)
From source file:org.entcore.auth.services.impl.AbstractSSOProvider.java
License:Open Source License
protected void executeMultiVectorQuery(String query, JsonObject params, final Assertion assertion, final Handler<Either<String, Object>> handler) { query += (RETURN_QUERY + ", s.name as structureName"); Neo4j.getInstance().execute(query, params, Neo4jResult.validResultHandler(new Handler<Either<String, JsonArray>>() { @Override/* ww w .ja v a 2 s. c o m*/ public void handle(final Either<String, JsonArray> event) { if (event.isRight()) { JsonArray ids = new fr.wseduc.webutils.collections.JsonArray(); final Set<String> userIds = new HashSet<>(); final JsonArray users = event.right().getValue(); for (Object o : users) { if (!(o instanceof JsonObject)) continue; JsonObject j = (JsonObject) o; if (j.getBoolean("blockedProfile", false)) { handler.handle(new Either.Left<String, Object>("blocked.profile")); return; } userIds.add(j.getString("id")); if (Utils.isNotEmpty(j.getString("id")) && !j.getBoolean("federated", false)) { ids.add(j.getString("id")); } } if (ids.size() > 0) { String query = "MATCH (u:User) WHERE u.id IN {ids} SET u.federated = true "; JsonObject params = new JsonObject().put("ids", ids); if (assertion != null && assertion.getIssuer() != null && assertion.getIssuer().getValue() != null && !assertion.getIssuer().getValue().trim().isEmpty()) { query += ", u.federatedIDP = {idp} "; params.put("idp", assertion.getIssuer().getValue()); } Neo4j.getInstance().execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event2) { if (userIds.size() == 1) { handler.handle( new Either.Right<String, Object>(users.getJsonObject(0))); } else { handler.handle(new Either.Right<String, Object>(users)); } } }); } else { if (userIds.size() == 1) { handler.handle(new Either.Right<String, Object>(users.getJsonObject(0))); } else { handler.handle(new Either.Right<String, Object>(users)); } } } else { handler.handle(new Either.Left<String, Object>(event.left().getValue())); } } })); }
From source file:org.entcore.auth.services.impl.DefaultOpendIdConnectService.java
License:Open Source License
@Override public void generateIdToken(String userId, final String clientId, final Handler<AsyncResult<String>> handler) { final String query = "MATCH (u:User {id: {id}}) return u.externalId as sub, u.email as email, u.displayName as name"; Neo4j.getInstance().execute(query, new JsonObject().put("id", userId), new Handler<Message<JsonObject>>() { @Override//from w w w.j a va 2 s. co m public void handle(Message<JsonObject> event) { final JsonArray res = event.body().getJsonArray("result"); if ("ok".equals(event.body().getString("status")) && res != null && res.size() == 1) { generatePayload(res.getJsonObject(0), clientId, handler); } else { handler.handle(new DefaultAsyncResult<String>(new RuntimeException("invalid.userId"))); } } }); }
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 . ja va2 s .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 . ja v a2s . c om*/ } } return traity; }
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;/*from ww w .j a v a 2 s . com*/ } 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/*w ww. jav a 2s . c o m*/ 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.common.events.impl.GenericEventStore.java
License:Open Source License
@Override public void createAndStoreEvent(final String eventType, final String login) { String query = "MATCH (n:User {login : {login}}) " + "OPTIONAL MATCH n-[:IN]->(gp:ProfileGroup) " + "OPTIONAL MATCH n-[:IN]->()-[:DEPENDS]->(s:Structure) " + "OPTIONAL MATCH n-[:IN]->()-[:DEPENDS]->(c:Class) " + "OPTIONAL MATCH n-[:IN]->()-[:HAS_PROFILE]->(p:Profile) " + "RETURN distinct n.id as userId, p.name as type, COLLECT(distinct gp.id) as profilGroupsIds, " + "COLLECT(distinct c.id) as classes, COLLECT(distinct s.id) as structures"; Neo4j.getInstance().execute(query, new JsonObject().put("login", login), new Handler<Message<JsonObject>>() { @Override/*from ww w. jav a 2 s .com*/ public void handle(Message<JsonObject> event) { JsonArray res = event.body().getJsonArray("result"); if ("ok".equals(event.body().getString("status")) && res.size() == 1) { execute(UserUtils.sessionToUserInfos(res.getJsonObject(0)), eventType, null, null); } else { logger.error("Error : user " + login + " not found."); } } }); }
From source file:org.entcore.common.http.BasicFilter.java
License:Open Source License
@Override protected void validateClientScope(String clientId, String secret, final Handler<String> handler) { String query = "MATCH (n:Application {name: {clientId}, secret: {secret}, grantType: 'Basic'}) " + "RETURN n.scope as scope"; JsonObject params = new JsonObject().put("clientId", clientId).put("secret", secret); Neo4j.getInstance().execute(query, params, new Handler<Message<JsonObject>>() { @Override/* w w w . ja v a2s .c o m*/ public void handle(Message<JsonObject> event) { JsonArray res = event.body().getJsonArray("result"); if ("ok".equals(event.body().getString("status")) && res != null && res.size() == 1) { handler.handle(Joiner.on(" ").join(res.getJsonObject(0).getJsonArray("scope"))); } else { handler.handle(null); } } }); }
From source file:org.entcore.common.http.filter.AdmlResourcesProvider.java
License:Open Source License
protected void validateQuery(final HttpServerRequest request, final Handler<Boolean> handler, String query, JsonObject params) {/*from ww w.j a v a2 s .co m*/ request.pause(); neo4j.execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { request.resume(); JsonArray res = r.body().getJsonArray("result"); handler.handle("ok".equals(r.body().getString("status")) && res.size() == 1 && (res.getJsonObject(0)).getBoolean("exists", false)); } }); }
From source file:org.entcore.common.http.filter.AdmlResourcesProvider.java
License:Open Source License
protected void validateQueries(final HttpServerRequest request, final Handler<Boolean> handler, StatementsBuilder statementsBuilder) { request.pause();//from ww w .j a v a2s .c o m final JsonArray statements = statementsBuilder.build(); neo4j.executeTransaction(statements, null, true, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { request.resume(); JsonArray res = r.body().getJsonArray("results"); if (!"ok".equals(r.body().getString("status")) || res == null || res.size() != statements.size()) { handler.handle(false); return; } for (int i = 0; i < statements.size(); i++) { JsonArray j = res.getJsonArray(i); if (j.size() != 1 || !j.getJsonObject(0).getBoolean("exists", false)) { handler.handle(false); return; } } handler.handle(true); } }); }