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

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

Introduction

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

Prototype

public JsonArray add(Object value) 

Source Link

Document

Add an Object to the JSON array.

Usage

From source file:org.entcore.common.notification.TimelineHelper.java

License:Open Source License

/**
 * @deprecated// w w  w . j av  a 2 s  .c  o  m
 * Notification system was refactored in version 1.16.1
 */
@Deprecated
public void notifyTimeline(HttpServerRequest request, UserInfos sender, String type, final String eventType,
        List<String> recipients, String resource, String subResource, String template, JsonObject params) {
    JsonArray r = new fr.wseduc.webutils.collections.JsonArray();
    for (String userId : recipients) {
        r.add(new JsonObject().put("userId", userId).put("unread", 1));
    }
    final JsonObject event = new JsonObject().put("action", "add").put("type", type)
            .put("event-type", eventType).put("recipients", r);
    if (resource != null) {
        event.put("resource", resource);
    }
    if (sender != null) {
        event.put("sender", sender.getUserId());
    }
    if (subResource != null && !subResource.trim().isEmpty()) {
        event.put("sub-resource", subResource);
    }
    Long date = params.getLong("timeline-publish-date");
    if (date != null) {
        event.put("date", new JsonObject().put("$date", date));
        params.remove("timeline-publish-date");
    }
    render.processTemplate(request, template, params, new Handler<String>() {
        @Override
        public void handle(String message) {
            if (message != null) {
                event.put("message", message);
                eb.send(TIMELINE_ADDRESS, event);
            } else {
                log.error("Unable to send timeline " + eventType + " notification.");
            }
        }
    });
}

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

License:Open Source License

@Override
public void update(String id, JsonObject data, UserInfos user, Handler<Either<String, JsonObject>> handler) {
    StringBuilder sb = new StringBuilder();
    JsonArray values = new fr.wseduc.webutils.collections.JsonArray();
    for (String attr : data.fieldNames()) {
        sb.append(attr).append(" = ?, ");
        values.add(data.getValue(attr));
    }//  w w w  .  ja  va2s. com
    String query = "UPDATE " + resourceTable + " SET " + sb.toString() + "modified = NOW() " + "WHERE id = ? ";
    sql.prepared(query, values.add(parseId(id)), validRowsResultHandler(handler));
}

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

License:Open Source License

@Override
public void list(VisibilityFilter filter, UserInfos user, Handler<Either<String, JsonArray>> handler) {
    String query;//from  www.  j a va2s  . co  m
    JsonArray values = new fr.wseduc.webutils.collections.JsonArray();
    if (user != null) {
        List<String> gu = new ArrayList<>();
        gu.add(user.getUserId());
        if (user.getGroupsIds() != null) {
            gu.addAll(user.getGroupsIds());
        }
        final Object[] groupsAndUserIds = gu.toArray();
        switch (filter) {
        case OWNER:
            query = "SELECT " + expectedListValues() + " FROM " + resourceTable + " WHERE owner = ?";
            values.add(user.getUserId());
            break;
        case OWNER_AND_SHARED:
            query = "SELECT DISTINCT " + expectedListValues() + " FROM " + resourceTable + " LEFT JOIN "
                    + shareTable + " ON id = resource_id " + "WHERE member_id IN "
                    + Sql.listPrepared(groupsAndUserIds) + " OR owner = ?";
            values = new fr.wseduc.webutils.collections.JsonArray(gu).add(user.getUserId());
            break;
        case SHARED:
            query = "SELECT DISTINCT " + expectedListValues() + " FROM " + resourceTable + " INNER JOIN "
                    + shareTable + " ON id = resource_id " + "WHERE member_id IN "
                    + Sql.listPrepared(groupsAndUserIds);
            values = new fr.wseduc.webutils.collections.JsonArray(gu);
            break;
        case PROTECTED:
            query = "SELECT " + expectedListValues() + " FROM " + resourceTable + " WHERE visibility = ?";
            values.add(VisibilityFilter.PROTECTED.name());
            break;
        case PUBLIC:
            query = "SELECT " + expectedListValues() + " FROM " + resourceTable + " WHERE visibility = ?";
            values.add(VisibilityFilter.PUBLIC.name());
            break;
        default:
            query = "SELECT " + expectedListValues() + ", json_agg(row_to_json(row(member_id,action)::" + schema
                    + "share_tuple)) as shared, " + "array_to_json(array_agg(group_id)) as groups FROM "
                    + resourceTable + " LEFT JOIN " + shareTable + " ON " + resourceTable + ".id = resource_id"
                    + " LEFT JOIN " + schema + "members ON (member_id = " + schema
                    + "members.id AND group_id IS NOT NULL) " + "WHERE member_id IN "
                    + Sql.listPrepared(groupsAndUserIds) + " OR owner = ? OR visibility IN (?,?) "
                    + " GROUP BY " + resourceTable + ".id";
            values = new fr.wseduc.webutils.collections.JsonArray(gu).add(user.getUserId())
                    .add(VisibilityFilter.PROTECTED.name()).add(VisibilityFilter.PUBLIC.name());
            break;
        }
    } else {
        query = "SELECT " + expectedListValues() + " FROM " + resourceTable + " WHERE visibility = ?";
        values.add(VisibilityFilter.PUBLIC.name());
    }
    query += " ORDER BY modified DESC";
    Handler<Message<JsonObject>> h = (VisibilityFilter.ALL.equals(filter)) ? parseShared(handler)
            : validResultHandler(handler);
    sql.prepared(query, values, h);
}

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

