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

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

Introduction

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

Prototype

public JsonArray getJsonArray(String key) 

Source Link

Document

Get the JsonArray value with the specified key

Usage

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

License:Open Source License

protected JsonArray getResoureActions(Map<String, SecuredAction> securedActions) {
    if (resourceActions != null) {
        return resourceActions;
    }//from   ww  w.j a  v a 2s  .c om
    JsonObject resourceActions = new JsonObject();
    for (SecuredAction action : securedActions.values()) {
        if (ActionType.RESOURCE.name().equals(action.getType()) && !action.getDisplayName().isEmpty()) {
            JsonObject a = resourceActions.getJsonObject(action.getDisplayName());
            if (a == null) {
                a = new JsonObject()
                        .put("name",
                                new fr.wseduc.webutils.collections.JsonArray()
                                        .add(action.getName().replaceAll("\\.", "-")))
                        .put("displayName", action.getDisplayName()).put("type", action.getType());
                resourceActions.put(action.getDisplayName(), a);
            } else {
                a.getJsonArray("name").add(action.getName().replaceAll("\\.", "-"));
            }
        }
    }
    this.resourceActions = new fr.wseduc.webutils.collections.JsonArray(
            new ArrayList<>(resourceActions.getMap().values()));
    return this.resourceActions;
}

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()));
            }/*from w  ww  .  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.SqlShareService.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;/*  w w  w . j  a v  a  2 s.  c  o  m*/
    }
    if (resourceId == null || resourceId.trim().isEmpty()) {
        handler.handle(new Either.Left<String, JsonObject>("Invalid resourceId."));
        return;
    }
    final JsonArray actions = getResoureActions(securedActions);
    String query = "SELECT s.member_id, s.action, m.group_id FROM " + shareTable + " AS s " + "JOIN " + schema
            + "members AS m ON s.member_id = m.id WHERE resource_id = ?";
    sql.prepared(query, new fr.wseduc.webutils.collections.JsonArray().add(Sql.parseId(resourceId)),
            new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> message) {
                    if ("ok".equals(message.body().getString("status"))) {
                        JsonArray r = message.body().getJsonArray("results");
                        JsonObject groupCheckedActions = new JsonObject();
                        JsonObject userCheckedActions = new JsonObject();
                        for (Object o : r) {
                            if (!(o instanceof JsonArray))
                                continue;
                            JsonArray row = (JsonArray) o;
                            final String memberId = row.getString(0);
                            if (memberId == null || memberId.equals(userId))
                                continue;
                            final JsonObject checkedActions = (row.getValue(2) != null) ? groupCheckedActions
                                    : userCheckedActions;
                            JsonArray m = checkedActions.getJsonArray(memberId);
                            if (m == null) {
                                m = new fr.wseduc.webutils.collections.JsonArray();
                                checkedActions.put(memberId, m);
                            }
                            m.add(row.getValue(1));
                        }
                        getShareInfos(userId, actions, groupCheckedActions, userCheckedActions, 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."));
                                        }
                                    }
                                });
                    }
                }
            });
}

From source file:org.entcore.common.sql.SqlResult.java

License:Open Source License

