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.common.http.filter.VisibleFilter.java

License:Open Source License

@Override
public void authorize(HttpServerRequest request, Binding binding, UserInfos user, Handler<Boolean> handler) {
    final String userId = request.params().get("userId");
    if (userId == null || userId.trim().isEmpty()) {
        handler.handle(false);//  w ww  .j a va  2  s.  c o  m
        return;
    }
    neo4j.execute(query, new JsonObject().put("queryUserId", user.getUserId()).put("userId", userId), event -> {
        final JsonArray res = event.body().getJsonArray("result");
        handler.handle("ok".equals(event.body().getString("status")) && res != null && res.size() == 1
                && res.getJsonObject(0).getBoolean("exists", false));
    });
}

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

License:Open Source License

public static Either<String, JsonObject> validUniqueResult(Message<JsonObject> res) {
    Either<String, JsonArray> r = validResult(res);
    if (r.isRight()) {
        JsonArray results = r.right().getValue();
        if (results == null || results.size() == 0) {
            return new Either.Right<>(new JsonObject());
        }/*  w  ww .  j  a v a2  s  .  c  o m*/
        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.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 {/*from   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.j  a  va  2 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.service.impl.MongoDbRepositoryEvents.java

License:Open Source License

@Override
public void deleteGroups(JsonArray groups) {
    if (groups == null || groups.size() == 0) {
        return;//from   www . j  ava 2  s.c om
    }

    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;/* w w w .  ja va  2  s .  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//from www.j a v  a 2s  .  co  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  ava2 s . 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);/* w w  w .  j  a v  a 2  s .c om*/
        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.MongoDbShareService.java

License:Open Source License

private void share(String resourceId, final String groupShareId, final List<String> actions, boolean isGroup,
        final Handler<Either<String, JsonObject>> handler) {
    final String shareIdAttr = isGroup ? "groupId" : "userId";
    QueryBuilder query = QueryBuilder.start("_id").is(resourceId);
    JsonObject keys = new JsonObject().put("shared", 1);
    final JsonObject q = MongoQueryBuilder.build(query);
    mongo.findOne(collection, q, keys, new Handler<Message<JsonObject>>() {
        @Override/*  ww w . java  2 s  . c o  m*/
        public void handle(Message<JsonObject> event) {
            if ("ok".equals(event.body().getString("status")) && event.body().getJsonObject("result") != null) {
                JsonArray actual = event.body().getJsonObject("result").getJsonArray("shared",
                        new fr.wseduc.webutils.collections.JsonArray());
                boolean exist = false;
                for (int i = 0; i < actual.size(); i++) {
                    JsonObject s = actual.getJsonObject(i);
                    String id = s.getString(shareIdAttr);
                    if (groupShareId.equals(id)) {
                        for (String action : actions) {
                            s.put(action, true);
                        }
                        if (groupedActions != null) {
                            for (Map.Entry<String, List<String>> ga : groupedActions.entrySet()) {
                                if (actions.containsAll(ga.getValue())) {
                                    s.put(ga.getKey(), true);
                                }
                            }
                        }
                        exist = true;
                        break;
                    }
                }
                final AtomicBoolean notifyTimeline = new AtomicBoolean(false);
                if (!exist) {
                    JsonObject t = new JsonObject().put(shareIdAttr, groupShareId);
                    actual.add(t);
                    for (String action : actions) {
                        t.put(action, true);
                    }
                    if (groupedActions != null) {
                        for (Map.Entry<String, List<String>> ga : groupedActions.entrySet()) {
                            if (actions.containsAll(ga.getValue())) {
                                t.put(ga.getKey(), true);
                            }
                        }
                    }
                    notifyTimeline.set(true);
                }
                MongoUpdateBuilder updateQuery = new MongoUpdateBuilder().set("shared", actual);
                mongo.update(collection, q, updateQuery.build(), new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> res) {
                        if (notifyTimeline.get()) {
                            JsonObject notify = new JsonObject();
                            notify.put(shareIdAttr, groupShareId);
                            res.body().put("notify-timeline", notify);
                        }
                        handler.handle(Utils.validResult(res));
                    }
                });
            } else {
                handler.handle(new Either.Left<String, JsonObject>("Resource not found."));
            }
        }
    });
}