License:Open Source License

@Override
public void search(String userId, List<String> groupIds, List<String> returnFields, List<String> searchWords,
        Integer page, Integer limit, Handler<Either<String, JsonArray>> handler) {
    final int offset = page * limit;

    final String fields = displayNameField + ", " + resourceTable + "."
            + Joiner.on(", " + resourceTable + ".").join(returnFields);
    final List<String> gu = new ArrayList<String>();
    gu.add(userId);//  ww w  . j a  v a 2 s . c o m
    if (groupIds != null) {
        gu.addAll(groupIds);
    }
    final Object[] groupsAndUserIds = gu.toArray();

    final String rightsWhere = "member_id IN " + Sql.listPrepared(groupsAndUserIds) + " OR owner = ?"
            + (checkVisibility ? " OR visibility IN (?,?)" : "");

    final String query = "SELECT " + fields + " FROM " + resourceTable + " LEFT JOIN " + shareTable + " ON "
            + resourceTable + ".id = resource_id" + " LEFT JOIN " + userTable + " ON " + resourceTable
            + ".owner = " + userTable + ".id" + " LEFT JOIN " + schema + "members ON (member_id = " + schema
            + "members.id AND group_id IS NOT NULL) " + "WHERE (" + rightsWhere + ")  AND ("
            + searchWherePrepared() + ")" + " GROUP BY " + resourceTable + ".id, " + displayNameField
            + " ORDER BY modified DESC " + " LIMIT ? OFFSET ?";
    final JsonArray values = new fr.wseduc.webutils.collections.JsonArray(gu).add(userId);
    if (checkVisibility) {
        values.add(VisibilityFilter.PROTECTED.name()).add(VisibilityFilter.PUBLIC.name());
    }

    final String textSearchedValue = textSearchedComposition(searchWords);
    for (int i = 0; i < this.searchFields.size(); i++) {
        values.add(textSearchedValue);
    }

    values.add(limit).add(offset);
    sql.prepared(query, values, validResultHandler(handler));
}

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 -> {/* w  w  w  .ja va 2 s.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;
    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);
            }//ww  w  .  j  av  a2s.  co m
        }
    } 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  www  . jav  a2  s .co m*/
    }
    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 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/*from  w  ww .j av a  2s.  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."));
            }
        }
    });
}

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

License:Open Source License

private void removeShare(String resourceId, final String shareId, List<String> removeActions, boolean isGroup,
        final Handler<Either<String, JsonObject>> handler) {
    final String shareIdAttr = isGroup ? "groupId" : "userId";
    final List<String> actions = findRemoveActions(removeActions);
    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  . j  ava2  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());
                JsonArray shared = new fr.wseduc.webutils.collections.JsonArray();
                for (int i = 0; i < actual.size(); i++) {
                    JsonObject s = actual.getJsonObject(i);
                    String id = s.getString(shareIdAttr);
                    if (shareId.equals(id)) {
                        if (actions != null) {
                            for (String action : actions) {
                                s.remove(action);
                            }
                            if (s.size() > 1) {
                                shared.add(s);
                            }
                        }
                    } else {
                        shared.add(s);
                    }
                }
                MongoUpdateBuilder updateQuery = new MongoUpdateBuilder().set("shared", shared);
                mongo.update(collection, q, updateQuery.build(), new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> res) {
                        handler.handle(Utils.validResult(res));
                    }
                });
            } else {
                handler.handle(new Either.Left<String, JsonObject>("Resource not found."));
            }
        }
    });
}

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

License:Open Source License

@Override
protected void prepareSharedArray(String resourceId, String type, JsonArray shared, String attr,
        Set<String> actions) {
    JsonObject el = new JsonObject().put(type, attr);
    for (String action : actions) {
        el.put(action, true);/*from  w  w  w.j  a v a2s. c om*/
    }
    shared.add(el);
}