private static JsonArray transform(JsonObject body) {
    JsonArray f = body.getJsonArray("fields");
    JsonArray r = body.getJsonArray("results");
    JsonArray result = new fr.wseduc.webutils.collections.JsonArray();
    if (f != null && r != null) {
        JsonArray jsonbAttributes = body.getJsonArray("jsonb_fields");
        List ja = (jsonbAttributes != null) ? jsonbAttributes.getList() : new ArrayList<>();
        for (Object o : r) {
            if (!(o instanceof JsonArray))
                continue;
            JsonArray a = (JsonArray) o;
            JsonObject j = new fr.wseduc.webutils.collections.JsonObject();
            for (int i = 0; i < f.size(); i++) {
                Object item = a.getValue(i);
                if (item instanceof Boolean) {
                    j.put(f.getString(i), (Boolean) item);
                } else if (item instanceof Number) {
                    j.put(f.getString(i), (Number) item);
                } else if (item instanceof JsonArray) {
                    j.put(f.getString(i), (JsonArray) item);
                } else if (item != null && ja.contains(f.getValue(i))) {
                    String stringRepresentation = item.toString().trim();
                    if (stringRepresentation.startsWith("[")) {
                        j.put(f.getString(i), new fr.wseduc.webutils.collections.JsonArray(item.toString()));
                    } else {
                        j.put(f.getString(i), new fr.wseduc.webutils.collections.JsonObject(item.toString()));
                    }//from  w  ww  . j  a  v a2  s .  c om
                } else if (item != null) {
                    j.put(f.getString(i), item.toString());
                } else {
                    j.put(f.getString(i), (String) null);
                }
            }
            result.add(j);
        }
    }
    return result;
}

From source file:org.entcore.communication.controllers.CommunicationController.java

License:Open Source License

@Post("/visible")
@SecuredAction(value = "", type = ActionType.AUTHENTICATED)
public void searchVisible(HttpServerRequest request) {
    RequestUtils.bodyToJson(request, filter -> UserUtils.getUserInfos(eb, request, user -> {
        if (user != null) {
            String preFilter = "";
            String match = "";
            String where = "";
            String nbUsers = "";
            String groupTypes = "";
            JsonObject params = new JsonObject();
            JsonArray expectedTypes = null;
            if (filter != null && filter.size() > 0) {
                for (String criteria : filter.fieldNames()) {
                    switch (criteria) {
                    case "structures":
                    case "classes":
                        JsonArray itemssc = filter.getJsonArray(criteria);
                        if (itemssc == null || itemssc.isEmpty()
                                || ("structures".equals(criteria) && filter.getJsonArray("classes") != null
                                        && !filter.getJsonArray("classes").isEmpty()))
                            continue;
                        if (!params.containsKey("nIds")) {
                            params.put("nIds", itemssc);
                        } else {
                            params.getJsonArray("nIds").addAll(itemssc);
                        }/*from   w  w w  .j  a v a 2 s . c o  m*/
                        if (!match.contains("-[:DEPENDS")) {
                            if (!match.contains("MATCH ")) {
                                match = "MATCH ";
                                where = " WHERE ";
                            } else {
                                match += ", ";
                                where += "AND ";
                            }
                            match += "(visibles)-[:IN*0..1]->()-[:DEPENDS]->(n) ";
                            where += "n.id IN {nIds} ";
                        }
                        if ("structures".equals(criteria)) {
                            match = match.replaceFirst("\\[:DEPENDS]", "[:DEPENDS*1..2]");
                        }
                        break;
                    case "profiles":
                    case "functions":
                        JsonArray itemspf = filter.getJsonArray(criteria);
                        if (itemspf == null || itemspf.isEmpty())
                            continue;
                        if (!params.containsKey("filters")) {
                            params.put("filters", itemspf);
                        } else {
                            //params.getJsonArray("filters").addAll(itemspf);
                            params.put("filters2", itemspf);
                        }
                        if (!match.contains("MATCH ")) {
                            match = "MATCH ";
                            where = " WHERE ";
                        } else {
                            match += ", ";
                            where += "AND ";
                        }
                        if (!match.contains("(visibles)-[:IN*0..1]->(g)")) {
                            match += "(visibles)-[:IN*0..1]->(g)";
                            where += "g.filter IN {filters} ";
                        } else {
                            match += "(visibles)-[:IN*0..1]->(g2) ";
                            where += "g2.filter IN {filters2} ";
                        }
                        break;
                    case "search":
                        final String search = filter.getString(criteria);
                        if (isNotEmpty(search)) {
                            preFilter = "AND m.displayNameSearchField CONTAINS {search} ";
                            String sanitizedSearch = StringValidation.sanitize(search);
                            params.put("search", sanitizedSearch);
                        }
                        break;
                    case "types":
                        JsonArray types = filter.getJsonArray(criteria);
                        if (types != null && types.size() > 0
                                && CommunicationService.EXPECTED_TYPES.containsAll(types.getList())) {
                            expectedTypes = types;
                        }
                        break;
                    case "nbUsersInGroups":
                        if (filter.getBoolean("nbUsersInGroups", false)) {
                            nbUsers = ", visibles.nbUsers as nbUsers";
                        }
                        break;
                    case "groupType":
                        if (filter.getBoolean("groupType", false)) {
                            groupTypes = ", labels(visibles) as groupType, visibles.filter as groupProfile";
                        }
                        break;
                    }
                }
            }
            final boolean returnGroupType = !groupTypes.isEmpty();
            final String customReturn = match + where
                    + "RETURN DISTINCT visibles.id as id, visibles.name as name, "
                    + "visibles.displayName as displayName, visibles.groupDisplayName as groupDisplayName, "
                    + "HEAD(visibles.profiles) as profile" + nbUsers + groupTypes;
            communicationService.visibleUsers(user.getUserId(), null, expectedTypes, true, true, false,
                    preFilter, customReturn, params, user.getType(), visibles -> {
                        if (visibles.isRight()) {
                            renderJson(request, UserUtils.translateAndGroupVisible(visibles.right().getValue(),
                                    I18n.acceptLanguage(request), returnGroupType));
                        } else {
                            leftToResponse(request, visibles.left());
                        }
                    });
        } else {
            badRequest(request, "invalid.user");
        }
    }));
}

