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.common.neo4j.Neo4jResult.java

License:Open Source License

private static Either<String, JsonObject> validUniqueResult(int idx, Message<JsonObject> event) {
    Either<String, JsonArray> r = validResults(event);
    if (r.isRight()) {
        JsonArray results = r.right().getValue();
        if (results == null || results.size() == 0) {
            return new Either.Right<>(new JsonObject());
        } else {/*ww w . ja v a 2 s.  com*/
            results = results.getJsonArray(idx);
            if (results.size() == 1 && (results.getValue(0) instanceof JsonObject)) {
                return new Either.Right<>(results.getJsonObject(0));
            }
        }
        return new Either.Left<>("non.unique.result");
    } else {
        return new Either.Left<>(r.left().getValue());
    }
}

From source file:org.entcore.common.neo4j.Neo4jUtils.java

License:Open Source License

public static void loadScripts(final String appName, final Vertx vertx, final String path) {
    String query = "MATCH (n:System) WHERE n.name = {appName} RETURN n.scripts as scripts";
    Neo4j.getInstance().execute(query, new JsonObject().put("appName", appName),
            new Handler<Message<JsonObject>>() {
                @Override//from  w w  w . jav  a2 s  .co m
                public void handle(Message<JsonObject> event) {
                    JsonArray res = event.body().getJsonArray("result");
                    JsonArray scripts;
                    if ("ok".equals(event.body().getString("status")) && res != null && res.size() > 0) {
                        scripts = res.getJsonObject(0).getJsonArray("scripts",
                                new fr.wseduc.webutils.collections.JsonArray());
                    } else {
                        scripts = new fr.wseduc.webutils.collections.JsonArray();
                    }
                    loadAndExecute(appName, vertx, path, true, scripts);
                    loadAndExecute(appName, vertx, path, false, scripts);
                }
            });
}

From source file:org.entcore.common.neo4j.Neo4jUtils.java

License:Open Source License

private static void loadAndExecute(final String schema, final Vertx vertx, final String path,
        final boolean index, final JsonArray excludeFileNames) {
    final String pattern = index ? ".*?-index\\.cypher$" : "^(?!.*-index).*?\\.cypher$";
    vertx.fileSystem().readDir(path, pattern, new Handler<AsyncResult<List<String>>>() {
        @Override/*  w w  w. j a va 2s .com*/
        public void handle(AsyncResult<List<String>> asyncResult) {
            if (asyncResult.succeeded()) {
                final List<String> files = asyncResult.result();
                Collections.sort(files);
                final StatementsBuilder s = new StatementsBuilder();
                final JsonArray newFiles = new fr.wseduc.webutils.collections.JsonArray();
                final AtomicInteger count = new AtomicInteger(files.size());
                for (final String f : files) {
                    final String filename = f.substring(f.lastIndexOf(File.separatorChar) + 1);
                    if (!excludeFileNames.contains(filename)) {
                        vertx.fileSystem().readFile(f, new Handler<AsyncResult<Buffer>>() {
                            @Override
                            public void handle(AsyncResult<Buffer> bufferAsyncResult) {
                                if (bufferAsyncResult.succeeded()) {
                                    String script = bufferAsyncResult.result().toString();
                                    for (String q : script.replaceAll("(\r|\n)", " ").split(";")) {
                                        s.add(q);
                                    }
                                    newFiles.add(filename);
                                } else {
                                    log.error("Error reading file : " + f, bufferAsyncResult.cause());
                                }
                                if (count.decrementAndGet() == 0) {
                                    commit(schema, s, newFiles, index);
                                }
                            }
                        });
                    } else if (count.decrementAndGet() == 0 && newFiles.size() > 0) {
                        commit(schema, s, newFiles, index);
                    }
                }
            } else if (log.isDebugEnabled()) {
                log.debug("Error reading neo4j directory : " + path, asyncResult.cause());
            }
        }

        private void commit(final String schema, StatementsBuilder s, final JsonArray newFiles,
                final boolean index) {
            final JsonObject params = new JsonObject().put("appName", schema).put("newFiles", newFiles);
            if (!index) {
                s.add(UPDATE_SCRIPTS, params);
            }
            Neo4j.getInstance().executeTransaction(s.build(), null, true, new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> message) {
                    if ("ok".equals(message.body().getString("status"))) {
                        if (index) {
                            Neo4j.getInstance().execute(UPDATE_SCRIPTS, params,
                                    new Handler<Message<JsonObject>>() {
                                        @Override
                                        public void handle(Message<JsonObject> event) {
                                            if (!"ok".equals(event.body().getString("status"))) {
                                                log.error("Error update scripts : "
                                                        + event.body().getString("message"));
                                            }
                                        }
                                    });
                        }
                        log.info("Scripts added : " + newFiles.encode());
                    } else {
                        log.error("Error when commit transaction : " + message.body().getString("message"));
                    }
                }
            });
        }
    });
}

From source file:org.entcore.common.service.impl.MongoDbRepositoryEvents.java

