Example usage for io.vertx.core.json JsonArray getJsonObject

List of usage examples for io.vertx.core.json JsonArray getJsonObject

Introduction

In this page you can find the example usage for io.vertx.core.json JsonArray getJsonObject.

Prototype

public JsonObject getJsonObject(int pos) 

Source Link

Document

Get the JsonObject at position pos in the array.

Usage

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);
        }
    });
}