From source file:org.entcore.communication.controllers.CommunicationController.java

License:Open Source License

@Put("/init/rules")
@SecuredAction("communication.init.default.rules")
public void initDefaultCommunicationRules(final HttpServerRequest request) {
    RequestUtils.bodyToJson(request, new Handler<JsonObject>() {
        @Override/*from   w  ww .  j  a va2s  .  c o  m*/
        public void handle(JsonObject body) {
            JsonObject initDefaultRules = config.getJsonObject("initDefaultCommunicationRules");
            JsonArray structures = body.getJsonArray("structures");
            if (structures != null && structures.size() > 0) {
                communicationService.initDefaultRules(structures, initDefaultRules,
                        defaultResponseHandler(request));
            } else {
                badRequest(request, "invalid.structures");
            }
        }
    });
}

From source file:org.entcore.conversation.controllers.ConversationController.java

License:Open Source License

private void timelineNotification(HttpServerRequest request, JsonObject sentMessage, UserInfos user) {
    log.debug(sentMessage.encode());/*from  ww  w  . j  a  v a 2  s  .c  om*/
    JsonArray r = sentMessage.getJsonArray("sentIds");
    String id = sentMessage.getString("id");
    String subject = sentMessage.getString("subject", "<span translate key=\"timeline.no.subject\"></span>");
    sentMessage.remove("sentIds");
    sentMessage.remove("id");
    sentMessage.remove("subject");
    if (r == null || id == null || user == null) {
        return;
    }
    final JsonObject params = new JsonObject()
            .put("uri", "/userbook/annuaire#" + user.getUserId() + "#" + user.getType())
            .put("username", user.getUsername()).put("subject", subject)
            .put("messageUri", pathPrefix + "/conversation#/read-mail/" + id);
    params.put("resourceUri", params.getString("messageUri"));
    params.put("pushNotif", new JsonObject().put("title", "push.notif.new.message").put("body",
            user.getUsername() + " : " + sentMessage.getString("body")));
    List<String> recipients = new ArrayList<>();
    String idTmp;
    for (Object o : r) {
        if (!(o instanceof String))
            continue;
        idTmp = (String) o;
        if (!user.getUserId().equals(idTmp))
            recipients.add(idTmp);
    }
    notification.notifyTimeline(request, "messagerie.send-message", user, recipients, id, params);
}