License:Open Source License

@Override
public void deleteGroups(JsonArray groups) {
    if (groups == null || groups.size() == 0) {
        return;//from   w  w  w  . j a v a 2s .  c o m
    }

    final String[] groupIds = new String[groups.size()];
    for (int i = 0; i < groups.size(); i++) {
        JsonObject j = groups.getJsonObject(i);
        groupIds[i] = j.getString("group");
    }

    final JsonObject matcher = MongoQueryBuilder.build(QueryBuilder.start("shared.groupId").in(groupIds));

    MongoUpdateBuilder modifier = new MongoUpdateBuilder();
    modifier.pull("shared", MongoQueryBuilder.build(QueryBuilder.start("groupId").in(groupIds)));

    final String collection = MongoDbConf.getInstance().getCollection();
    if (collection == null || collection.trim().isEmpty()) {
        log.error("Error deleting groups : invalid collection " + collection + " in class "
                + this.getClass().getName());
        return;
    }
    mongo.update(collection, matcher, 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 groups in collection " + collection + " : "
                        + event.body().getString("message"));
            }
        }
    });
}

From source file:org.entcore.common.service.impl.MongoDbRepositoryEvents.java

License:Open Source License

@Override
public void deleteUsers(JsonArray users) {
    if (users == null || users.size() == 0) {
        return;/*www . j  a  va 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 = MongoDbConf.getInstance().getCollection();
    if (collection == null || collection.trim().isEmpty()) {
        log.error("Error deleting groups : invalid collection " + collection + " in class "
                + this.getClass().getName());
        return;
    }
    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("owner.userId").in(userIds));
            MongoUpdateBuilder modifier = new MongoUpdateBuilder();
            modifier.set("owner.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 if (managerRight != null && !managerRight.trim().isEmpty()) {
                                removeObjects(collection);
                            }
                        }
                    });
        }
    });
}

From source file:org.entcore.common.service.impl.MongoDbRepositoryEvents.java

License:Open Source License

protected void removeObjects(final String collection) {
    JsonObject matcher = MongoQueryBuilder
            .build(QueryBuilder.start("shared." + managerRight).notEquals(true).put("owner.deleted").is(true));

    JsonObject projection = new JsonObject().put("_id", 1);

    // Get ids of objects who have no manager and no owner (owner has just been deleted, or has been deleted previously)
    mongo.find(collection, matcher, null, projection, new Handler<Message<JsonObject>>() {
        @Override/*w  ww  .j a v  a2  s . c o m*/
        public void handle(Message<JsonObject> event) {
            JsonArray res = event.body().getJsonArray("results");
            if (!"ok".equals(event.body().getString("status"))) {
                log.error("Error when finding objects who have no manager and no owner : "
                        + event.body().getString("message"));
            } else if (res == null || res.size() == 0) {
                log.info("There are no objects without manager and without owner : no objects to delete");
            } else {
                final String[] objectIds = new String[res.size()];
                for (int i = 0; i < res.size(); i++) {
                    JsonObject j = res.getJsonObject(i);
                    objectIds[i] = j.getString("_id");
                }
                JsonObject matcher = MongoQueryBuilder.build(QueryBuilder.start("_id").in(objectIds));
                mongo.delete(collection, matcher, new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> event) {
                        if (!"ok".equals(event.body().getString("status"))) {
                            log.error("Error deleting objects in collection " + collection + " : "
                                    + event.body().getString("message"));
                        } else if (revisionsCollection != null && !revisionsCollection.trim().isEmpty()
                                && revisionIdAttribute != null && !revisionIdAttribute.trim().isEmpty()) {
                            JsonObject criteria = MongoQueryBuilder
                                    .build(QueryBuilder.start(revisionIdAttribute).in(objectIds));
                            mongo.delete(revisionsCollection, criteria, new Handler<Message<JsonObject>>() {
                                @Override
                                public void handle(Message<JsonObject> event) {
                                    if (!"ok".equals(event.body().getString("status"))) {
                                        log.error("Error deleting revisions objects in collection "
                                                + revisionsCollection + " : "
                                                + event.body().getString("message"));
                                    }
                                }
                            });
                        }
                    }
                });
            }
        }
    });
}

From source file:org.entcore.common.share.impl.GenericShareService.java

License:Open Source License

protected void profilGroupIsVisible(String userId, final String groupId, final Handler<Boolean> handler) {
    if (userId == null || groupId == null) {
        handler.handle(false);/*  ww w.j a  va  2s.  c om*/
        return;
    }
    findVisibleProfilsGroups(eb, userId, new Handler<JsonArray>() {
        @Override
        public void handle(JsonArray visibleGroups) {
            final List<String> visibleGroupsIds = new ArrayList<>();
            for (int i = 0; i < visibleGroups.size(); i++) {
                JsonObject j = visibleGroups.getJsonObject(i);
                if (j != null && j.getString("id") != null) {
                    visibleGroupsIds.add(j.getString("id"));
                }
            }
            handler.handle(visibleGroupsIds.contains(groupId));
        }
    });
}

