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.conversation.service.impl.Neo4jConversationService.java

License:Open Source License

public void addDisplayNames(final JsonObject message, final JsonObject parentMessage,
        final Handler<JsonObject> handler) {
    if (!displayNamesCondition(message)) {
        handler.handle(message);//from w w w .  ja va2s.  co  m
        return;
    }

    String query = "MATCH (v:Visible) " + "WHERE v.id IN {ids} "
            + "RETURN COLLECT(distinct (v.id + '$' + coalesce(v.displayName, ' ') + '$' + "
            + "coalesce(v.name, ' ') + '$' + coalesce(v.groupDisplayName, ' '))) as displayNames ";

    Set<String> ids = new HashSet<>();
    ids.addAll(message.getJsonArray("to", new fr.wseduc.webutils.collections.JsonArray()).getList());
    ids.addAll(message.getJsonArray("cc", new fr.wseduc.webutils.collections.JsonArray()).getList());
    if (message.containsKey("from")) {
        ids.add(message.getString("from"));
    }
    if (parentMessage != null) {
        ids.addAll(parentMessage.getJsonArray("to", new fr.wseduc.webutils.collections.JsonArray()).getList());
        ids.addAll(parentMessage.getJsonArray("cc", new fr.wseduc.webutils.collections.JsonArray()).getList());
        if (parentMessage.containsKey("from"))
            ids.add(parentMessage.getString("from"));
    }
    neo.execute(query,
            new JsonObject().put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids))),
            new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> m) {
                    JsonArray r = m.body().getJsonArray("result");
                    if ("ok".equals(m.body().getString("status")) && r != null && r.size() == 1) {
                        JsonObject j = r.getJsonObject(0);
                        JsonArray d = j.getJsonArray("displayNames");
                        if (d != null && d.size() > 0) {
                            message.put("displayNames", d);
                        }
                    }
                    handler.handle(message);
                }
            });
}

From source file:org.entcore.conversation.service.impl.Neo4jConversationService.java

License:Open Source License

public void findInactives(final JsonObject message, long size, final Handler<JsonObject> handler) {
    Set<Object> dest = new HashSet<>();
    dest.addAll(message.getJsonArray("to", new fr.wseduc.webutils.collections.JsonArray()).getList());
    dest.addAll(message.getJsonArray("cc", new fr.wseduc.webutils.collections.JsonArray()).getList());

    JsonObject params = new JsonObject().put("dest",
            new fr.wseduc.webutils.collections.JsonArray(new ArrayList<Object>(dest)));

    String returnClause = "";
    if (size > 0) {
        returnClause = "RETURN "
                + "[t IN targets WHERE t.quotaLeft IS NULL OR t.quotaLeft < {attachmentsSize} | t.users.displayName] as undelivered, "
                + "[t IN targets WHERE t.quotaLeft IS NOT NULL AND t.quotaLeft >= {attachmentsSize} | t.users.id] as userTargets ";
        params.put("attachmentsSize", size);
    } else {/*from   ww w . jav  a2 s. c  o  m*/
        returnClause = "RETURN "
                + "[t IN targets WHERE t.users.activationCode IS NOT NULL | t.users.displayName] as inactives, "
                + "EXTRACT(t IN targets | t.users.id) as userTargets ";
    }

    String query = "MATCH (v:Visible)<-[:IN*0..1]-(u:User) " + "WHERE v.id IN {dest} "
            + "OPTIONAL MATCH (u)-[:USERBOOK]->(ub:UserBook) "
            + "WITH COLLECT(DISTINCT {users: u, quotaLeft: (ub.quota - ub.storage)}) as targets "
            + returnClause;

    neo.execute(query, params, new Handler<Message<JsonObject>>() {
        public void handle(Message<JsonObject> event) {
            JsonArray r = event.body().getJsonArray("result");

            JsonObject formattedResult = new JsonObject()
                    .put("inactives", new fr.wseduc.webutils.collections.JsonArray())
                    .put("actives", new fr.wseduc.webutils.collections.JsonArray())
                    .put("allUsers", new fr.wseduc.webutils.collections.JsonArray());

            if ("ok".equals(event.body().getString("status")) && r != null && r.size() == 1) {
                JsonObject j = r.getJsonObject(0);
                formattedResult.put("inactives",
                        j.getJsonArray("inactives", new fr.wseduc.webutils.collections.JsonArray()));
                formattedResult.put("undelivered",
                        j.getJsonArray("undelivered", new fr.wseduc.webutils.collections.JsonArray()));
                formattedResult.put("allUsers",
                        j.getJsonArray("userTargets", new fr.wseduc.webutils.collections.JsonArray()));
            }

            handler.handle(formattedResult);
        }
    });
}

