Example usage for io.vertx.core.json JsonObject getString

List of usage examples for io.vertx.core.json JsonObject getString

Introduction

In this page you can find the example usage for io.vertx.core.json JsonObject getString.

Prototype

public String getString(String key) 

Source Link

Document

Get the string value with the specified key, special cases are addressed for extended JSON types Instant , byte[] and Enum which can be converted to String.

Usage

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;/*from  w  w w  . ja v  a2  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/*www .j a va  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);//w ww.ja  v a 2  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);//from  w w w  . ja v  a 2s  .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.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()));
            }/*  w w w  .j a  v a2 s .  co  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

private void shareValidationVisible(String userId, String resourceId,
        Handler<Either<String, JsonObject>> handler, HashMap<String, Set<String>> membersActions,
        Set<String> shareBookmarkIds) {
    //      final String preFilter = "AND m.id IN {members} ";
    final Set<String> members = membersActions.keySet();
    final JsonObject params = new JsonObject().put("members", new JsonArray(new ArrayList<>(members)));
    //      final String customReturn = "RETURN DISTINCT visibles.id as id, has(visibles.login) as isUser";
    //      UserUtils.findVisibles(eb, userId, customReturn, params, true, true, false, null, preFilter, res -> {
    checkMembers(params, res -> {//from w w  w.jav  a 2s.c o m
        if (res != null) {
            final JsonArray users = new JsonArray();
            final JsonArray groups = new JsonArray();
            final JsonArray shared = new JsonArray();
            final JsonArray notifyMembers = new JsonArray();
            for (Object o : res) {
                JsonObject j = (JsonObject) o;
                final String attr = j.getString("id");
                if (Boolean.TRUE.equals(j.getBoolean("isUser"))) {
                    users.add(attr);
                    notifyMembers.add(new JsonObject().put("userId", attr));
                    prepareSharedArray(resourceId, "userId", shared, attr, membersActions.get(attr));
                } else {
                    groups.add(attr);
                    notifyMembers.add(new JsonObject().put("groupId", attr));
                    prepareSharedArray(resourceId, "groupId", shared, attr, membersActions.get(attr));
                }
            }
            handler.handle(new Either.Right<>(params.put("shared", shared).put("groups", groups)
                    .put("users", users).put("notify-members", notifyMembers)));
            if (shareBookmarkIds != null && res.size() < members.size()) {
                members.removeAll(groups.getList());
                members.removeAll(users.getList());
                resyncShareBookmark(userId, members, shareBookmarkIds);
            }
        } else {
            handler.handle(new Either.Left<>("Invalid members count."));
        }
    });
}

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 www. j  a  v  a 2 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)));
}

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

License:Open Source License

@Override
public void shareInfos(final String userId, String resourceId, final String acceptLanguage, final String search,
        final Handler<Either<String, JsonObject>> handler) {
    if (userId == null || userId.trim().isEmpty()) {
        handler.handle(new Either.Left<String, JsonObject>("Invalid userId."));
        return;//from   w w w .  ja va  2 s .com
    }
    if (resourceId == null || resourceId.trim().isEmpty()) {
        handler.handle(new Either.Left<String, JsonObject>("Invalid resourceId."));
        return;
    }
    final JsonArray actions = getResoureActions(securedActions);
    QueryBuilder query = QueryBuilder.start("_id").is(resourceId);
    JsonObject keys = new JsonObject().put("shared", 1);
    mongo.findOne(collection, MongoQueryBuilder.build(query), keys, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> event) {
            if ("ok".equals(event.body().getString("status"))) {
                JsonArray shared = event.body().getJsonObject("result", new JsonObject()).getJsonArray("shared",
                        new fr.wseduc.webutils.collections.JsonArray());
                JsonObject gs = new JsonObject();
                JsonObject us = new JsonObject();
                for (Object o : shared) {
                    if (!(o instanceof JsonObject))
                        continue;
                    JsonObject userShared = (JsonObject) o;
                    JsonArray a = new fr.wseduc.webutils.collections.JsonArray();
                    for (String attrName : userShared.fieldNames()) {
                        if ("userId".equals(attrName) || "groupId".equals(attrName)) {
                            continue;
                        }
                        if (groupedActions != null && groupedActions.containsKey(attrName)) {
                            for (String action : groupedActions.get(attrName)) {
                                a.add(action.replaceAll("\\.", "-"));
                            }
                        } else {
                            a.add(attrName);
                        }
                    }
                    final String g = userShared.getString("groupId");
                    String u;
                    if (g != null) {
                        gs.put(g, a);
                    } else if ((u = userShared.getString("userId")) != null && !u.equals(userId)) {
                        us.put(u, a);
                    }
                }
                getShareInfos(userId, actions, gs, us, acceptLanguage, search, new Handler<JsonObject>() {
                    @Override
                    public void handle(JsonObject event) {
                        if (event != null && event.size() == 3) {
                            handler.handle(new Either.Right<String, JsonObject>(event));
                        } else {
                            handler.handle(
                                    new Either.Left<String, JsonObject>("Error finding shared resource."));
                        }
                    }
                });
            } else {
                handler.handle(new Either.Left<String, JsonObject>(
                        event.body().getString("error", "Error finding shared resource.")));
            }
        }
    });
}

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

License:Open Source License

private void inShare(String resourceId, String shareId, boolean group, final Handler<Boolean> handler) {
    QueryBuilder query = QueryBuilder.start("_id").is(resourceId).put("shared")
            .elemMatch(QueryBuilder.start(group ? "groupId" : "userId").is(shareId).get());
    mongo.count(collection, MongoQueryBuilder.build(query), new Handler<Message<JsonObject>>() {
        @Override// w  w  w.  ja va  2 s.co  m
        public void handle(Message<JsonObject> event) {
            JsonObject res = event.body();
            handler.handle(res != null && "ok".equals(res.getString("status")) && 1 == res.getInteger("count"));
        }
    });
}

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//w  ww.  j a  v a2s.  com
        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."));
            }
        }
    });
}