From source file:org.entcore.conversation.controllers.ConversationController.java

License:Open Source License

private void translateGroupsNames(JsonObject message, HttpServerRequest request) {
    JsonArray d3 = new fr.wseduc.webutils.collections.JsonArray();
    for (Object o2 : getOrElse(message.getJsonArray("displayNames"),
            new fr.wseduc.webutils.collections.JsonArray())) {
        if (!(o2 instanceof String)) {
            continue;
        }//www.j  a  v  a 2s  .c o m
        String[] a = ((String) o2).split("\\$");
        if (a.length != 4) {
            continue;
        }
        JsonArray d2 = new fr.wseduc.webutils.collections.JsonArray().add(a[0]);
        if (a[2] != null && !a[2].trim().isEmpty()) {
            final String groupDisplayName = (a[3] != null && !a[3].trim().isEmpty()) ? a[3] : null;
            d2.add(UserUtils.groupDisplayName(a[2], groupDisplayName, I18n.acceptLanguage(request)));
        } else {
            d2.add(a[1]);
        }
        d3.add(d2);
    }
    message.put("displayNames", d3);
    JsonArray toName = message.getJsonArray("toName");
    if (toName != null) {
        JsonArray d2 = new fr.wseduc.webutils.collections.JsonArray();
        message.put("toName", d2);
        for (Object o : toName) {
            if (!(o instanceof String)) {
                continue;
            }
            d2.add(UserUtils.groupDisplayName((String) o, null, I18n.acceptLanguage(request)));
        }
    }
    JsonArray ccName = message.getJsonArray("ccName");
    if (ccName != null) {
        JsonArray d2 = new fr.wseduc.webutils.collections.JsonArray();
        message.put("ccName", d2);
        for (Object o : ccName) {
            if (!(o instanceof String)) {
                continue;
            }
            d2.add(UserUtils.groupDisplayName((String) o, null, I18n.acceptLanguage(request)));
        }
    }
}

From source file:org.entcore.conversation.controllers.ConversationController.java

License:Open Source License

@Put("trash")
@SecuredAction(value = "", type = ActionType.RESOURCE)
@ResourceFilter(MultipleMessageUserFilter.class)
public void trash(final HttpServerRequest request) {

    bodyToJson(request, new Handler<JsonObject>() {
        @Override//from  w w  w  .  j a va  2s.  co m
        public void handle(JsonObject body) {
            JsonArray ids = body.getJsonArray("id");
            if (ids == null || ids.isEmpty()) {
                badRequest(request);
                return;
            }

            getUserInfos(eb, request, new Handler<UserInfos>() {
                @Override
                public void handle(final UserInfos user) {
                    if (user != null) {
                        conversationService.trash(ids.getList(), user, defaultResponseHandler(request));
                    } else {
                        unauthorized(request);
                    }
                }
            });
        }
    });
}

From source file:org.entcore.conversation.controllers.ConversationController.java

License:Open Source License

@Put("restore")
@SecuredAction(value = "", type = ActionType.RESOURCE)
@ResourceFilter(MultipleMessageUserFilter.class)
public void restore(final HttpServerRequest request) {

    bodyToJson(request, new Handler<JsonObject>() {
        @Override// w  w  w.  j  a v a 2s.c  o  m
        public void handle(JsonObject body) {
            JsonArray ids = body.getJsonArray("id");
            if (ids == null || ids.isEmpty()) {
                badRequest(request);
                return;
            }

            getUserInfos(eb, request, new Handler<UserInfos>() {
                @Override
                public void handle(final UserInfos user) {
                    if (user != null) {
                        conversationService.restore(ids.getList(), user, defaultResponseHandler(request));
                    } else {
                        unauthorized(request);
                    }
                }
            });
        }
    });
}