From source file:org.entcore.directory.controllers.UserBookController.java

License:Open Source License

@Get("/structure/:structId")
@SecuredAction(value = "userbook.structure.classes.personnel", type = ActionType.AUTHENTICATED)
public void showStructure(final HttpServerRequest request) {
    String structureId = request.params().get("structId");
    String customReturn = "MATCH (s:Structure { id : {structId}})<-[:DEPENDS]-(pg:ProfileGroup)"
            + "-[:HAS_PROFILE]->(p:Profile {name : 'Personnel'}), visibles-[:IN]->pg "
            + "OPTIONAL MATCH visibles-[:USERBOOK]->(u:UserBook) "
            + "RETURN DISTINCT p.name as type, visibles.id as id, "
            + "visibles.displayName as displayName, u.mood as mood, " + "u.picture as photo "
            + "ORDER BY type DESC, displayName ";
    final JsonObject params = new JsonObject().put("structId", structureId);
    UserUtils.findVisibleUsers(eb, request, true, customReturn, params, new Handler<JsonArray>() {

        @Override//  www.  j av  a2s .  com
        public void handle(final JsonArray personnel) {
            String customReturn = "MATCH profileGroup-[:DEPENDS]->(c:Class)-[:BELONGS]->(s:Structure { id : {structId}}) "
                    + "RETURN collect(distinct {id: c.id, name: c.name, level: c.level}) as classes, "
                    + "collect(distinct {id: profileGroup.id, name: profileGroup.name, groupDisplayName: profileGroup.groupDisplayName }) as profileGroups";
            UserUtils.findVisibleProfilsGroups(eb, request, customReturn, params, new Handler<JsonArray>() {
                @Override
                public void handle(final JsonArray classesAndProfileGroups) {
                    String customReturn = "MATCH manualGroup-[:DEPENDS]->(c)-[:BELONGS*0..1]->(s:Structure { id : {structId}}) "
                            + "WHERE ALL(label IN labels(c) WHERE label IN [\"Structure\", \"Class\"]) "
                            + "RETURN DISTINCT manualGroup.id as id, manualGroup.name as name, manualGroup.groupDisplayName as groupDisplayName "
                            + "ORDER BY name ASC ";
                    UserUtils.findVisibleManualGroups(eb, request, customReturn, params,
                            new Handler<JsonArray>() {
                                @Override
                                public void handle(JsonArray manualGroups) {
                                    JsonObject result = new JsonObject().put("users", personnel).put("classes",
                                            classesAndProfileGroups.getJsonObject(0).getJsonArray("classes",
                                                    new fr.wseduc.webutils.collections.JsonArray()))
                                            .put("profileGroups",
                                                    classesAndProfileGroups.getJsonObject(0).getJsonArray(
                                                            "profileGroups",
                                                            new fr.wseduc.webutils.collections.JsonArray()))
                                            .put("manualGroups", manualGroups);
                                    renderJson(request, result);
                                }
                            });

                }
            });
        }
    });
}

From source file:org.entcore.directory.security.AnyAdminOfUser.java

License:Open Source License