From source file:org.entcore.common.share.impl.GenericShareService.java

License:Open Source License

protected void userIsVisible(String userId, final String userShareId, final Handler<Boolean> handler) {
    if (userId == null || userShareId == null) {
        handler.handle(false);//  ww  w  . j a v a2 s . com
        return;
    }
    findVisibleUsers(eb, userId, false, new Handler<JsonArray>() {
        @Override
        public void handle(JsonArray visibleUsers) {
            final List<String> visibleUsersIds = new ArrayList<>();
            for (int i = 0; i < visibleUsers.size(); i++) {
                JsonObject j = visibleUsers.getJsonObject(i);
                if (j != null && j.getString("id") != null) {
                    visibleUsersIds.add(j.getString("id"));
                }
            }
            handler.handle(visibleUsersIds.contains(userShareId));
        }
    });
}

From source file:org.entcore.common.share.impl.GenericShareService.java

License:Open Source License

protected void shareValidation(String resourceId, String userId, JsonObject share,
        Handler<Either<String, JsonObject>> handler) {
    final JsonObject groups = share.getJsonObject("groups");
    final JsonObject users = share.getJsonObject("users");
    final JsonObject shareBookmark = share.getJsonObject("bookmarks");
    final HashMap<String, Set<String>> membersActions = new HashMap<>();

    if (groups != null && groups.size() > 0) {
        for (String attr : groups.fieldNames()) {
            JsonArray actions = groups.getJsonArray(attr);
            if (actionsExists(actions.getList())) {
                membersActions.put(attr, new HashSet<>(actions.getList()));
            }//ww w.j a  v a  2  s  .  c  o  m
        }
    }
    if (users != null && users.size() > 0) {
        for (String attr : users.fieldNames()) {
            JsonArray actions = users.getJsonArray(attr);
            if (actionsExists(actions.getList())) {
                membersActions.put(attr, new HashSet<>(actions.getList()));
            }
        }
    }
    if (shareBookmark != null && shareBookmark.size() > 0) {
        final JsonObject p = new JsonObject().put("userId", userId);
        StatementsBuilder statements = new StatementsBuilder();
        for (String sbId : shareBookmark.fieldNames()) {
            final String csbId = cleanId(sbId);
            final String query = "MATCH (:User {id:{userId}})-[:HAS_SB]->(sb:ShareBookmark) "
                    + "RETURN DISTINCT '" + csbId + "' as id, TAIL(sb." + csbId + ") as members ";
            statements.add(query, p);
        }
        Neo4j.getInstance().executeTransaction(statements.build(), null, true,
                Neo4jResult.validResultsHandler(sbRes -> {
                    if (sbRes.isRight()) {
                        JsonArray a = sbRes.right().getValue();
                        for (Object o : a) {
                            JsonObject r = ((JsonArray) o).getJsonObject(0);
                            JsonArray actions = shareBookmark.getJsonArray(r.getString("id"));
                            JsonArray mIds = r.getJsonArray("members");
                            if (actions != null && mIds != null && mIds.size() > 0
                                    && actionsExists(actions.getList())) {
                                for (Object mId : mIds) {
                                    Set<String> actionsShare = membersActions.get(mId.toString());
                                    if (actionsShare == null) {
                                        actionsShare = new HashSet<>(new HashSet<>(actions.getList()));
                                        membersActions.put(mId.toString(), actionsShare);
                                        //                        } else {
                                        //                           actionsShare.addAll(new HashSet<>(actions.getList()));
                                    }
                                }
                            }
                        }
                        shareValidationVisible(userId, resourceId, handler, membersActions,
                                shareBookmark.fieldNames());
                    } else {
                        handler.handle(new Either.Left<>(sbRes.left().getValue()));
                    }
                }));
    } else {
        shareValidationVisible(userId, resourceId, handler, membersActions, null);
    }
}

From source file:org.entcore.common.share.impl.GenericShareService.java

License:Open Source License

protected void getNotifyMembers(Handler<Either<String, JsonObject>> handler, JsonArray oldShared,
        JsonArray members, Function<Object, String> f) {
    JsonArray notifyMembers;/*from   ww  w .  jav a2 s. c  om*/
    if (oldShared != null && oldShared.size() > 0 && members != null && members.size() > 0) {
        final Set<String> oldMembersIds = oldShared.stream().map(f).collect(Collectors.toSet());
        notifyMembers = new JsonArray();
        for (Object o : members) {
            final JsonObject j = (JsonObject) o;
            final String memberId = getOrElse(j.getString("groupId"), j.getString("userId"));
            if (!oldMembersIds.contains(memberId)) {
                notifyMembers.add(j);
            }
        }
    } else {
        notifyMembers = members;
    }
    handler.handle(new Either.Right<>(new JsonObject().put("notify-timeline-array", notifyMembers)));
}