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

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

Introduction

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

Prototype

public int size() 

Source Link

Document

Get the number of values in this JSON array

Usage

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 {//w ww  .  java 2  s  .c om
        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.conversation.service.impl.SqlConversationService.java

License:Open Source License

private String formatArray(JsonArray array, String delimiter, String prefix, String postfix) {
    if (array.size() == 0) {
        return "{}";
    }/*from  w w  w. j  av a2  s.c om*/
    StringBuilder builder = new StringBuilder(prefix);
    for (Object obj : array) {
        builder.append(obj.toString() + delimiter);
    }
    if (array.size() > 0)
        builder.delete(0, builder.length() - delimiter.length());
    builder.append(postfix);
    return builder.toString();
}

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

License:Open Source License

@Put("/user/:studentId/related/:relativeId")
@ResourceFilter(RelativeStudentFilter.class)
@SecuredAction(value = "", type = ActionType.RESOURCE)
public void relativeStudent(final HttpServerRequest request) {
    final String studentId = request.params().get("studentId");
    final String relativeId = request.params().get("relativeId");
    userService.relativeStudent(relativeId, studentId, new Handler<Either<String, JsonObject>>() {
        @Override/*from   w ww .  j a  v a2  s. com*/
        public void handle(Either<String, JsonObject> res) {
            if (res.isRight()) {
                JsonArray structures = res.right().getValue().getJsonArray("structures");
                JsonObject j = new JsonObject().put("action", "setMultipleDefaultCommunicationRules")
                        .put("schoolIds", structures);
                eb.send("wse.communication", j);
                JsonArray a = new fr.wseduc.webutils.collections.JsonArray().add(relativeId);
                ApplicationUtils.publishModifiedUserGroup(eb, a);
                if (structures == null || structures.size() == 0) {
                    notFound(request, "user.not.found");
                } else {
                    ok(request);
                }
            } else {
                renderJson(request, new JsonObject().put("error", res.left().getValue()), 400);
            }
        }
    });
}

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   w  w w. j  av a  2 s  .  c  o m*/
        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) {//  ww  w .  ja  va  2s  . c  o  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  ww . ja  va 2  s  .c o m*/
    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  ww w  . j a v a2  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 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 w w .  j  a v  a2s . 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.RelativeStudentFilter.java

License:Open Source License

@Override
public void authorize(final HttpServerRequest request, Binding binding, UserInfos user,
        final Handler<Boolean> handler) {
    Map<String, UserInfos.Function> functions = user.getFunctions();
    if (functions == null || functions.isEmpty()) {
        handler.handle(false);//from www .j a  va2  s .co  m
        return;
    }
    if (functions.containsKey(SUPER_ADMIN)) {
        handler.handle(true);
        return;
    }
    final UserInfos.Function adminLocal = functions.get(DefaultFunctions.ADMIN_LOCAL);
    if (adminLocal == null || adminLocal.getScope() == null) {
        handler.handle(false);
        return;
    }
    final String studentId = request.params().get("studentId");
    final String relativeId = request.params().get("relativeId");
    String query = "MATCH (s)<-[:DEPENDS]-(:Group)<-[:IN]-(:User { id : {id}}) "
            + "WHERE (s:Structure OR s:Class) AND s.id IN {scope} " + "RETURN count(*) > 0 as exists ";
    JsonArray scope = new fr.wseduc.webutils.collections.JsonArray(adminLocal.getScope());
    StatementsBuilder s = new StatementsBuilder()
            .add(query, new JsonObject().put("id", studentId).put("scope", scope))
            .add(query, new JsonObject().put("id", relativeId).put("scope", scope));
    request.pause();
    Neo4j.getInstance().executeTransaction(s.build(), null, true, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            request.resume();
            JsonArray res = r.body().getJsonArray("results");
            handler.handle("ok".equals(r.body().getString("status")) && res.size() == 2
                    && res.getJsonArray(0).getJsonObject(0).getBoolean("exists", false)
                    && res.getJsonArray(1).getJsonObject(0).getBoolean("exists", false));
        }
    });
}

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);/* w w w .  j  a va2 s. c  om*/
        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);
            }
        }
    });
}