@Override
public void authorize(final HttpServerRequest request, Binding binding, final UserInfos user,
        final Handler<Boolean> handler) {

    //Super-admin "hack"
    if (user.getFunctions().containsKey(SUPER_ADMIN)) {
        handler.handle(true);//from   ww  w. j a va2  s  .  c  om
        return;
    }
    String userId = request.params().get("userId");
    if (userId == null || userId.trim().isEmpty()) {
        handler.handle(false);
        return;
    }

    Set<String> ids = DirectoryResourcesProvider.getIds(user);
    String query = "MATCH (u:User {id : {userId}})-[:IN]->()-[:DEPENDS]->()-[:BELONGS*0..1]->s2 "
            + "WHERE s2.id IN {ids} RETURN count(*) > 0 as exists UNION "
            + "MATCH (u: User {id : {userId}})-[:HAS_RELATIONSHIPS]->(b: Backup) "
            + "WHERE ANY(structId IN b.structureIds WHERE structId IN {ids}) "
            + "RETURN count(*) > 0 as exists";
    JsonObject params = new JsonObject().put("id", request.params().get("groupId")).put("userId", userId)
            .put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids)));
    request.pause();
    Neo4j.getInstance().execute(query, params, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            request.resume();
            JsonArray res = r.body().getJsonArray("result");
            if ("ok".equals(r.body().getString("status")) && res.size() == 2
                    && (((JsonObject) res.getJsonObject(0)).getBoolean("exists", false)
                            || ((JsonObject) res.getJsonObject(1)).getBoolean("exists", false))) {
                handler.handle(true);
            } else if ("ok".equals(r.body().getString("status")) && res.size() == 1
                    && ((JsonObject) res.getJsonObject(0)).getBoolean("exists", false)) {
                handler.handle(true);
            } else {
                handler.handle(false);
            }
        }
    });
}

From source file:org.entcore.directory.security.DirectoryResourcesProvider.java

License:Open Source License

private static void validateQuery(final HttpServerRequest request, final Handler<Boolean> handler, String query,
        JsonObject params) {/*from   w  w w .  j  a  v  a2 s  . co  m*/
    request.pause();
    Neo4j.getInstance().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.directory.security.DirectoryResourcesProvider.java

License:Open Source License

private void adminOrTeacher(final HttpServerRequest request, final UserInfos user,
        final Handler<Boolean> handler) {
    Set<String> ids = getIds(user);
    if (ids == null)
        return;//from w w  w  . j a  v a 2s.c  om
    String query = "MATCH (u:User {id : {userId}})-[:IN]->()-[:DEPENDS]->()-[:BELONGS*0..1]->s2 "
            + "WHERE s2.id IN {ids} " + "RETURN count(*) > 0 as exists";
    JsonObject params = new JsonObject().put("id", request.params().get("groupId"))
            .put("userId", request.params().get("userId"))
            .put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids)));
    request.pause();
    neo.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            request.resume();
            JsonArray res = r.body().getJsonArray("result");
            if ("ok".equals(r.body().getString("status")) && res.size() == 1
                    && (res.getJsonObject(0)).getBoolean("exists", false)) {
                handler.handle(true);
            } else {
                isTeacherOf(request, user, handler);
            }
        }
    });
}

From source file:org.entcore.directory.security.DirectoryResourcesProvider.java

License:Open Source License

private void isClassTeacher(final HttpServerRequest request, final UserInfos user,
        final Handler<Boolean> handler) {
    final String classId = request.params().get("classId");
    if (classId == null || classId.trim().isEmpty()) {
        handler.handle(false);//from www. j ava2s .co  m
        return;
    }
    Set<String> ids = getIds(user);
    String query = "MATCH (c:Class {id : {classId}})-[:BELONGS]->s2 " + "WHERE s2.id IN {ids} "
            + "RETURN count(*) > 0 as exists";
    JsonObject params = new JsonObject().put("classId", classId).put("userId", request.params().get("userId"))
            .put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids)));
    request.pause();
    neo.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            request.resume();
            JsonArray res = r.body().getJsonArray("result");
            if ("ok".equals(r.body().getString("status")) && res.size() == 1
                    && (res.getJsonObject(0)).getBoolean("exists", false)) {
                handler.handle(true);
            } else if ("Teacher".equals(user.getType()) || "Personnel".equals(user.getType())) {
                String query = "MATCH (c:`Class` { id : {classId}})<-[:DEPENDS]-(pg:ProfileGroup)"
                        + "<-[:IN]-(t:`User` { id : {teacherId}}) " + "RETURN count(*) > 0 as exists ";
                JsonObject params = new JsonObject().put("classId", classId).put("teacherId", user.getUserId());
                validateQuery(request, handler, query, params);
            } else {
                handler.handle(false);
            }
        }
    });
}

From source file:org.entcore.directory.security.DirectoryResourcesProvider.java

License:Open Source License

private void isClassMember(final HttpServerRequest request, final UserInfos user,
        final Handler<Boolean> handler) {
    final String classId = request.params().get("classId");
    if (classId == null || classId.trim().isEmpty()) {
        handler.handle(false);/*from   w  ww  .  j  a  va 2  s .c  om*/
        return;
    }
    Set<String> ids = getIds(user);
    String query = "MATCH (c:Class {id : {classId}})-[:BELONGS]->s2 " + "WHERE s2.id IN {ids} "
            + "RETURN count(*) > 0 as exists";
    JsonObject params = new JsonObject().put("classId", classId).put("userId", request.params().get("userId"))
            .put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids)));
    request.pause();
    neo.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            request.resume();
            JsonArray res = r.body().getJsonArray("result");
            if ("ok".equals(r.body().getString("status")) && res.size() == 1
                    && (res.getJsonObject(0)).getBoolean("exists", false)) {
                handler.handle(true);
            } else {
                String query = "MATCH (c:`Class` { id : {classId}})<-[:DEPENDS]-(pg:ProfileGroup)"
                        + "<-[:IN]-(t:`User` { id : {teacherId}}) " + "RETURN count(*) > 0 as exists ";
                JsonObject params = new JsonObject().put("classId", classId).put("teacherId", user.getUserId());
                validateQuery(request, handler, query, params);
            }
        }
    });
}

From source file:org.entcore.directory.security.TeacherOfClass.java

License:Open Source License

@Override
public void authorize(final HttpServerRequest request, Binding binding, final UserInfos user,
        final Handler<Boolean> handler) {
    final String classId = request.params().get("classId");
    if (classId == null || classId.trim().isEmpty()) {
        handler.handle(false);/*from   ww w . ja v  a  2s. c o  m*/
        return;
    }
    Set<String> ids = DirectoryResourcesProvider.getIds(user);
    String query = "MATCH (c:Class {id : {classId}})-[:BELONGS]->s2 " + "WHERE s2.id IN {ids} "
            + "RETURN count(*) > 0 as exists";
    JsonObject params = new JsonObject().put("classId", classId).put("userId", request.params().get("userId"))
            .put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids)));
    request.pause();
    neo.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            request.resume();
            JsonArray res = r.body().getJsonArray("result");
            if ("ok".equals(r.body().getString("status")) && res.size() == 1
                    && ((JsonObject) res.getJsonObject(0)).getBoolean("exists", false)) {
                handler.handle(true);
            } else if ("Teacher".equals(user.getType()) || "Personnel".equals(user.getType())) {
                String query = "MATCH (c:`Class` { id : {classId}})<-[:DEPENDS]-(pg:ProfileGroup)"
                        + "<-[:IN]-(t:`User` { id : {teacherId}}) " + "RETURN count(*) > 0 as exists ";
                JsonObject params = new JsonObject().put("classId", classId).put("teacherId", user.getUserId());
                validateQuery(request, handler, query, params);
            } else {
                handler.handle(false);
            }
        }
    });
}

From source file:org.entcore.directory.security.TeacherOfClass.java

License:Open Source License

private void validateQuery(final HttpServerRequest request, final Handler<Boolean> handler, String query,
        JsonObject params) {/* ww  w .  j a  va2 s.c om*/
    request.pause();
    neo.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
                    && ((JsonObject) res.getJsonObject(0)).getBoolean("exists", false));
        }
    });
}